PropertyDetailsTableCellRenderer.java
001 /*
002  *  PropertyDetailsTableCellRenderer.java
003  *
004  *  Niraj Aswani, 09/March/07
005  *
006  *  $Id: PropertyDetailsTableCellRenderer.html,v 1.0 2007/03/09 16:13:01 niraj Exp $
007  */
008 package gate.gui.ontology;
009 
010 import gate.creole.ontology.*;
011 import gate.gui.MainFrame;
012 import java.awt.Component;
013 import java.util.Set;
014 
015 import javax.swing.JTable;
016 import javax.swing.table.DefaultTableCellRenderer;
017 
018 /**
019  * A Class that specifies how each node in the details panel should look
020  * like.
021  
022  @author niraj
023  
024  */
025 public class PropertyDetailsTableCellRenderer extends DefaultTableCellRenderer {
026   private static final long serialVersionUID = 3257572784619337525L;
027 
028   public PropertyDetailsTableCellRenderer(
029           PropertyDetailsTableModel detailstablemodel) {
030     propertyDetailsTableModel = detailstablemodel;
031   }
032 
033   public Component getTableCellRendererComponent(JTable table, Object obj,
034           boolean flag, boolean flag1, int i, int j) {
035     Component component = super.getTableCellRendererComponent(table, "", flag,
036             flag1, i, j);
037     try {
038       if(j == 0) {
039         setText(null);
040         if(obj == null) {
041           setIcon(null);
042         }
043         else {
044           Object obj1 = propertyDetailsTableModel.getValueAt(i, 1);
045           setIcon(MainFrame.getIcon(((Boolean)obj).booleanValue()
046                   "expanded"
047                   "closed"));
048           setEnabled(((DetailsGroup)obj1).getSize() 0);
049         }
050       }
051       else if(j == 1) {
052         if(obj instanceof DetailsGroup) {
053           DetailsGroup detailsgroup = (DetailsGroup)obj;
054           setIcon(null);
055           setFont(getFont().deriveFont(1));
056           setText(detailsgroup.getName());
057           setEnabled(detailsgroup.getSize() 0);
058         }
059         else if(obj instanceof KeyValuePair) {
060           KeyValuePair kvp = (KeyValuePair)obj;
061           setIcon(MainFrame.getIcon("empty"));
062           setFont(getFont().deriveFont(0));
063           setText(kvp.getKey());
064           setEnabled(true);
065         }
066         else if(obj instanceof Restriction) {
067           OClass tclass = (OClass)obj;
068           setIcon(MainFrame.getIcon("ontology-restriction"));
069           setFont(getFont().deriveFont(0));
070           setText(tclass.getName());
071           setToolTipText(tclass.getURI().toString());
072           setEnabled(true);
073         }
074         else if(obj instanceof OClass) {
075           OClass tclass = (OClass)obj;
076           setIcon(MainFrame.getIcon("ontology-class"));
077           setFont(getFont().deriveFont(0));
078           setText(tclass.getName());
079           setToolTipText(tclass.getURI().toString());
080           setEnabled(true);
081         }
082         else if(obj instanceof OInstance) {
083           OInstance oinstance = (OInstance)obj;
084           setIcon(MainFrame.getIcon("ontology-instance"));
085           setFont(getFont().deriveFont(0));
086           setText(oinstance.getName());
087           setToolTipText(oinstance.getURI().toString());
088           setEnabled(true);
089         }
090         else if(obj instanceof RDFProperty) {
091           RDFProperty property = (RDFProperty)obj;
092           String propertyType = "RDF";
093           if(property instanceof SymmetricProperty) {
094             setIcon(MainFrame.getIcon("ontology-symmetric-property"));
095             propertyType = "Symmetric";
096           }
097           else if(property instanceof AnnotationProperty) {
098             setIcon(MainFrame.getIcon("ontology-annotation-property"));
099             propertyType = "Annotation";
100           }
101           else if(property instanceof TransitiveProperty) {
102             setIcon(MainFrame.getIcon("ontology-transitive-property"));
103             propertyType = "Transitive";
104           }
105           else if(property instanceof ObjectProperty) {
106             setIcon(MainFrame.getIcon("ontology-object-property"));
107             propertyType = "Object";
108           }
109           else if(property instanceof DatatypeProperty) {
110             setIcon(MainFrame.getIcon("ontology-datatype-property"));
111             propertyType = "Datatype";
112           }
113           else {
114             setIcon(MainFrame.getIcon("ontology-rdf-property"));
115           }
116           setFont(getFont().deriveFont(0));
117           String s = property.getName();
118           setText(s);
119           setToolTipText((new StringBuilder()).append(
120                   "<HTML><b>" + propertyType + " Property</b><br>").append(
121                   property.getURI()).append("</html>").toString());
122           setEnabled(true);
123         }
124         else if(obj instanceof PropertyValue) {
125 
126           PropertyValue property = (PropertyValue)obj;
127           String propertyType = "RDF";
128           if(property.getProperty() instanceof SymmetricProperty) {
129             setIcon(MainFrame.getIcon("ontology-symmetric-property"));
130             propertyType = "Symmetric";
131           }
132           else if(property.getProperty() instanceof AnnotationProperty) {
133             setIcon(MainFrame.getIcon("ontology-annotation-property"));
134             propertyType = "Annotation";
135           }
136           else if(property.getProperty() instanceof TransitiveProperty) {
137             setIcon(MainFrame.getIcon("ontology-transitive-property"));
138             propertyType = "Transitive";
139           }
140           else if(property.getProperty() instanceof ObjectProperty) {
141             setIcon(MainFrame.getIcon("ontology-object-property"));
142             propertyType = "Object";
143           }
144           else if(property.getProperty() instanceof DatatypeProperty) {
145             setIcon(MainFrame.getIcon("ontology-datatype-property"));
146             propertyType = "Datatype";
147           }
148           else {
149             setIcon(MainFrame.getIcon("ontology-rdf-property"));
150           }
151 
152           setFont(getFont().deriveFont(0));
153           String s = property.getProperty().getName();
154           setText(s);
155           setToolTipText((new StringBuilder()).append(
156                   "<HTML><b>" + propertyType + " Property Value</b><br>")
157                   .append(property.getProperty().getURI()).append("</html>")
158                   .toString());
159           setEnabled(true);
160         }
161       }
162       else if(j == 2) {
163         setIcon(null);
164         if(obj instanceof PropertyValue) {
165           PropertyValue property = (PropertyValue)obj;
166           setFont(getFont().deriveFont(0));
167           String s = "";
168           if(property.getValue() instanceof Literal) {
169             s = ((Literal)property.getValue()).getValue();
170           }
171           else {
172             s = property.getValue().toString();
173           }
174           setText(s);
175           setEnabled(true);
176         }
177         else if(obj instanceof KeyValuePair) {
178           KeyValuePair kvp = (KeyValuePair)obj;
179           setIcon(null);
180           setFont(getFont().deriveFont(0));
181           setText(kvp.getValue().toString());
182           setEnabled(true);
183         }
184         else if(obj instanceof RDFProperty) {
185           RDFProperty prop = (RDFProperty)obj;
186           String s = "";
187           if(prop instanceof DatatypeProperty) {
188             s = ((DatatypeProperty)prop).getDataType().getXmlSchemaURIString();
189           }
190           else if(prop instanceof ObjectProperty) {
191             Set<OResource> set = prop.getRange();
192             if(set == null || set.isEmpty()) {
193               s = "[ALL CLASSES]";
194             }
195             else {
196               s = "[";
197               boolean firstTime = true;
198               for(OResource res : set) {
199                 if(!firstTime) {
200                   s += ",";
201                 }
202                 else {
203                   firstTime = false;
204                 }
205                 s += res.getName();
206               }
207               s += "]";
208             }
209           }
210           else {
211             s = "[ALL RESOURCES]";
212           }
213           setIcon(null);
214           setFont(getFont().deriveFont(0));
215           setText(s);
216           setEnabled(true);
217         }
218         else {
219           setIcon(null);
220           setFont(getFont().deriveFont(0));
221           setText("");
222           setEnabled(false);
223         }
224       else if(j==3) {
225         if(obj instanceof PropertyValue) {
226           setIcon(MainFrame.getIcon("delete"));
227           setText("");
228           setEnabled(true);
229           setFont(getFont().deriveFont(0));
230         else {
231           setIcon(null);
232           setText("");
233           setEnabled(false);
234           setFont(getFont().deriveFont(0));
235         }
236       }
237       else {
238         setIcon(null);
239         setFont(getFont().deriveFont(0));
240         setText("");
241         setEnabled(false);
242       }
243     }
244     catch(Exception e) {
245       // refreshing errors hiding them
246     }
247     return component;
248   }
249 
250   protected PropertyDetailsTableModel propertyDetailsTableModel;
251 }