You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/05/04 10:07:07 UTC
svn commit: r1099361 -
/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Author: ivaynberg
Date: Wed May 4 08:07:06 2011
New Revision: 1099361
URL: http://svn.apache.org/viewvc?rev=1099361&view=rev
Log:
remove nodes from selection when their parent is removed
Issue: WICKET-3328
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=1099361&r1=1099360&r2=1099361&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Wed May 4 08:07:06 2011
@@ -29,6 +29,7 @@ import java.util.Set;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreeNode;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
@@ -905,6 +906,25 @@ public abstract class AbstractTree exten
Object parentNode = removalEvent.getTreePath().getLastPathComponent();
TreeItem parentItem = nodeToItemMap.get(parentNode);
+ // unselect all removed items
+ List<Object> selection = new ArrayList<Object>(getTreeState().getSelectedNodes());
+ List<Object> removed = Arrays.asList(removalEvent.getChildren());
+ for (Object selectedNode : selection)
+ {
+ Object cursor = selectedNode;
+ while (cursor != null)
+ {
+ if (removed.contains(cursor))
+ {
+ getTreeState().selectNode(selectedNode, false);
+ }
+ if (cursor instanceof TreeNode)
+ {
+ cursor = ((TreeNode)cursor).getParent();
+ }
+ }
+ }
+
if (parentItem != null && isNodeVisible(parentNode))
{
if (isNodeExpanded(parentNode))
@@ -923,13 +943,11 @@ public abstract class AbstractTree exten
public void visitItem(TreeItem item)
{
removeItem(item);
- getTreeState().selectNode(item.getModelObject(), false);
}
});
parentItem.getChildren().remove(itemToDelete);
removeItem(itemToDelete);
- getTreeState().selectNode(itemToDelete.getModelObject(), false);
}
}
}