/* * Scute * * Homepage: http://hyperdata.org/scute * * License : http://www.apache.org/licenses/LICENSE-2.0 * See also license.txt or http://hyperdata.org/wiki/Scute:License * * Danny Ayers 2011 */ package org.hyperdata.scute.tree; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.RDFNode; // extends DynamicTreeTableModel implements TreeTableModel /** * The Class RdfTreeModel. */ public class RdfTreeModel extends DefaultTreeModel { /** The Constant serialVersionUID. */ private static final long serialVersionUID = -2322361720841873199L; // private final DefaultTreeModel defaultTreeModel; /** The model. */ private final Model model; /** The node map. */ private final RdfNodeMap nodeMap; /** * Instantiates a new rdf tree model. * * @param root * the root * @param model * the model * @param nodeMap * the node map */ public RdfTreeModel(TreeNode root, Model model, RdfNodeMap nodeMap) { super(root); // super(); this.model = model; this.nodeMap = nodeMap; nodeMap.setTreeModel(this); // defaultTreeModel = new DefaultTreeModel(root); // added@@ } /** * Returns the column name passed into the constructor. * * @param parent * the parent * @param child * the child * @return the index of child */ // @Override // public String getColumnName(int column) { // // System.out.println("get co.umn name " + column + columnNames[column]); // return columnNames[column]; // } // was commented @Override public int getIndexOfChild(Object parent, Object child) { return ((RdfTreeNode) parent).getIndex((RdfTreeNode) child); } /** * Gets the model. * * @return the model */ public Model getModel() { return model; } /** * Gets the rdf type label. * * @param node * the node * @return the rdf type label */ public String getRdfTypeLabel(Object node) { return ((RdfTreeNode) node).getRdfValue(); } /** * Gets the rdf value label. * * @param node * the node * @return the rdf value label */ public String getRdfValueLabel(Object node) { return ((RdfTreeNode) node).getNodeTypeName(); } /* (non-Javadoc) * @see javax.swing.tree.DefaultTreeModel#getRoot() */ @Override public Object getRoot() { return nodeMap.getRoot(); } /** * Gets the tree node. * * @param rdfNode * the rdf node * @return the tree node */ public TreeNode getTreeNode(RDFNode rdfNode) { return nodeMap.getTreeNode(rdfNode); } /** * Checks if is cell editable. * * @param node * the node * @param column * the column * @return true, if is cell editable */ public boolean isCellEditable(Object node, int column) { if (column == 0) return true; return (column == 2) && ((RdfTreeNode) node).isValueEditable(); } // //////////////// TreeTable Methods ////////////// /* * public int getColumnCount() { return 2; } * * public String getColumnName(int column) { return "column" + column; } */ // ????? /* * static protected Class[] cTypes = { TreeTableModel.class, Integer.class, * String.class, Date.class }; * * public Class getColumnClass(int column) { // return * java.lang.String.class; return cTypes[column]; } */ /* * public Object getValueAt(Object node, int column) { switch (column) { * case 1 : return getRdfValueLabel(node); case 2 : return * getRdfTypeLabel(node); default : return super.getValueAt(node, column); } * } */ /* (non-Javadoc) * @see javax.swing.tree.DefaultTreeModel#isLeaf(java.lang.Object) */ @Override public boolean isLeaf(Object node) { // System.out.println( ((RdfTreeNode) node).isLeaf()); return ((RdfTreeNode) node).isLeaf(); // return false; } /** * Load model. * * @param model * the model */ public void loadModel(Model model) { nodeMap.loadModel(model); // super.reload(); } /** * Sets the value at. * * @param value * the value * @param node * the node * @param column * the column */ public void setValueAt(Object value, Object node, int column) { if (column == 0) return; ((RdfTreeNode) node).setRdfValue(value.toString()); } /* * public void setRdfTreeNode(RdfTreeNode rdfTreeNode) { this.rdfTreeNode = * rdfTreeNode; nodeTypeLabel.setText(rdfTreeNode.getNodeTypeName()); * nodeValueField.setText(rdfTreeNode.getRdfValue()); * * nodeValueField.setEditable(rdfTreeNode.isTextEditable()); * if(rdfTreeNode.isTextEditable()){ * nodeValueField.setBackground(Scute.READ_WRITE_COLOR); }else{ * nodeValueField.setBackground(Scute.READ_ONLY_COLOR); } } */ // public boolean isCellEditable(Object node, int column) { // return false; // } // public void setValueAt(Object aValue, Object node, int column) { // } /* * public Object getChild(Object parent, int index) { // added @@ return * defaultTreeModel.getChild(parent, index); } * * public int getChildCount(Object parent) { return * defaultTreeModel.getChildCount(parent); } */ // ------------------- }