For some reason, an exception was being thrown for a null root. It is
legal to set the root of a tree to null. This is now fixed. I took out
some revalidate calls that were not needed.

2005-12-20  Lillian Angel  <[EMAIL PROTECTED]>

        * javax/swing/plaf/basic/BasicTreeUI.java
        (pathWasExpanded): Removed unneeded revalidate call.
        (pathWasCollapsed): Likewise.
        (installUI): Fixed to check for null root.
        (paint): Fixed to always update path.
        (toggleExpandState): Removed call to update path.
        (editingStopped): Likewise.
        (editingCanceled): Likewise.
        (treeStructureChanged): Likewise.
        (treeExpanded): Likewise.
        (treeCollapsed): Likewise.
        (treeNodesChanged): Likewise.
        (treeNodesInserted): Likewise.
        (treeNodesRemoved): Likewise.
        (updateCurrentVisiblePath): Added check for null root. If root 
        is null, nothing should be painted or in the path.
        * javax/swing/tree/DefaultTreeModel.java
        (setRoot): Root can be null.

Index: javax/swing/plaf/basic/BasicTreeUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicTreeUI.java,v
retrieving revision 1.115
diff -u -r1.115 BasicTreeUI.java
--- javax/swing/plaf/basic/BasicTreeUI.java	16 Nov 2005 16:55:20 -0000	1.115
+++ javax/swing/plaf/basic/BasicTreeUI.java	20 Dec 2005 21:29:00 -0000
@@ -1201,7 +1201,6 @@
   protected void pathWasExpanded(TreePath path)
   {
     validCachedPreferredSize = false;
-    tree.revalidate();
     tree.repaint();
   }
 
@@ -1211,7 +1210,6 @@
   protected void pathWasCollapsed(TreePath path)
   {
     validCachedPreferredSize = false;
-    tree.revalidate();
     tree.repaint();
   }
 
@@ -1354,9 +1352,13 @@
     setModel(mod);
     if (mod != null)
       {
-        TreePath path = new TreePath(mod.getRoot());
-        if (!tree.isExpanded(path))
-          toggleExpandState(path);
+        Object root = mod.getRoot();
+        if (root != null)
+          {
+            TreePath path = new TreePath(root);
+            if (!tree.isExpanded(path))
+              toggleExpandState(path);
+          }
       }
     treeSelectionModel = tree.getSelectionModel();
 
@@ -1406,8 +1408,7 @@
   public void paint(Graphics g, JComponent c)
   {
     JTree tree = (JTree) c;
-    if (currentVisiblePath == null)
-      updateCurrentVisiblePath();
+    updateCurrentVisiblePath();
 
     Rectangle clip = g.getClipBounds();
     Insets insets = tree.getInsets();
@@ -1636,7 +1637,7 @@
         tree.add(editingComponent.getParent());
         editingComponent.getParent().validate();
         validCachedPreferredSize = false;
-        tree.revalidate();
+        
         ((JTextField) editingComponent).requestFocusInWindow(false);
         editorTimer.start();
         return true;
@@ -1725,7 +1726,6 @@
       tree.collapsePath(path);
     else
       tree.expandPath(path);
-    updateCurrentVisiblePath();
   }
 
   /**
@@ -2082,7 +2082,6 @@
       tree.requestFocusInWindow(false);
       editorTimer.stop();
       validCachedPreferredSize = false;
-      tree.revalidate();
       tree.repaint();
     }
 
@@ -2113,7 +2112,6 @@
       editorTimer.stop();
       isEditing = false;
       validCachedPreferredSize = false;
-      tree.revalidate();
       tree.repaint();
     }
   }// CellEditorHandler
@@ -2544,8 +2542,6 @@
       if ((event.getPropertyName()).equals("rootVisible"))
         {
           validCachedPreferredSize = false;
-          updateCurrentVisiblePath();
-          tree.revalidate();
           tree.repaint();
         }
     }
@@ -2642,8 +2638,6 @@
     public void treeExpanded(TreeExpansionEvent event)
     {
       validCachedPreferredSize = false;
-      updateCurrentVisiblePath();
-      tree.revalidate();
       tree.repaint();
     }
 
@@ -2656,8 +2650,6 @@
     public void treeCollapsed(TreeExpansionEvent event)
     {
       validCachedPreferredSize = false;
-      updateCurrentVisiblePath();
-      tree.revalidate();
       tree.repaint();
     }
   }// TreeExpansionHandler
@@ -2847,8 +2839,6 @@
     public void treeNodesChanged(TreeModelEvent e)
     {
       validCachedPreferredSize = false;
-      updateCurrentVisiblePath();
-      tree.revalidate();
       tree.repaint();
     }
 
@@ -2863,8 +2853,6 @@
     public void treeNodesInserted(TreeModelEvent e)
     {
       validCachedPreferredSize = false;
-      updateCurrentVisiblePath();
-      tree.revalidate();
       tree.repaint();
     }
 
@@ -2882,8 +2870,6 @@
     public void treeNodesRemoved(TreeModelEvent e)
     {
       validCachedPreferredSize = false;
-      updateCurrentVisiblePath();
-      tree.revalidate();
       tree.repaint();
     }
 
@@ -2902,9 +2888,7 @@
       if (e.getPath().length == 1
           && !e.getPath()[0].equals(treeModel.getRoot()))
         tree.expandPath(new TreePath(treeModel.getRoot()));
-      updateCurrentVisiblePath();
       validCachedPreferredSize = false;
-      tree.revalidate();
       tree.repaint();
     }
   }// TreeModelHandler
@@ -3667,6 +3651,9 @@
       return;
 
     Object next = treeModel.getRoot();
+    if (next == null)
+      return;
+    
     TreePath rootPath = new TreePath(next);
     Rectangle bounds = getPathBounds(tree, rootPath);
     
Index: javax/swing/tree/DefaultTreeModel.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/tree/DefaultTreeModel.java,v
retrieving revision 1.17
diff -u -r1.17 DefaultTreeModel.java
--- javax/swing/tree/DefaultTreeModel.java	14 Oct 2005 22:37:07 -0000	1.17
+++ javax/swing/tree/DefaultTreeModel.java	20 Dec 2005 21:29:00 -0000
@@ -148,12 +148,6 @@
    */
   public void setRoot(TreeNode root)
   {
-    // Sanity Check
-    if (root == null)
-      {
-        throw new IllegalArgumentException("null root");
-      }
-    // Set new root
     this.root = root;
   }
 
_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to