1 package org.mc4j.console.swing.treetable; 2 3 16 17 import javax.swing.event.EventListenerList ; 18 import javax.swing.event.TreeModelEvent ; 19 import javax.swing.event.TreeModelListener ; 20 import javax.swing.tree.TreePath ; 21 22 28 29 public abstract class AbstractTreeTableModel implements TreeTableModel { 30 protected Object root; 31 protected EventListenerList listenerList = new EventListenerList (); 32 33 public AbstractTreeTableModel(Object root) { 34 this.root = root; 35 } 36 37 41 public Object getRoot() { 42 return root; 43 } 44 45 public boolean isLeaf(Object node) { 46 return getChildCount(node) == 0; 47 } 48 49 public void valueForPathChanged(TreePath path, Object newValue) {} 50 51 public int getIndexOfChild(Object parent, Object child) { 53 for (int i = 0; i < getChildCount(parent); i++) { 54 if (getChild(parent, i).equals(child)) { 55 return i; 56 } 57 } 58 return -1; 59 } 60 61 public void addTreeModelListener(TreeModelListener l) { 62 listenerList.add(TreeModelListener .class, l); 63 } 64 65 public void removeTreeModelListener(TreeModelListener l) { 66 listenerList.remove(TreeModelListener .class, l); 67 } 68 69 76 protected void fireTreeNodesChanged(Object source, Object [] path, 77 int[] childIndices, 78 Object [] children) { 79 Object [] listeners = listenerList.getListenerList(); 81 TreeModelEvent e = null; 82 for (int i = listeners.length-2; i>=0; i-=2) { 85 if (listeners[i]==TreeModelListener .class) { 86 if (e == null) 88 e = new TreeModelEvent (source, path, 89 childIndices, children); 90 ((TreeModelListener )listeners[i+1]).treeNodesChanged(e); 91 } 92 } 93 } 94 95 102 protected void fireTreeNodesInserted(Object source, Object [] path, 103 int[] childIndices, 104 Object [] children) { 105 Object [] listeners = listenerList.getListenerList(); 107 TreeModelEvent e = null; 108 for (int i = listeners.length-2; i>=0; i-=2) { 111 if (listeners[i]==TreeModelListener .class) { 112 if (e == null) 114 e = new TreeModelEvent (source, path, 115 childIndices, children); 116 ((TreeModelListener )listeners[i+1]).treeNodesInserted(e); 117 } 118 } 119 } 120 121 128 protected void fireTreeNodesRemoved(Object source, Object [] path, 129 int[] childIndices, 130 Object [] children) { 131 Object [] listeners = listenerList.getListenerList(); 133 TreeModelEvent e = null; 134 for (int i = listeners.length-2; i>=0; i-=2) { 137 if (listeners[i]==TreeModelListener .class) { 138 if (e == null) 140 e = new TreeModelEvent (source, path, 141 childIndices, children); 142 ((TreeModelListener )listeners[i+1]).treeNodesRemoved(e); 143 } 144 } 145 } 146 147 154 protected void fireTreeStructureChanged(Object source, Object [] path, 155 int[] childIndices, 156 Object [] children) { 157 Object [] listeners = listenerList.getListenerList(); 159 TreeModelEvent e = null; 160 for (int i = listeners.length-2; i>=0; i-=2) { 163 if (listeners[i]==TreeModelListener .class) { 164 if (e == null) 166 e = new TreeModelEvent (source, path, 167 childIndices, children); 168 ((TreeModelListener )listeners[i+1]).treeStructureChanged(e); 169 } 170 } 171 } 172 173 177 public Class getColumnClass(int column) { return Object .class; } 178 179 183 public boolean isCellEditable(Object node, int column) { 184 return getColumnClass(column) == TreeTableModel.class; 185 } 186 187 public void setValueAt(Object aValue, Object node, int column) {} 188 189 190 192 199 } 200 | Popular Tags |