Author: knopp
Date: Sat Apr 19 16:47:24 2008
New Revision: 649864
URL: http://svn.apache.org/viewvc?rev=649864&view=rev
Log:
allow to implement custom behavior on getParentNode
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
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=649864&r1=649863&r2=649864&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
Sat Apr 19 16:47:24 2008
@@ -156,7 +156,7 @@
*/
public TreeItem getParentItem()
{
- return
(TreeItem)nodeToItemMap.get(((TreeNode)getModelObject()).getParent());
+ return
(TreeItem)nodeToItemMap.get(getParentNode((TreeNode)getModelObject()));
}
/**
@@ -778,6 +778,12 @@
if (isNodeVisible(parent) && isNodeExpanded(parent))
{
TreeItem parentItem =
(TreeItem)nodeToItemMap.get(parent);
+
+ if (parentItem.getChildren().isEmpty())
+ {
+ invalidateNode(parent, true);
+ }
+
for (int i = 0; i < e.getChildren().length; ++i)
{
TreeNode node = (TreeNode)e.getChildren()[i];
@@ -805,7 +811,7 @@
if (isNodeVisible(parent) && isNodeExpanded(parent))
{
-
+ boolean nonEmpty = !parentItem.getChildren().isEmpty();
for (int i = 0; i < e.getChildren().length; ++i)
{
TreeNode node = (TreeNode)e.getChildren()[i];
@@ -832,6 +838,10 @@
removeItem(item);
}
}
+ if (nonEmpty && parentItem.getChildren().isEmpty())
+ {
+ invalidateNode(parent, true);
+ }
}
}
@@ -1333,7 +1343,7 @@
*/
private final boolean isNodeVisible(TreeNode node)
{
- while (node.getParent() != null)
+ while (getParentNode(node) != null)
{
if (isNodeExpanded(node.getParent()) == false)
{
@@ -1342,6 +1352,16 @@
node = node.getParent();
}
return true;
+ }
+
+ /**
+ * Returns parent node of given node.
+ * @param node
+ * @return
+ */
+ protected TreeNode getParentNode(TreeNode node)
+ {
+ return node.getParent();
}
/**