Index: javax/swing/JTree.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JTree.java,v retrieving revision 1.33 diff -u -r1.33 JTree.java --- javax/swing/JTree.java 10 Aug 2005 17:46:17 -0000 1.33 +++ javax/swing/JTree.java 15 Aug 2005 18:24:41 -0000 @@ -1277,9 +1277,17 @@ } public void collapsePath(TreePath path) - { - setExpandedState(path, false); - } + { + try + { + fireTreeWillCollapse(path); + } + catch (ExpandVetoException ev) + { + } + setExpandedState(path, false); + fireTreeCollapsed(path); + } public void collapseRow(int row) { @@ -1293,13 +1301,22 @@ } public void expandPath(TreePath path) - { - // Don't expand if last path component is a leaf node. - if ((path == null) || (treeModel.isLeaf(path.getLastPathComponent()))) - return; - - setExpandedState(path, true); - } + { + // Don't expand if last path component is a leaf node. + if ((path == null) || (treeModel.isLeaf(path.getLastPathComponent()))) + return; + + try + { + fireTreeWillExpand(path); + } + catch (ExpandVetoException ev) + { + } + + setExpandedState(path, true); + fireTreeExpanded(path); + } public void expandRow(int row) { @@ -1506,13 +1523,8 @@ private void doExpandParents(TreePath path, boolean state) { TreePath parent = path.getParentPath(); - if (isExpanded(parent)) - { - nodeStates.put(path, state ? EXPANDED : COLLAPSED); - return; - } - - if (parent != null) + + if (!isExpanded(parent) && parent != null) doExpandParents(parent, false); nodeStates.put(path, state ? EXPANDED : COLLAPSED); @@ -1522,7 +1534,6 @@ { if (path == null) return; - TreePath parent = path.getParentPath(); doExpandParents(path, state); Index: javax/swing/plaf/basic/BasicTreeUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicTreeUI.java,v retrieving revision 1.60 diff -u -r1.60 BasicTreeUI.java --- javax/swing/plaf/basic/BasicTreeUI.java 12 Aug 2005 17:56:48 -0000 1.60 +++ javax/swing/plaf/basic/BasicTreeUI.java 15 Aug 2005 18:24:42 -0000 @@ -1733,17 +1733,7 @@ if (e.isControlDown()) tree.setLeadSelectionPath(newPath); else if (!mod.isLeaf(next) && e.isShiftDown()) - { - BasicTreeUI.this.tree.expandPath(newPath); - try - { - BasicTreeUI.this.tree.fireTreeWillExpand(newPath); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeExpanded(newPath); - } + BasicTreeUI.this.tree.expandPath(newPath); } } // UP, KP_UP @@ -1761,17 +1751,7 @@ if (e.isControlDown()) tree.setLeadSelectionPath(newPath); else if (!mod.isLeaf(prev) && e.isShiftDown()) - { - BasicTreeUI.this.tree.expandPath(newPath); - try - { - BasicTreeUI.this.tree.fireTreeWillExpand(newPath); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeExpanded(newPath); - } + BasicTreeUI.this.tree.expandPath(newPath); } } // LEFT, KP_LEFT @@ -1782,17 +1762,7 @@ Object p = getParent(mod.getRoot(), last); if (!mod.isLeaf(last) && BasicTreeUI.this.tree.isExpanded(path)) - { - BasicTreeUI.this.tree.collapsePath(path); - try - { - BasicTreeUI.this.tree.fireTreeWillCollapse(path); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeCollapsed(path); - } + BasicTreeUI.this.tree.collapsePath(path); else if (p != null) BasicTreeUI.this.selectPath(BasicTreeUI.this.tree, new TreePath(getPathToRoot(p, 0))); @@ -1804,17 +1774,7 @@ TreePath path = new TreePath(getPathToRoot(last, 0)); if (!mod.isLeaf(last) && BasicTreeUI.this.tree.isCollapsed(path)) - { - BasicTreeUI.this.tree.expandPath(path); - try - { - BasicTreeUI.this.tree.fireTreeWillExpand(path); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeExpanded(path); - } + BasicTreeUI.this.tree.expandPath(path); else { Object next = BasicTreeUI.this.getNextVisibleNode(last); @@ -1835,29 +1795,9 @@ if (!mod.isLeaf(last)) { if (BasicTreeUI.this.tree.isExpanded(path)) - { - BasicTreeUI.this.tree.collapsePath(path); - try - { - BasicTreeUI.this.tree.fireTreeWillCollapse(path); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeCollapsed(path); - } + BasicTreeUI.this.tree.collapsePath(path); else - { - BasicTreeUI.this.tree.expandPath(path); - try - { - BasicTreeUI.this.tree.fireTreeWillExpand(path); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeExpanded(path); - } + BasicTreeUI.this.tree.expandPath(path); } } } @@ -2013,29 +1953,9 @@ lastClicked = null; BasicTreeUI.this.tree.getSelectionModel().clearSelection(); if (BasicTreeUI.this.tree.isExpanded(path)) - { - BasicTreeUI.this.tree.collapsePath(path); - try - { - BasicTreeUI.this.tree.fireTreeWillCollapse(path); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeCollapsed(path); - } + BasicTreeUI.this.tree.collapsePath(path); else - { - BasicTreeUI.this.tree.expandPath(path); - try - { - BasicTreeUI.this.tree.fireTreeWillExpand(path); - } - catch (ExpandVetoException ev) - { - } - BasicTreeUI.this.tree.fireTreeExpanded(path); - } + BasicTreeUI.this.tree.expandPath(path); } BasicTreeUI.this.selectPath(BasicTreeUI.this.tree, path); @@ -2620,7 +2540,7 @@ } if (!mod.isLeaf(startNode) - && tree.isExpanded(new TreePath(getPathToRoot(startNode, 0))) + && tree.isExpanded(new TreePath(getPathToRoot(startNode, 0))) && mod.getChildCount(startNode) > 0) { Object child = mod.getChild(startNode, 0);