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 }
|