package org.archstudio.xadl.swt; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.archstudio.resources.ArchStudioCommonResources; import org.archstudio.resources.IResources; import org.archstudio.xarchadt.IXArchADT; import org.archstudio.xarchadt.ObjRef; import org.eclipse.swt.graphics.Image; public class XadlTreeUtils { public enum Type { UNKNOWN("unknown"), DOCUMENTROOT("document root element"), XADLELEMENT("xADL element"), STRUCTURE("structure"), COMPONENT( "component"), COMPONENT_INTERFACE("component interface"), CONNECTOR("connector"), CONNECTOR_INTERFACE( "connector interface"); private String description; private Type(String description) { this.description = description; } public String getDescription() { return description; } } protected static Map<String, Type> pathToTypeMap = new HashMap<String, Type>(); static { pathToTypeMap.put("", Type.DOCUMENTROOT); pathToTypeMap.put("xADL", Type.XADLELEMENT); pathToTypeMap.put("xADL/structure", Type.STRUCTURE); pathToTypeMap.put("xADL/structure/component", Type.COMPONENT); pathToTypeMap.put("xADL/structure/component/interface", Type.COMPONENT_INTERFACE); pathToTypeMap.put("xADL/structure/connector", Type.CONNECTOR); pathToTypeMap.put("xADL/structure/connector/interface", Type.CONNECTOR_INTERFACE); } public static Type getType(IXArchADT xarch, ObjRef ref) { String pathString = xarch.getTagsOnlyPathString(ref); Type type = pathToTypeMap.get(pathString); return type == null ? Type.UNKNOWN : type; } public static Image getIconForType(IResources resources, Type type) { ArchStudioCommonResources.init(resources); switch (type) { case UNKNOWN: return null; case DOCUMENTROOT: return resources.getImage(ArchStudioCommonResources.ICON_XML_DOCUMENT); case XADLELEMENT: return resources.getImage(ArchStudioCommonResources.ICON_XML_DOCUMENT); case STRUCTURE: return resources.getImage(ArchStudioCommonResources.ICON_STRUCTURE); case COMPONENT: return resources.getImage(ArchStudioCommonResources.ICON_COMPONENT); case CONNECTOR: return resources.getImage(ArchStudioCommonResources.ICON_CONNECTOR); case COMPONENT_INTERFACE: case CONNECTOR_INTERFACE: return resources.getImage(ArchStudioCommonResources.ICON_INTERFACE); default: return null; } } public static List<String> typesToStrings(Set<Type> types) { List<String> stringList = new ArrayList<String>(); for (Type t : types) { stringList.add(t.getDescription()); } return stringList; } private XadlTreeUtils() { } }