home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / tree / DefaultTreeModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  6.4 KB  |  292 lines

  1. package com.sun.java.swing.tree;
  2.  
  3. import com.sun.java.swing.event.EventListenerList;
  4. import com.sun.java.swing.event.TreeModelEvent;
  5. import com.sun.java.swing.event.TreeModelListener;
  6. import java.io.IOException;
  7. import java.io.ObjectInputStream;
  8. import java.io.ObjectOutputStream;
  9. import java.io.Serializable;
  10. import java.util.Vector;
  11.  
  12. public class DefaultTreeModel implements Serializable, TreeModel {
  13.    protected TreeNode root;
  14.    protected EventListenerList listenerList;
  15.    protected boolean asksAllowsChildren;
  16.    // $FF: synthetic field
  17.    static Class class$com$sun$java$swing$event$TreeModelListener;
  18.  
  19.    public DefaultTreeModel(TreeNode var1) {
  20.       this(var1, false);
  21.    }
  22.  
  23.    public DefaultTreeModel(TreeNode var1, boolean var2) {
  24.       this.listenerList = new EventListenerList();
  25.       if (var1 == null) {
  26.          throw new IllegalArgumentException("root is null");
  27.       } else {
  28.          this.root = var1;
  29.          this.asksAllowsChildren = var2;
  30.       }
  31.    }
  32.  
  33.    public void setAsksAllowsChildren(boolean var1) {
  34.       this.asksAllowsChildren = var1;
  35.    }
  36.  
  37.    public boolean asksAllowsChildren() {
  38.       return this.asksAllowsChildren;
  39.    }
  40.  
  41.    public Object getRoot() {
  42.       return this.root;
  43.    }
  44.  
  45.    public int getIndexOfChild(Object var1, Object var2) {
  46.       return var1 != null && var2 != null ? ((TreeNode)var1).getIndex((TreeNode)var2) : 0;
  47.    }
  48.  
  49.    public Object getChild(Object var1, int var2) {
  50.       return ((TreeNode)var1).getChildAt(var2);
  51.    }
  52.  
  53.    public int getChildCount(Object var1) {
  54.       return ((TreeNode)var1).getChildCount();
  55.    }
  56.  
  57.    public boolean isLeaf(Object var1) {
  58.       if (this.asksAllowsChildren) {
  59.          return !((TreeNode)var1).getAllowsChildren();
  60.       } else {
  61.          return ((TreeNode)var1).isLeaf();
  62.       }
  63.    }
  64.  
  65.    public void reload() {
  66.       this.reload(this.root);
  67.    }
  68.  
  69.    public void valueForPathChanged(TreePath var1, Object var2) {
  70.       Object[] var3 = var1.getPath();
  71.       MutableTreeNode var4 = (MutableTreeNode)var3[var3.length - 1];
  72.       var4.setUserObject(var2);
  73.       this.nodeChanged(var4);
  74.    }
  75.  
  76.    public void insertNodeInto(MutableTreeNode var1, MutableTreeNode var2, int var3) {
  77.       var2.insert(var1, var3);
  78.       int[] var4 = new int[]{var3};
  79.       this.nodesWereInserted(var2, var4);
  80.    }
  81.  
  82.    public void removeNodeFromParent(MutableTreeNode var1) {
  83.       MutableTreeNode var2 = (MutableTreeNode)var1.getParent();
  84.       if (var2 == null) {
  85.          throw new IllegalArgumentException("node does not have a parent.");
  86.       } else {
  87.          int[] var3 = new int[1];
  88.          Object[] var4 = new Object[1];
  89.          var3[0] = var2.getIndex(var1);
  90.          var2.remove(var3[0]);
  91.          var4[0] = var1;
  92.          this.nodesWereRemoved(var2, var3, var4);
  93.       }
  94.    }
  95.  
  96.    public void nodeChanged(TreeNode var1) {
  97.       if (this.listenerList != null && var1 != null) {
  98.          TreeNode var2 = var1.getParent();
  99.          if (var2 != null) {
  100.             int var3 = var2.getIndex(var1);
  101.             if (var3 != -1) {
  102.                int[] var4 = new int[]{var3};
  103.                this.nodesChanged(var2, var4);
  104.             }
  105.          }
  106.       }
  107.  
  108.    }
  109.  
  110.    public void reload(TreeNode var1) {
  111.       if (var1 != null) {
  112.          this.fireTreeStructureChanged(this, this.getPathToRoot(var1), (int[])null, (Object[])null);
  113.       }
  114.  
  115.    }
  116.  
  117.    public void nodesWereInserted(TreeNode var1, int[] var2) {
  118.       if (this.listenerList != null && var1 != null && var2 != null && var2.length > 0) {
  119.          int var3 = var2.length;
  120.          Object[] var4 = new Object[var3];
  121.  
  122.          for(int var5 = 0; var5 < var3; ++var5) {
  123.             var4[var5] = var1.getChildAt(var2[var5]);
  124.          }
  125.  
  126.          this.fireTreeNodesInserted(this, this.getPathToRoot(var1), var2, var4);
  127.       }
  128.  
  129.    }
  130.  
  131.    public void nodesWereRemoved(TreeNode var1, int[] var2, Object[] var3) {
  132.       if (var1 != null && var2 != null) {
  133.          this.fireTreeNodesRemoved(this, this.getPathToRoot(var1), var2, var3);
  134.       }
  135.  
  136.    }
  137.  
  138.    public void nodesChanged(TreeNode var1, int[] var2) {
  139.       if (var1 != null && var2 != null) {
  140.          int var3 = var2.length;
  141.          if (var3 > 0) {
  142.             Object[] var4 = new Object[var3];
  143.  
  144.             for(int var5 = 0; var5 < var3; ++var5) {
  145.                var4[var5] = var1.getChildAt(var2[var5]);
  146.             }
  147.  
  148.             this.fireTreeNodesChanged(this, this.getPathToRoot(var1), var2, var4);
  149.          }
  150.       }
  151.  
  152.    }
  153.  
  154.    public void nodeStructureChanged(TreeNode var1) {
  155.       if (var1 != null) {
  156.          this.fireTreeStructureChanged(this, this.getPathToRoot(var1), (int[])null, (Object[])null);
  157.       }
  158.  
  159.    }
  160.  
  161.    public TreeNode[] getPathToRoot(TreeNode var1) {
  162.       return this.getPathToRoot(var1, 0);
  163.    }
  164.  
  165.    protected TreeNode[] getPathToRoot(TreeNode var1, int var2) {
  166.       TreeNode[] var3;
  167.       if (var1 == null) {
  168.          if (var2 == 0) {
  169.             return null;
  170.          }
  171.  
  172.          var3 = new TreeNode[var2];
  173.       } else {
  174.          ++var2;
  175.          if (var1 == this.root) {
  176.             var3 = new TreeNode[var2];
  177.          } else {
  178.             var3 = this.getPathToRoot(var1.getParent(), var2);
  179.          }
  180.  
  181.          var3[var3.length - var2] = var1;
  182.       }
  183.  
  184.       return var3;
  185.    }
  186.  
  187.    public void addTreeModelListener(TreeModelListener var1) {
  188.       this.listenerList.add(class$com$sun$java$swing$event$TreeModelListener != null ? class$com$sun$java$swing$event$TreeModelListener : (class$com$sun$java$swing$event$TreeModelListener = class$("com.sun.java.swing.event.TreeModelListener")), var1);
  189.    }
  190.  
  191.    public void removeTreeModelListener(TreeModelListener var1) {
  192.       this.listenerList.remove(class$com$sun$java$swing$event$TreeModelListener != null ? class$com$sun$java$swing$event$TreeModelListener : (class$com$sun$java$swing$event$TreeModelListener = class$("com.sun.java.swing.event.TreeModelListener")), var1);
  193.    }
  194.  
  195.    protected void fireTreeNodesChanged(Object var1, Object[] var2, int[] var3, Object[] var4) {
  196.       Object[] var5 = this.listenerList.getListenerList();
  197.       TreeModelEvent var6 = null;
  198.  
  199.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  200.          if (var5[var7] == (class$com$sun$java$swing$event$TreeModelListener != null ? class$com$sun$java$swing$event$TreeModelListener : (class$com$sun$java$swing$event$TreeModelListener = class$("com.sun.java.swing.event.TreeModelListener")))) {
  201.             if (var6 == null) {
  202.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  203.             }
  204.  
  205.             ((TreeModelListener)var5[var7 + 1]).treeNodesChanged(var6);
  206.          }
  207.       }
  208.  
  209.    }
  210.  
  211.    protected void fireTreeNodesInserted(Object var1, Object[] var2, int[] var3, Object[] var4) {
  212.       Object[] var5 = this.listenerList.getListenerList();
  213.       TreeModelEvent var6 = null;
  214.  
  215.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  216.          if (var5[var7] == (class$com$sun$java$swing$event$TreeModelListener != null ? class$com$sun$java$swing$event$TreeModelListener : (class$com$sun$java$swing$event$TreeModelListener = class$("com.sun.java.swing.event.TreeModelListener")))) {
  217.             if (var6 == null) {
  218.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  219.             }
  220.  
  221.             ((TreeModelListener)var5[var7 + 1]).treeNodesInserted(var6);
  222.          }
  223.       }
  224.  
  225.    }
  226.  
  227.    protected void fireTreeNodesRemoved(Object var1, Object[] var2, int[] var3, Object[] var4) {
  228.       Object[] var5 = this.listenerList.getListenerList();
  229.       TreeModelEvent var6 = null;
  230.  
  231.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  232.          if (var5[var7] == (class$com$sun$java$swing$event$TreeModelListener != null ? class$com$sun$java$swing$event$TreeModelListener : (class$com$sun$java$swing$event$TreeModelListener = class$("com.sun.java.swing.event.TreeModelListener")))) {
  233.             if (var6 == null) {
  234.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  235.             }
  236.  
  237.             ((TreeModelListener)var5[var7 + 1]).treeNodesRemoved(var6);
  238.          }
  239.       }
  240.  
  241.    }
  242.  
  243.    protected void fireTreeStructureChanged(Object var1, Object[] var2, int[] var3, Object[] var4) {
  244.       Object[] var5 = this.listenerList.getListenerList();
  245.       TreeModelEvent var6 = null;
  246.  
  247.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  248.          if (var5[var7] == (class$com$sun$java$swing$event$TreeModelListener != null ? class$com$sun$java$swing$event$TreeModelListener : (class$com$sun$java$swing$event$TreeModelListener = class$("com.sun.java.swing.event.TreeModelListener")))) {
  249.             if (var6 == null) {
  250.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  251.             }
  252.  
  253.             ((TreeModelListener)var5[var7 + 1]).treeStructureChanged(var6);
  254.          }
  255.       }
  256.  
  257.    }
  258.  
  259.    private void writeObject(ObjectOutputStream var1) throws IOException {
  260.       Vector var2 = new Vector();
  261.       var1.defaultWriteObject();
  262.       if (this.root != null && this.root instanceof Serializable) {
  263.          var2.addElement("root");
  264.          var2.addElement(this.root);
  265.       }
  266.  
  267.       var1.writeObject(var2);
  268.    }
  269.  
  270.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  271.       var1.defaultReadObject();
  272.       Vector var2 = (Vector)var1.readObject();
  273.       int var3 = 0;
  274.       int var4 = var2.size();
  275.       if (var3 < var4 && var2.elementAt(var3).equals("root")) {
  276.          ++var3;
  277.          this.root = (TreeNode)var2.elementAt(var3);
  278.          ++var3;
  279.       }
  280.  
  281.    }
  282.  
  283.    // $FF: synthetic method
  284.    static Class class$(String var0) {
  285.       try {
  286.          return Class.forName(var0);
  287.       } catch (ClassNotFoundException var2) {
  288.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  289.       }
  290.    }
  291. }
  292.