package org.archstudio.archipelago2.core.outline; import java.util.List; import org.archstudio.archipelago2.AbstractArchipelago2LabelProvider; import org.archstudio.xarchadt.ObjRef; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; /** * Returns a default image and label for the paths passed to * {@link PathContentProvider#addPath(String)}. * * @author sahendrickson@gmail.com (Scott A. Hendrickson) */ public class PathLabelProvider extends AbstractArchipelago2LabelProvider { /** The PathContentProvider with path information for this label provider. */ private final PathContentProvider pathContentProvider; public PathLabelProvider(PathContentProvider pathContentProvider) { this.pathContentProvider = pathContentProvider; } @Override public Image getImage(Object element) { @SuppressWarnings("unchecked") List<Object> nodePath = (List<Object>) element; if (nodePath.size() >= 2) { ObjRef xAdlRef = (ObjRef) xarch.get(docRef, "xADL"); if (nodePath.get(1).equals(xAdlRef)) { if (pathContentProvider.paths.contains(nodePath.subList(2, nodePath.size()))) { return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER); } } } return null; } @Override public StyledString getStyledText(Object element) { @SuppressWarnings("unchecked") List<Object> nodePath = (List<Object>) element; if (nodePath.size() >= 2) { ObjRef xAdlRef = (ObjRef) xarch.get(docRef, "xADL"); if (nodePath.get(1).equals(xAdlRef)) { if (pathContentProvider.paths.contains(nodePath.subList(2, nodePath.size()))) { return new StyledString(nodePath.get(nodePath.size() - 1).toString()); } } } return null; } }