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 2010/09/29 09:37:26 UTC
svn commit: r1002500 - in /wicket/trunk/wicket:
.settings/org.eclipse.jdt.core.prefs
src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Author: ivaynberg
Date: Wed Sep 29 07:37:26 2010
New Revision: 1002500
URL: http://svn.apache.org/viewvc?rev=1002500&view=rev
Log:
Issue: WICKET-3072
Modified:
wicket/trunk/wicket/.settings/org.eclipse.jdt.core.prefs
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Modified: wicket/trunk/wicket/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/.settings/org.eclipse.jdt.core.prefs?rev=1002500&r1=1002499&r2=1002500&view=diff
==============================================================================
--- wicket/trunk/wicket/.settings/org.eclipse.jdt.core.prefs (original)
+++ wicket/trunk/wicket/.settings/org.eclipse.jdt.core.prefs Wed Sep 29 07:37:26 2010
@@ -1,4 +1,4 @@
-#Wed Sep 10 11:28:56 PDT 2008
+#Wed Sep 29 00:31:48 PDT 2010
eclipse.preferences.version=1
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
org.eclipse.jdt.core.builder.cleanOutputFolder=clean
@@ -9,9 +9,9 @@ org.eclipse.jdt.core.circularClasspath=e
org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -88,7 +88,7 @@ org.eclipse.jdt.core.compiler.problem.un
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.source=1.6
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=1002500&r1=1002499&r2=1002500&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Wed Sep 29 07:37:26 2010
@@ -58,7 +58,7 @@ import org.apache.wicket.util.visit.IVis
* This class encapsulates the logic for displaying and (partial) updating the tree. Actual
* presentation is out of scope of this class. User should derive they own tree (if needed) from
* {@link BaseTree} (recommended).
- *
+ *
* @author Matej Knopp
*/
public abstract class AbstractTree extends Panel
@@ -81,7 +81,7 @@ public abstract class AbstractTree exten
{
/**
* Visits the tree item.
- *
+ *
* @param item
* the item to visit
*/
@@ -116,7 +116,7 @@ public abstract class AbstractTree exten
/**
* Construct.
- *
+ *
* @param id
* The component id
* @param node
@@ -177,7 +177,7 @@ public abstract class AbstractTree exten
/**
* Sets the children.
- *
+ *
* @param children
* The children
*/
@@ -188,7 +188,7 @@ public abstract class AbstractTree exten
/**
* Whether to render children.
- *
+ *
* @return whether to render children
*/
protected final boolean isRenderChildren()
@@ -241,7 +241,7 @@ public abstract class AbstractTree exten
}
/**
- *
+ *
* @return model object
*/
public Object getModelObject()
@@ -366,7 +366,7 @@ public abstract class AbstractTree exten
/**
* Construct.
- *
+ *
* @param id
* The component id
*/
@@ -467,7 +467,7 @@ public abstract class AbstractTree exten
/**
* Tree constructor
- *
+ *
* @param id
* The component id
*/
@@ -479,7 +479,7 @@ public abstract class AbstractTree exten
/**
* Tree constructor
- *
+ *
* @param id
* The component id
* @param model
@@ -504,7 +504,7 @@ public abstract class AbstractTree exten
}
/**
- *
+ *
* @return model
*/
@SuppressWarnings("unchecked")
@@ -522,7 +522,7 @@ public abstract class AbstractTree exten
}
/**
- *
+ *
* @param model
* @return this
*/
@@ -533,7 +533,7 @@ public abstract class AbstractTree exten
}
/**
- *
+ *
* @param model
* @return this
*/
@@ -545,7 +545,7 @@ public abstract class AbstractTree exten
/**
* Returns the TreeState of this tree.
- *
+ *
* @return Tree state instance
*/
public ITreeState getTreeState()
@@ -704,7 +704,7 @@ public abstract class AbstractTree exten
/**
* Determines whether the TreeNode needs to be rebuilt if it is selected or deselected
- *
+ *
* @return true if the node should be rebuilt after (de)selection, false otherwise
*/
protected boolean isForceRebuildOnSelectionChange()
@@ -714,7 +714,7 @@ public abstract class AbstractTree exten
/**
* Sets whether the root of the tree should be visible.
- *
+ *
* @param rootLess
* whether the root should be visible
*/
@@ -772,10 +772,10 @@ public abstract class AbstractTree exten
/**
* Marks the last but one visible child node of the given item as dirty, if give child is the
* last item of parent.
- *
+ *
* We need this to refresh the previous visible item in case the inserted / deleted item was
* last. The reason is that the line shape of previous item changes from L to |- .
- *
+ *
* @param parent
* @param child
*/
@@ -878,54 +878,51 @@ public abstract class AbstractTree exten
/**
* @see javax.swing.event.TreeModelListener#treeNodesRemoved(javax.swing.event.TreeModelEvent)
*/
- public final void treeNodesRemoved(TreeModelEvent e)
+ public final void treeNodesRemoved(TreeModelEvent removalEvent)
{
if (dirtyAll)
{
return;
}
- // get the parent node of inserted nodes
- Object parent = e.getTreePath().getLastPathComponent();
- TreeItem parentItem = nodeToItemMap.get(parent);
+ // get the parent node of deleted nodes
+ TreeNode parentNode = (TreeNode)removalEvent.getTreePath().getLastPathComponent();
+ TreeItem parentItem = nodeToItemMap.get(parentNode);
- if (parentItem != null && isNodeVisible(parent) && isNodeExpanded(parent))
+ if (parentItem != null && isNodeVisible(parentNode))
{
- boolean nonEmpty = parentItem.getChildren() != null &&
- !parentItem.getChildren().isEmpty();
- for (int i = 0; i < e.getChildren().length; ++i)
+ if (parentNode.getChildCount() == 0)
{
- Object node = e.getChildren()[i];
+ // rebuild parent's icon to show it no longer has children
+ invalidateNode(parentNode, true);
+ }
- TreeItem item = nodeToItemMap.get(node);
- if (item != null)
+ if (isNodeExpanded(parentNode))
+ {
+ // deleted nodes were visible; we need to delete their TreeItems
+ for (Object deletedNode : removalEvent.getChildren())
{
- markTheLastButOneChildDirty(parentItem, item);
-
- // go though item children and remove every one of them
- visitItemChildren(item, new IItemCallback()
+ TreeItem itemToDelete = nodeToItemMap.get(deletedNode);
+ if (itemToDelete != null)
{
- public void visitItem(TreeItem item)
- {
- removeItem(item);
-
- // deselect the node
- getTreeState().selectNode(item.getModelObject(), false);
- }
- });
+ markTheLastButOneChildDirty(parentItem, itemToDelete);
- parentItem.getChildren().remove(item);
-
- removeItem(item);
-
- getTreeState().selectNode(item.getModelObject(), false);
+ // remove all the deleted item's children
+ visitItemChildren(itemToDelete, new IItemCallback()
+ {
+ public void visitItem(TreeItem item)
+ {
+ removeItem(item);
+ getTreeState().selectNode(item.getModelObject(), false);
+ }
+ });
+ parentItem.getChildren().remove(itemToDelete);
+ removeItem(itemToDelete);
+ getTreeState().selectNode(itemToDelete.getModelObject(), false);
+ }
}
}
- if (nonEmpty && parentItem.getChildren().isEmpty())
- {
- invalidateNode(parent, true);
- }
}
}