home *** CD-ROM | disk | FTP | other *** search
- package javax.awt.swing.tree;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.util.Vector;
- import javax.awt.swing.event.EventListenerList;
- import javax.awt.swing.event.TreeModelEvent;
- import javax.awt.swing.event.TreeModelListener;
-
- public class DefaultTreeModel implements Serializable, TreeModel {
- protected TreeNode root;
- protected EventListenerList listenerList;
- protected boolean asksAllowsChildren;
- // $FF: synthetic field
- static Class class$javax$awt$swing$event$TreeModelListener;
-
- public DefaultTreeModel(TreeNode root) {
- this(root, false);
- }
-
- public DefaultTreeModel(TreeNode root, boolean asksAllowsChildren) {
- this.listenerList = new EventListenerList();
- if (root == null) {
- throw new IllegalArgumentException("root is null");
- } else {
- this.root = root;
- this.asksAllowsChildren = asksAllowsChildren;
- }
- }
-
- public void setAsksAllowsChildren(boolean newValue) {
- this.asksAllowsChildren = newValue;
- }
-
- public boolean asksAllowsChildren() {
- return this.asksAllowsChildren;
- }
-
- public Object getRoot() {
- return this.root;
- }
-
- public int getIndexOfChild(Object parent, Object child) {
- return parent != null && child != null ? ((TreeNode)parent).getIndex((TreeNode)child) : 0;
- }
-
- public Object getChild(Object parent, int index) {
- return ((TreeNode)parent).getChildAt(index);
- }
-
- public int getChildCount(Object parent) {
- return ((TreeNode)parent).getChildCount();
- }
-
- public boolean isLeaf(Object node) {
- if (this.asksAllowsChildren) {
- return !((TreeNode)node).getAllowsChildren();
- } else {
- return ((TreeNode)node).isLeaf();
- }
- }
-
- public void reload() {
- this.reload(this.root);
- }
-
- public void valueForPathChanged(TreePath path, Object newValue) {
- Object[] aPath = path.getPath();
- MutableTreeNode aNode = (MutableTreeNode)aPath[aPath.length - 1];
- aNode.setUserObject(newValue);
- this.nodeChanged(aNode);
- }
-
- public void insertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index) {
- parent.insert(newChild, index);
- int[] newIndexs = new int[1];
- newIndexs[0] = index;
- this.nodesWereInserted(parent, newIndexs);
- }
-
- public void removeNodeFromParent(MutableTreeNode node) {
- MutableTreeNode parent = (MutableTreeNode)node.getParent();
- if (parent == null) {
- throw new IllegalArgumentException("node does not have a parent.");
- } else {
- int[] childIndex = new int[1];
- Object[] removedArray = new Object[1];
- childIndex[0] = parent.getIndex(node);
- parent.remove(childIndex[0]);
- removedArray[0] = node;
- this.nodesWereRemoved(parent, childIndex, removedArray);
- }
- }
-
- public void nodeChanged(TreeNode node) {
- if (this.listenerList != null && node != null) {
- TreeNode parent = node.getParent();
- if (parent != null) {
- int anIndex = parent.getIndex(node);
- if (anIndex != -1) {
- int[] cIndexs = new int[1];
- cIndexs[0] = anIndex;
- this.nodesChanged(parent, cIndexs);
- }
- }
- }
-
- }
-
- public void reload(TreeNode node) {
- if (node != null) {
- this.fireTreeStructureChanged(this, this.getPathToRoot(node), (int[])null, (Object[])null);
- }
-
- }
-
- public void nodesWereInserted(TreeNode node, int[] childIndices) {
- if (this.listenerList != null && node != null && childIndices != null && childIndices.length > 0) {
- int cCount = childIndices.length;
- Object[] newChildren = new Object[cCount];
-
- for(int counter = 0; counter < cCount; ++counter) {
- newChildren[counter] = node.getChildAt(childIndices[counter]);
- }
-
- this.fireTreeNodesInserted(this, this.getPathToRoot(node), childIndices, newChildren);
- }
-
- }
-
- public void nodesWereRemoved(TreeNode node, int[] childIndices, Object[] removedChildren) {
- if (node != null && childIndices != null) {
- this.fireTreeNodesRemoved(this, this.getPathToRoot(node), childIndices, removedChildren);
- }
-
- }
-
- public void nodesChanged(TreeNode node, int[] childIndices) {
- if (node != null && childIndices != null) {
- int cCount = childIndices.length;
- if (cCount > 0) {
- Object[] cChildren = new Object[cCount];
-
- for(int counter = 0; counter < cCount; ++counter) {
- cChildren[counter] = node.getChildAt(childIndices[counter]);
- }
-
- this.fireTreeNodesChanged(this, this.getPathToRoot(node), childIndices, cChildren);
- }
- }
-
- }
-
- public void nodeStructureChanged(TreeNode node) {
- if (node != null) {
- this.fireTreeStructureChanged(this, this.getPathToRoot(node), (int[])null, (Object[])null);
- }
-
- }
-
- public TreeNode[] getPathToRoot(TreeNode child) {
- return this.getPathToRoot(child, 0);
- }
-
- protected TreeNode[] getPathToRoot(TreeNode aNode, int depth) {
- TreeNode[] retNodes;
- if (aNode == null) {
- if (depth == 0) {
- return null;
- }
-
- retNodes = new TreeNode[depth];
- } else {
- ++depth;
- if (aNode == this.root) {
- retNodes = new TreeNode[depth];
- } else {
- retNodes = this.getPathToRoot(aNode.getParent(), depth);
- }
-
- retNodes[retNodes.length - depth] = aNode;
- }
-
- return retNodes;
- }
-
- public void addTreeModelListener(TreeModelListener l) {
- this.listenerList.add(class$javax$awt$swing$event$TreeModelListener != null ? class$javax$awt$swing$event$TreeModelListener : (class$javax$awt$swing$event$TreeModelListener = class$("javax.awt.swing.event.TreeModelListener")), l);
- }
-
- public void removeTreeModelListener(TreeModelListener l) {
- this.listenerList.remove(class$javax$awt$swing$event$TreeModelListener != null ? class$javax$awt$swing$event$TreeModelListener : (class$javax$awt$swing$event$TreeModelListener = class$("javax.awt.swing.event.TreeModelListener")), l);
- }
-
- protected void fireTreeNodesChanged(Object source, Object[] path, int[] childIndices, Object[] children) {
- Object[] listeners = this.listenerList.getListenerList();
- TreeModelEvent e = null;
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == (class$javax$awt$swing$event$TreeModelListener != null ? class$javax$awt$swing$event$TreeModelListener : (class$javax$awt$swing$event$TreeModelListener = class$("javax.awt.swing.event.TreeModelListener")))) {
- if (e == null) {
- e = new TreeModelEvent(source, path, childIndices, children);
- }
-
- ((TreeModelListener)listeners[i + 1]).treeNodesChanged(e);
- }
- }
-
- }
-
- protected void fireTreeNodesInserted(Object source, Object[] path, int[] childIndices, Object[] children) {
- Object[] listeners = this.listenerList.getListenerList();
- TreeModelEvent e = null;
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == (class$javax$awt$swing$event$TreeModelListener != null ? class$javax$awt$swing$event$TreeModelListener : (class$javax$awt$swing$event$TreeModelListener = class$("javax.awt.swing.event.TreeModelListener")))) {
- if (e == null) {
- e = new TreeModelEvent(source, path, childIndices, children);
- }
-
- ((TreeModelListener)listeners[i + 1]).treeNodesInserted(e);
- }
- }
-
- }
-
- protected void fireTreeNodesRemoved(Object source, Object[] path, int[] childIndices, Object[] children) {
- Object[] listeners = this.listenerList.getListenerList();
- TreeModelEvent e = null;
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == (class$javax$awt$swing$event$TreeModelListener != null ? class$javax$awt$swing$event$TreeModelListener : (class$javax$awt$swing$event$TreeModelListener = class$("javax.awt.swing.event.TreeModelListener")))) {
- if (e == null) {
- e = new TreeModelEvent(source, path, childIndices, children);
- }
-
- ((TreeModelListener)listeners[i + 1]).treeNodesRemoved(e);
- }
- }
-
- }
-
- protected void fireTreeStructureChanged(Object source, Object[] path, int[] childIndices, Object[] children) {
- Object[] listeners = this.listenerList.getListenerList();
- TreeModelEvent e = null;
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == (class$javax$awt$swing$event$TreeModelListener != null ? class$javax$awt$swing$event$TreeModelListener : (class$javax$awt$swing$event$TreeModelListener = class$("javax.awt.swing.event.TreeModelListener")))) {
- if (e == null) {
- e = new TreeModelEvent(source, path, childIndices, children);
- }
-
- ((TreeModelListener)listeners[i + 1]).treeStructureChanged(e);
- }
- }
-
- }
-
- private void writeObject(ObjectOutputStream s) throws IOException {
- Vector values = new Vector();
- s.defaultWriteObject();
- if (this.root != null && this.root instanceof Serializable) {
- values.addElement("root");
- values.addElement(this.root);
- }
-
- s.writeObject(values);
- }
-
- private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
- s.defaultReadObject();
- Vector values = (Vector)s.readObject();
- int indexCounter = 0;
- int maxCounter = values.size();
- if (indexCounter < maxCounter && values.elementAt(indexCounter).equals("root")) {
- ++indexCounter;
- this.root = (TreeNode)values.elementAt(indexCounter);
- ++indexCounter;
- }
-
- }
-
- // $FF: synthetic method
- static Class class$(String class$) {
- try {
- return Class.forName(class$);
- } catch (ClassNotFoundException forName) {
- throw new NoClassDefFoundError(((Throwable)forName).getMessage());
- }
- }
- }
-