00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 package GuiComponents.Inspector.TreeTable;
00042
00043 import javax.swing.tree.*;
00044 import javax.swing.event.*;
00045
00055 public abstract class AbstractTreeTableModel implements TreeTableModel {
00056 protected Object root;
00057 protected EventListenerList listenerList = new EventListenerList();
00058
00059 public AbstractTreeTableModel(Object root) {
00060 this.root = root;
00061 }
00062
00063
00064
00065
00066
00067 public Object getRoot() {
00068 return root;
00069 }
00070
00071 public boolean isLeaf(Object node) {
00072 return getChildCount(node) == 0;
00073 }
00074
00075 public void valueForPathChanged(TreePath path, Object newValue) {}
00076
00077
00078 public int getIndexOfChild(Object parent, Object child) {
00079 for (int i = 0; i < getChildCount(parent); i++) {
00080 if (getChild(parent, i).equals(child)) {
00081 return i;
00082 }
00083 }
00084 return -1;
00085 }
00086
00087 public void addTreeModelListener(TreeModelListener l) {
00088 listenerList.add(TreeModelListener.class, l);
00089 }
00090
00091 public void removeTreeModelListener(TreeModelListener l) {
00092 listenerList.remove(TreeModelListener.class, l);
00093 }
00094
00095
00096
00097
00098
00099
00100
00101
00102 protected void fireTreeNodesChanged(Object source, Object[] path,
00103 int[] childIndices,
00104 Object[] children) {
00105
00106 Object[] listeners = listenerList.getListenerList();
00107 TreeModelEvent e = null;
00108
00109
00110 for (int i = listeners.length-2; i>=0; i-=2) {
00111 if (listeners[i]==TreeModelListener.class) {
00112
00113 if (e == null)
00114 e = new TreeModelEvent(source, path,
00115 childIndices, children);
00116 ((TreeModelListener)listeners[i+1]).treeNodesChanged(e);
00117 }
00118 }
00119 }
00120
00121
00122
00123
00124
00125
00126
00127
00128 protected void fireTreeNodesInserted(Object source, Object[] path,
00129 int[] childIndices,
00130 Object[] children) {
00131
00132 Object[] listeners = listenerList.getListenerList();
00133 TreeModelEvent e = null;
00134
00135
00136 for (int i = listeners.length-2; i>=0; i-=2) {
00137 if (listeners[i]==TreeModelListener.class) {
00138
00139 if (e == null)
00140 e = new TreeModelEvent(source, path,
00141 childIndices, children);
00142 ((TreeModelListener)listeners[i+1]).treeNodesInserted(e);
00143 }
00144 }
00145 }
00146
00147
00148
00149
00150
00151
00152
00153
00154 protected void fireTreeNodesRemoved(Object source, Object[] path,
00155 int[] childIndices,
00156 Object[] children) {
00157
00158 Object[] listeners = listenerList.getListenerList();
00159 TreeModelEvent e = null;
00160
00161
00162 for (int i = listeners.length-2; i>=0; i-=2) {
00163 if (listeners[i]==TreeModelListener.class) {
00164
00165 if (e == null)
00166 e = new TreeModelEvent(source, path,
00167 childIndices, children);
00168 ((TreeModelListener)listeners[i+1]).treeNodesRemoved(e);
00169 }
00170 }
00171 }
00172
00173
00174
00175
00176
00177
00178
00179
00180 protected void fireTreeStructureChanged(Object source, Object[] path,
00181 int[] childIndices,
00182 Object[] children) {
00183
00184 Object[] listeners = listenerList.getListenerList();
00185 TreeModelEvent e = null;
00186
00187
00188 for (int i = listeners.length-2; i>=0; i-=2) {
00189 if (listeners[i]==TreeModelListener.class) {
00190
00191 if (e == null)
00192 e = new TreeModelEvent(source, path,
00193 childIndices, children);
00194 ((TreeModelListener)listeners[i+1]).treeStructureChanged(e);
00195 }
00196 }
00197 }
00198
00199
00200
00201
00202
00203 public Class getColumnClass(int column) { return Object.class; }
00204
00209 public boolean isCellEditable(Object node, int column) {
00210 return getColumnClass(column) == TreeTableModel.class;
00211 }
00212
00213 public void setValueAt(Object aValue, Object node, int column) {}
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226 }
00227