View Javadoc

1   /*
2    * @author Giorgos Anestis, TUC/MUSIC
3    * 
4    * @version 2.0
5    */
6   package org.dbe.studio.tools.ontologyviewer.views;
7   
8   import java.util.HashMap;
9   import java.util.Map;
10  import java.util.Vector;
11  
12  import org.dbe.studio.tools.ontologyviewer.OntologyViewerPlugin;
13  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmDataRange;
14  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmDataType;
15  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmDataValue;
16  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmDatatypeProperty;
17  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmEnumeration;
18  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmObjectProperty;
19  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmOntology;
20  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmOntologyClass;
21  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmProperty;
22  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmRestrictionClass;
23  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmSimpleNamedClassInst;
24  import org.dbe.studio.tools.ontologyviewer.metamodels.odm.OdmThingClass;
25  import org.dbe.studio.tools.ontologyviewer.utils.ClassInfo;
26  import org.dbe.studio.tools.ontologyviewer.utils.Constants;
27  import org.eclipse.jface.resource.ImageDescriptor;
28  import org.eclipse.jface.viewers.ILabelProvider;
29  import org.eclipse.jface.viewers.ILabelProviderListener;
30  import org.eclipse.swt.graphics.Image;
31  
32  /***
33   *
34   */
35  public class OntologyTreeLabelProvider implements ILabelProvider {
36  
37  	private Map imageCache = new HashMap(11);
38  	/***
39  	 * 
40  	 */
41  	public OntologyTreeLabelProvider() {
42  		super();
43  	}
44  
45  	/* (non-Javadoc)
46  	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
47  	 */
48  	public Image getImage(Object element) {
49  		
50  		ImageDescriptor descriptor = null;
51  	   
52  		if (element instanceof OdmThingClass) {			
53  			descriptor = OntologyViewerPlugin.getImageDescriptor("sme.gif");
54  		}
55  		else if (element instanceof OdmOntologyClass) {
56  			descriptor = OntologyViewerPlugin.getImageDescriptor("class.gif"); 					
57  		}
58  		else if (element instanceof OdmSimpleNamedClassInst ) {
59  			descriptor = OntologyViewerPlugin.getImageDescriptor("instance.gif");
60  		}
61  		else if (element instanceof OdmDatatypeProperty) {
62  			descriptor = OntologyViewerPlugin.getImageDescriptor("datatypeproperty.gif");
63  		}
64  		else if (element instanceof OdmObjectProperty) {
65  			descriptor = OntologyViewerPlugin.getImageDescriptor("objectproperty.gif");
66  		}
67  		else if ( element instanceof OdmOntology ) {
68  			descriptor = OntologyViewerPlugin.getImageDescriptor("sme.gif");
69  		}	
70  		else if ( element instanceof ClassInfo) {
71  			ClassInfo ci = (ClassInfo)element;
72  			if ( ci.name.equals(OntologyTreeContentProvider.SUB_CLASS)) {
73  				descriptor = OntologyViewerPlugin.getImageDescriptor("subclasses.gif");
74  			}
75  			else if (ci.name.equals(OntologyTreeContentProvider.OBJ_PROPS)) {
76  				descriptor = OntologyViewerPlugin.getImageDescriptor("objectproperties.gif");
77  			}
78  			else if (ci.name.equals(OntologyTreeContentProvider.DATA_TYPE_PROPS)) {
79  				descriptor = OntologyViewerPlugin.getImageDescriptor("datatypeproperties.gif");
80  			}
81  			else if (ci.name.equals(OntologyTreeContentProvider.CLASS_EXTENSION)) {
82  				descriptor = OntologyViewerPlugin.getImageDescriptor("instances.gif");
83  			}			
84  			else if (ci.name.equals(OntologyTreeContentProvider.ONE_OF)) {
85  				descriptor = OntologyViewerPlugin.getImageDescriptor("classextension.gif");
86  			}
87  			else if (ci.name.equals(OntologyTreeContentProvider.UNION)) {
88  				descriptor = OntologyViewerPlugin.getImageDescriptor("unionclass.gif");
89  			}
90  			else if (ci.name.equals(OntologyTreeContentProvider.INTERSECTION)) {
91  				descriptor = OntologyViewerPlugin.getImageDescriptor("intersectionclass.gif");
92  			}
93  			else if (ci.name.equals(OntologyTreeContentProvider.COMPLEMENT)) {
94  				descriptor = OntologyViewerPlugin.getImageDescriptor("complement.gif");
95  			}
96  			else if (ci.name.equals(OntologyTreeContentProvider.RESTRICTION)) {
97  				descriptor = OntologyViewerPlugin.getImageDescriptor("restrictionclass.gif");
98  			}
99  			else if (ci.name.equals(OntologyTreeContentProvider.EQUIVALENT)) {
100 				descriptor = OntologyViewerPlugin.getImageDescriptor("restrictionclass.gif");
101 			}
102 			else if (ci.name.equals(OntologyTreeContentProvider.DISJOINT)) {
103 				descriptor = OntologyViewerPlugin.getImageDescriptor("restrictionclass.gif");
104 			}
105 			else if (ci.name.equals(OntologyTreeContentProvider.SUB_PROPERTY)) {
106 				descriptor = OntologyViewerPlugin.getImageDescriptor("subclasses.gif");
107 			}
108 			else if (ci.name.equals(OntologyTreeContentProvider.EQUIVALENT_PROPS)) {
109 				descriptor = OntologyViewerPlugin.getImageDescriptor("objectproperties.gif");
110 			}
111 		}
112 		
113 		//obtain the cached image corresponding to the descriptor
114 		Image image = (Image)imageCache.get(descriptor);		
115 		if (image == null) {
116 	       image = descriptor.createImage();
117 	       imageCache.put(descriptor, image);
118 		}
119 		return image;		
120 	}
121 
122 	/* (non-Javadoc)
123 	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
124 	 */
125 	public String getText(Object element) {
126 		
127 		if (element instanceof OdmOntology ) {
128 			return ((OdmOntology)element).getName();
129 		} 
130 		else if (element instanceof OdmThingClass) {
131 			return "ClassThing";
132 		}		
133 		else if (element instanceof OdmRestrictionClass ){
134 			return ((OdmRestrictionClass)element).getName();
135 		}
136 		else if ( element instanceof OdmOntologyClass) {
137 			return ((OdmOntologyClass)element).getName();			
138 		}
139 		else if ( element instanceof OdmDatatypeProperty) {
140 			String name = ((OdmDatatypeProperty)element).getName() + " :";
141 			String type = "";
142             
143 			OdmDataRange dr = ((OdmDataRange)((OdmDatatypeProperty)element).getRange().firstElement());            
144             if ( dr instanceof OdmEnumeration ) {
145             	Vector v = ((OdmEnumeration)dr).getOneOf();
146             	OdmDataValue dv;
147             	int size = v.size();
148             	type = "{ ";
149             	for (int i=0; i<size; ++i) {
150             		dv = (OdmDataValue)( v.get(i));
151             		type += dv.getValue() + ", ";
152             	}            	
153             	type = type.substring(0,type.length()-2);
154             	type += " }";
155             }
156             else if (dr instanceof OdmDataType) {
157             	type = " "+ ((OdmDataType)dr).getName();
158             }
159             return name + type;
160 		}
161 		else if ( element instanceof OdmProperty) {
162 			return ((OdmProperty)element).getName();
163 		}
164 		else if (element instanceof OdmSimpleNamedClassInst) {
165 			return ((OdmSimpleNamedClassInst)element).getName();
166 		}		
167 		else if ( element instanceof ClassInfo) {
168 			return ((ClassInfo)element).name;
169 		}
170 		
171 		return Constants.EMPTY_STRING;
172 	}
173 
174 	/* (non-Javadoc)
175 	 * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
176 	 */
177 	public void addListener(ILabelProviderListener listener) {		
178 	}
179 
180 	/* (non-Javadoc)
181 	 * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
182 	 */
183 	public void dispose() { 
184 	}
185 
186 	/* (non-Javadoc)
187 	 * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
188 	 */
189 	public boolean isLabelProperty(Object element, String property) {	
190 		return false;
191 	}
192 
193 	/* (non-Javadoc)
194 	 * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
195 	 */
196 	public void removeListener(ILabelProviderListener listener) { 
197 	}
198 }