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