Author: knopp
Date: Tue May 20 15:16:37 2008
New Revision: 658464

URL: http://svn.apache.org/viewvc?rev=658464&view=rev
Log:
WICKET-1555

Removed:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/ExtendedTreeModel.java
Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.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=658464&r1=658463&r2=658464&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
 Tue May 20 15:16:37 2008
@@ -26,7 +26,6 @@
 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.IRequestTarget;
@@ -102,6 +101,8 @@
                /** tree item level - how deep is this item in tree */
                private final int level;
 
+               private final TreeItem parent;
+
                /**
                 * Construct.
                 * 
@@ -111,11 +112,14 @@
                 *            tree node
                 * @param level
                 *            current level
+                * @param parent
                 */
-               public TreeItem(String id, final Object node, int level)
+               public TreeItem(TreeItem parent, String id, final Object node, 
int level)
                {
                        super(id, new Model((Serializable)node));
 
+                       this.parent = parent;
+
                        nodeToItemMap.put(node, this);
                        this.level = level;
                        setOutputMarkupId(true);
@@ -127,6 +131,11 @@
                        }
                }
 
+               public TreeItem getParentItem()
+               {
+                       return parent;
+               }
+
                /**
                 * @return The children
                 */
@@ -156,14 +165,6 @@
                }
 
                /**
-                * @return parent item
-                */
-               public TreeItem getParentItem()
-               {
-                       return 
nodeToItemMap.get(getParentNode(getModelObject()));
-               }
-
-               /**
                 * Sets the children.
                 * 
                 * @param children
@@ -559,11 +560,11 @@
                                {
                                        if (isRootLess())
                                        {
-                                               rootItem = 
newTreeItem(rootNode, -1);
+                                               rootItem = newTreeItem(null, 
rootNode, -1);
                                        }
                                        else
                                        {
-                                               rootItem = 
newTreeItem(rootNode, 0);
+                                               rootItem = newTreeItem(null, 
rootNode, 0);
                                        }
                                        itemContainer.add(rootItem);
                                        buildItemChildren(rootItem);
@@ -776,7 +777,7 @@
                        {
                                Object node = e.getChildren()[i];
                                int index = e.getChildIndices()[i];
-                               TreeItem item = newTreeItem(node, 
parentItem.getLevel() + 1);
+                               TreeItem item = newTreeItem(parentItem, node, 
parentItem.getLevel() + 1);
                                itemContainer.add(item);
                                parentItem.getChildren().add(index, item);
 
@@ -1068,7 +1069,7 @@
                if (isNodeExpanded(item.getModelObject()))
                {
                        // build the items for children of the items' treenode.
-                       items = 
buildTreeItems(nodeChildren(item.getModelObject()), item.getLevel() + 1);
+                       items = buildTreeItems(item, 
nodeChildren(item.getModelObject()), item.getLevel() + 1);
                }
                else
                {
@@ -1082,13 +1083,14 @@
        /**
         * Builds (recursively) TreeItems for the given Iterator of TreeNodes.
         * 
+        * @param parent
         * @param nodes
         *            The nodes to build tree items for
         * @param level
         *            The current level
         * @return List with new tree items
         */
-       private final List<TreeItem> buildTreeItems(Iterator<Object> nodes, int 
level)
+       private final List<TreeItem> buildTreeItems(TreeItem parent, 
Iterator<Object> nodes, int level)
        {
                List<TreeItem> result = new ArrayList<TreeItem>();
 
@@ -1097,7 +1099,7 @@
                {
                        Object node = nodes.next();
                        // create tree item
-                       TreeItem item = newTreeItem(node, level);
+                       TreeItem item = newTreeItem(parent, node, level);
                        itemContainer.add(item);
 
                        // builds it children (recursively)
@@ -1272,7 +1274,7 @@
 
                                        item.remove();
 
-                                       item = newTreeItem(node, level, id);
+                                       item = newTreeItem(parent, node, level, 
id);
                                        itemContainer.add(item);
 
                                        item.setChildren(children);
@@ -1366,38 +1368,37 @@
         */
        public Object getParentNode(Object node)
        {
-               if (getModelObject() instanceof ExtendedTreeModel)
+               TreeItem item = nodeToItemMap.get(node);
+               if (item == null)
                {
-                       return 
((ExtendedTreeModel)getModelObject()).getParent(node);
-               }
-               else if (node instanceof TreeNode)
-               {
-                       return ((TreeNode)node).getParent();
+                       return null;
                }
                else
                {
-                       throw new IllegalStateException(
-                               "Couldn't determine node parent. Either the 
tree model must implement ParentTreeModel or Node must implement TreeNode.");
+                       TreeItem parent = item.getParentItem();
+                       return parent == null ? null : parent.getModelObject();
                }
        }
 
        /**
         * Creates a tree item for given node.
         * 
+        * @param parent
         * @param node
         *            The tree node
         * @param level
-        *            The level
+        *            The level *
         * @return The new tree item
         */
-       private final TreeItem newTreeItem(Object node, int level)
+       private final TreeItem newTreeItem(TreeItem parent, Object node, int 
level)
        {
-               return new TreeItem("" + idCounter++, node, level);
+               return new TreeItem(parent, "" + idCounter++, node, level);
        }
 
        /**
         * Creates a tree item for given node with specified id.
         * 
+        * @param parent
         * @param node
         *            The tree node
         * @param level
@@ -1406,9 +1407,9 @@
         *            the component id
         * @return The new tree item
         */
-       private final TreeItem newTreeItem(Object node, int level, String id)
+       private final TreeItem newTreeItem(TreeItem parent, Object node, int 
level, String id)
        {
-               return new TreeItem(id, node, level);
+               return new TreeItem(parent, id, node, level);
        }
 
        /**

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java?rev=658464&r1=658463&r2=658464&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java
 Tue May 20 15:16:37 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.markup.html.tree;
 
-import javax.swing.tree.TreeNode;
+import javax.swing.tree.TreeModel;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.ResourceReference;
@@ -74,16 +74,16 @@
         * @return icon image component
         */
        protected Component newImageComponent(String componentId, final 
BaseTree tree,
-                       final IModel model)
+               final IModel model)
        {
                return new Image(componentId)
                {
                        private static final long serialVersionUID = 1L;
 
+                       @Override
                        protected ResourceReference getImageResourceReference()
                        {
-                               return 
LabelIconPanel.this.getImageResourceReference(tree, (TreeNode)model
-                                               .getObject());
+                               return 
LabelIconPanel.this.getImageResourceReference(tree, model.getObject());
                        }
                };
        }
@@ -108,9 +108,10 @@
         * @param node
         * @return image resource reference
         */
-       protected ResourceReference getImageResourceReference(BaseTree tree, 
TreeNode node)
+       protected ResourceReference getImageResourceReference(BaseTree tree, 
Object node)
        {
-               if (node.isLeaf())
+               TreeModel model = (TreeModel)tree.getModelObject();
+               if (model.isLeaf(node))
                {
                        return getResourceItemLeaf(node);
                }
@@ -144,7 +145,7 @@
         * @param node
         * @return resource reference
         */
-       protected ResourceReference getResourceFolderClosed(TreeNode node)
+       protected ResourceReference getResourceFolderClosed(Object node)
        {
                return RESOURCE_FOLDER_CLOSED;
        }
@@ -155,7 +156,7 @@
         * @param node
         * @return resource reference
         */
-       protected ResourceReference getResourceFolderOpen(TreeNode node)
+       protected ResourceReference getResourceFolderOpen(Object node)
        {
                return RESOURCE_FOLDER_OPEN;
        }
@@ -166,15 +167,15 @@
         * @param node
         * @return resource reference
         */
-       protected ResourceReference getResourceItemLeaf(TreeNode node)
+       protected ResourceReference getResourceItemLeaf(Object node)
        {
                return RESOURCE_ITEM;
        }
 
        private static final ResourceReference RESOURCE_FOLDER_OPEN = new 
ResourceReference(
-                       LabelIconPanel.class, "res/folder-open.gif");
+               LabelIconPanel.class, "res/folder-open.gif");
        private static final ResourceReference RESOURCE_FOLDER_CLOSED = new 
ResourceReference(
-                       LabelIconPanel.class, "res/folder-closed.gif");
+               LabelIconPanel.class, "res/folder-closed.gif");
        private static final ResourceReference RESOURCE_ITEM = new 
ResourceReference(
-                       LabelIconPanel.class, "res/item.gif");
+               LabelIconPanel.class, "res/item.gif");
 }

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java?rev=658464&r1=658463&r2=658464&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java
 Tue May 20 15:16:37 2008
@@ -16,8 +16,6 @@
  */
 package org.apache.wicket.markup.html.tree;
 
-import javax.swing.tree.TreeNode;
-
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.model.IModel;
@@ -49,6 +47,7 @@
         * @see 
org.apache.wicket.markup.html.tree.LabelIconPanel#addComponents(org.apache.wicket.model.IModel,
         *      org.apache.wicket.markup.html.tree.BaseTree)
         */
+       @Override
        protected void addComponents(final IModel model, final BaseTree tree)
        {
                BaseTree.ILinkCallback callback = new BaseTree.ILinkCallback()
@@ -57,7 +56,7 @@
 
                        public void onClick(AjaxRequestTarget target)
                        {
-                               onNodeLinkClicked((TreeNode)model.getObject(), 
tree, target);
+                               onNodeLinkClicked(model.getObject(), tree, 
target);
                        }
                };
 
@@ -77,7 +76,7 @@
         * @param tree
         * @param target
         */
-       protected void onNodeLinkClicked(TreeNode node, BaseTree tree, 
AjaxRequestTarget target)
+       protected void onNodeLinkClicked(Object node, BaseTree tree, 
AjaxRequestTarget target)
        {
                tree.getTreeState().selectNode(node, 
!tree.getTreeState().isNodeSelected(node));
                tree.updateTree(target);


Reply via email to