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);
-                       }
                }
        }
 


Reply via email to