1 17 18 package org.sape.carbon.services.swing.treetable; 19 20 33 34 import javax.swing.event.EventListenerList ; 35 import javax.swing.event.TreeModelEvent ; 36 import javax.swing.event.TreeModelListener ; 37 import javax.swing.tree.TreePath ; 38 39 45 46 public abstract class AbstractTreeTableModel implements TreeTableModel { 47 protected Object root; 48 protected EventListenerList listenerList = new EventListenerList (); 49 50 public AbstractTreeTableModel(Object root) { 51 this.root = root; 52 } 53 54 58 public Object getRoot() { 59 return root; 60 } 61 62 public boolean isLeaf(Object node) { 63 return getChildCount(node) == 0; 64 } 65 66 public void valueForPathChanged(TreePath path, Object newValue) {} 67 68 public int getIndexOfChild(Object parent, Object child) { 70 for (int i = 0; i < getChildCount(parent); i++) { 71 if (getChild(parent, i).equals(child)) { 72 return i; 73 } 74 } 75 return -1; 76 } 77 78 public void addTreeModelListener(TreeModelListener l) { 79 listenerList.add(TreeModelListener .class, l); 80 } 81 82 public void removeTreeModelListener(TreeModelListener l) { 83 listenerList.remove(TreeModelListener .class, l); 84 } 85 86 93 protected void fireTreeNodesChanged(Object source, Object [] path, 94 int[] childIndices, 95 Object [] children) { 96 Object [] listeners = listenerList.getListenerList(); 98 TreeModelEvent e = null; 99 for (int i = listeners.length-2; i>=0; i-=2) { 102 if (listeners[i]==TreeModelListener .class) { 103 if (e == null) 105 e = new TreeModelEvent (source, path, 106 childIndices, children); 107 ((TreeModelListener )listeners[i+1]).treeNodesChanged(e); 108 } 109 } 110 } 111 112 119 protected void fireTreeNodesInserted(Object source, Object [] path, 120 int[] childIndices, 121 Object [] children) { 122 Object [] listeners = listenerList.getListenerList(); 124 TreeModelEvent e = null; 125 for (int i = listeners.length-2; i>=0; i-=2) { 128 if (listeners[i]==TreeModelListener .class) { 129 if (e == null) 131 e = new TreeModelEvent (source, path, 132 childIndices, children); 133 ((TreeModelListener )listeners[i+1]).treeNodesInserted(e); 134 } 135 } 136 } 137 138 145 protected void fireTreeNodesRemoved(Object source, Object [] path, 146 int[] childIndices, 147 Object [] children) { 148 Object [] listeners = listenerList.getListenerList(); 150 TreeModelEvent e = null; 151 for (int i = listeners.length-2; i>=0; i-=2) { 154 if (listeners[i]==TreeModelListener .class) { 155 if (e == null) 157 e = new TreeModelEvent (source, path, 158 childIndices, children); 159 ((TreeModelListener )listeners[i+1]).treeNodesRemoved(e); 160 } 161 } 162 } 163 164 171 protected void fireTreeStructureChanged(Object source, Object [] path, 172 int[] childIndices, 173 Object [] children) { 174 Object [] listeners = listenerList.getListenerList(); 176 TreeModelEvent e = null; 177 for (int i = listeners.length-2; i>=0; i-=2) { 180 if (listeners[i]==TreeModelListener .class) { 181 if (e == null) 183 e = new TreeModelEvent (source, path, 184 childIndices, children); 185 ((TreeModelListener )listeners[i+1]).treeStructureChanged(e); 186 } 187 } 188 } 189 190 194 public Class getColumnClass(int column) { return Object .class; } 195 196 200 public boolean isCellEditable(Object node, int column) { 201 return getColumnClass(column) == TreeTableModel.class; 202 } 203 204 public void setValueAt(Object aValue, Object node, int column) {} 205 206 207 209 216 } 217 | Popular Tags |