You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2007/06/11 01:58:23 UTC

svn commit: r545982 [1/2] - in /incubator/wicket/trunk: jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/ jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/ jdk-1.5/wicket-examples/ jdk-1.5/wicket-examples/src/main/java...

Author: knopp
Date: Sun Jun 10 16:58:22 2007
New Revision: 545982

URL: http://svn.apache.org/viewvc?view=rev&rev=545982
Log:
WICKET-633 - Tree components cleanup

New Tree components

Added:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.html
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.html
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelTree.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.html
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkTree.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree-images.png   (with props)
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree.css
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-closed.gif   (with props)
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-open.gif   (with props)
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/item.gif   (with props)
    incubator/wicket/trunk/jdk-1.5/wicket-examples/velocity.log.1
Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/package.html
    incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java
    incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html
    incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java
    incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml
    incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/style.css

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?view=diff&rev=545982&r1=545981&r2=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Sun Jun 10 16:58:22 2007
@@ -236,7 +236,7 @@
 		
 		protected void onBeforeRender()
 		{
-			AbstractTree.this.attach();
+			AbstractTree.this.onBeforeRender();
 			super.onBeforeRender();
 		}
 	}
@@ -573,7 +573,7 @@
 	{
 		if (isNodeVisible(node))
 		{
-			invalidateNode(node, true);
+			invalidateNode(node, isForceRebuildOnSelectionChange());
 		}
 	}
 
@@ -584,9 +584,19 @@
 	{
 		if (isNodeVisible(node))
 		{
-			invalidateNode(node, true);
+			invalidateNode(node, isForceRebuildOnSelectionChange());
 		}
 	}
+	
+	/**
+	 * 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() 
+	{
+		return true;
+	}
 
 	/**
 	 * Sets whether the root of the tree should be visible.
@@ -1053,7 +1063,7 @@
 	}
 
 	//
-	// State and Model's callbacks
+	// State and Model callbacks
 	//
 
 	/**

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.html?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.html (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.html Sun Jun 10 16:58:22 2007
@@ -0,0 +1,22 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<wicket:panel>
+<table wicket:id="i" class="wicket-tree-content"><tr>
+<a wicket:id="junctionLink"></a>
+<td wicket:id="nodeComponent"></td>
+</tr></table>
+</wicket:panel>
\ No newline at end of file

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/BaseTree.java Sun Jun 10 16:58:22 2007
@@ -0,0 +1,496 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.tree;
+
+import javax.swing.tree.TreeNode;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.IClusterable;
+import org.apache.wicket.IComponentBorder;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.ResourceReference;
+import org.apache.wicket.Response;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.behavior.AbstractBehavior;
+import org.apache.wicket.behavior.HeaderContributor;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.resources.CompressedResourceReference;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.lang.EnumeratedType;
+import org.apache.wicket.util.string.Strings;
+
+/**
+ * An abstract Tree component that should serve as a base for custom Tree
+ * Components.
+ * 
+ * It has one abstract method - {@link #newNodeComponent(String, IModel)} that
+ * needs to be overriden.
+ * 
+ * @author Matej Knopp
+ */
+public abstract class BaseTree extends AbstractTree
+{
+	/**
+	 * Construct.
+	 * 
+	 * @param id
+	 */
+	public BaseTree(String id)
+	{
+		this(id, null);
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param id
+	 * @param model
+	 */
+	public BaseTree(String id, IModel model)
+	{
+		super(id, model);
+
+		ResourceReference css = getCSS();
+		if (css != null)
+		{
+			add(HeaderContributor.forCss(css));
+		}
+	}
+
+	// default stylesheet resource
+	private static final ResourceReference CSS = new CompressedResourceReference(BaseTree.class,
+			"res/base-tree.css");
+
+	/**
+	 * Returns the stylesheet reference
+	 * 
+	 * @return stylesheet reference
+	 */
+	protected ResourceReference getCSS()
+	{
+		return CSS;
+	}
+
+	private static final long serialVersionUID = 1L;
+
+	private static final String JUNCTION_LINK_ID = "junctionLink";
+	private static final String NODE_COMPONENT_ID = "nodeComponent";
+
+	/**
+	 * @see org.apache.wicket.markup.html.tree.AbstractTree#populateTreeItem(org.apache.wicket.markup.html.WebMarkupContainer,
+	 *      int)
+	 */
+	protected void populateTreeItem(WebMarkupContainer item, int level)
+	{
+		// add juunction link
+		TreeNode node = (TreeNode)item.getModelObject();
+		Component junctionLink = newJunctionLink(item, JUNCTION_LINK_ID, node);
+		junctionLink.setComponentBorder(new JunctionBorder(node, level));
+		item.add(junctionLink);
+
+		// add node component
+		Component nodeComponent = newNodeComponent(NODE_COMPONENT_ID, item.getModel());
+		item.add(nodeComponent);
+
+		// add behavior that conditionally adds the "selected" CSS class name
+		item.add(new AbstractBehavior()
+		{
+			private static final long serialVersionUID = 1L;
+
+			public void onComponentTag(Component component, ComponentTag tag)
+			{
+				TreeNode node = (TreeNode)component.getModelObject();
+				if (getTreeState().isNodeSelected(node))
+				{
+					CharSequence oldClass = tag.getString("class");
+					if (Strings.isEmpty(oldClass))
+					{
+						tag.put("class", getSelectedClass());
+					}
+					else
+					{
+						tag.put("class", oldClass + " " + getSelectedClass());
+					}
+				}
+			}
+		});
+	}
+
+	/**
+	 * Returns the class name that will be added to row's CSS class for selected
+	 * rows
+	 * 
+	 * @return CSS class name
+	 */
+	protected String getSelectedClass()
+	{
+		return "selected";
+	}
+
+	/**
+	 * Creates a new component for the given TreeNode.
+	 * 
+	 * @param id
+	 *            component ID
+	 * @param model
+	 *            model that returns the node
+	 * @return component for node
+	 */
+	protected abstract Component newNodeComponent(String id, IModel model);
+
+	/**
+	 * Returns whether the provided node is last child of it's parent.
+	 * 
+	 * @param node
+	 *            The node
+	 * @return whether the provided node is the last child
+	 */
+	private static boolean isNodeLast(TreeNode node)
+	{
+		TreeNode parent = node.getParent();
+		if (parent == null)
+		{
+			return true;
+		}
+		else
+		{
+			return parent.getChildAt(parent.getChildCount() - 1).equals(node);
+		}
+	}
+
+	/**
+	 * Class that wraps a link (or span) with a junction table cells.
+	 * @author Matej Knopp
+	 */
+	private static class JunctionBorder implements IComponentBorder
+	{
+		private static final long serialVersionUID = 1L;
+
+		private TreeNode node;
+		private int level;
+
+		/**
+		 * Construct.
+		 * 
+		 * @param node
+		 * @param level
+		 */
+		public JunctionBorder(TreeNode node, int level)
+		{
+			this.node = node;
+			this.level = level;
+		}
+
+		public void renderAfter(Component component)
+		{
+			RequestCycle.get().getResponse().write("</td>");
+		}
+
+		public void renderBefore(Component component)
+		{
+			Response response = RequestCycle.get().getResponse();
+			TreeNode parent = node.getParent();
+
+			CharSequence classes[] = new CharSequence[level];
+			for (int i = 0; i < level; ++i)
+			{
+				if (isNodeLast(parent))
+				{
+					classes[i] = "spacer";
+				}
+				else
+				{
+					classes[i] = "line";
+				}
+
+				parent = parent.getParent();
+			}
+
+			for (int i = level - 1; i >= 0; --i)
+			{
+				response.write("<td class=\"" + classes[i] + "\"><span></span></td>");
+			}
+
+			if (isNodeLast(node))
+			{
+				response.write("<td class=\"half-line\">");
+			}
+			else
+			{
+				response.write("<td class=\"line\">");
+			}
+		}
+	};
+
+	/**
+	 * Creates the junction link for given node. Also (optionally) creates the
+	 * junction image. If the node is a leaf (it has no children), the created
+	 * junction link is non-functional.
+	 * 
+	 * @param parent
+	 *            parent component of the link
+	 * 
+	 * @param id
+	 *            wicket:id of the component
+	 * 
+	 * @param imageId
+	 *            wicket:id of the image. this can be null, in that case image
+	 *            is not created. image is supposed to be placed on the link
+	 *            (link is parent of image)
+	 * 
+	 * @param node
+	 *            tree node for which the link should be created.
+	 * @return The link component
+	 */
+	protected Component newJunctionLink(MarkupContainer parent, final String id, final TreeNode node)
+	{
+		final MarkupContainer junctionLink;
+
+		if (node.isLeaf() == false)
+		{
+			junctionLink = newLink(id, new ILinkCallback()
+			{
+				private static final long serialVersionUID = 1L;
+
+				public void onClick(AjaxRequestTarget target)
+				{
+					if (isNodeExpanded(node))
+					{
+						getTreeState().collapseNode(node);
+					}
+					else
+					{
+						getTreeState().expandNode(node);
+					}
+					onJunctionLinkClicked(target, node);
+					updateTree(target);
+				}
+			});
+			junctionLink.add(new AbstractBehavior()
+			{
+				private static final long serialVersionUID = 1L;
+
+				public void onComponentTag(Component component, ComponentTag tag)
+				{
+					if (isNodeExpanded(node))
+					{
+						tag.put("class", "junction-open");
+					}
+					else
+					{
+						tag.put("class", "junction-closed");
+					}
+				}
+			});
+		}
+		else
+		{
+			junctionLink = new WebMarkupContainer(id)
+			{
+				private static final long serialVersionUID = 1L;
+
+				/**
+				 * @see org.apache.wicket.Component#onComponentTag(org.apache.wicket.markup.ComponentTag)
+				 */
+				protected void onComponentTag(ComponentTag tag)
+				{
+					super.onComponentTag(tag);
+					tag.setName("span");
+					tag.put("class", "junction-corner");
+				}
+			};
+
+		}
+
+		return junctionLink;
+	}
+
+	/**
+	 * Callback function called after user clicked on an junction link. The node
+	 * has already been expanded/collapsed (depending on previous status).
+	 * 
+	 * @param target
+	 *            Request target - may be null on non-ajax call
+	 * 
+	 * @param node
+	 *            Node for which this callback is relevant
+	 */
+	protected void onJunctionLinkClicked(AjaxRequestTarget target, TreeNode node)
+	{
+	}
+
+	/**
+	 * The type of junction links and node selection links.
+	 * <dl>
+	 * <dt>Regular link</dt>
+	 * <dd>Non-ajax link, always refreshes the whole page. Works with
+	 * javascript disabled.</dd>
+	 * <dt>Ajax link</dt>
+	 * <dd>Links that supports partial updates. Doesn't work with javascript
+	 * disabled</dd>
+	 * <dt>Ajax fallback link</dt>
+	 * <dd>Link that supports partial updates. With javascript disabled acts
+	 * like regular link. The drawback is that generated url (thus the entire
+	 * html) is larger then using the other two</dd>
+	 * </dl>
+	 */
+	public static final class LinkType extends EnumeratedType
+	{
+
+		/** partial updates with no fallback. */
+		public static final LinkType AJAX = new LinkType("AJAX");
+
+		/**
+		 * partial updates that falls back to a regular link in case the client
+		 * does not support javascript.
+		 */
+		public static final LinkType AJAX_FALLBACK = new LinkType("AJAX_FALLBACK");
+
+		/**
+		 * non-ajax version that always re-renders the whole page.
+		 */
+		public static final LinkType REGULAR = new LinkType("REGULAR");
+
+		private static final long serialVersionUID = 1L;
+
+		/**
+		 * Construct.
+		 * 
+		 * @param name
+		 */
+		public LinkType(String name)
+		{
+			super(name);
+		}
+	}
+
+	/**
+	 * Helper class for calling an action from a link.
+	 * 
+	 * @author Matej Knopp
+	 */
+	public interface ILinkCallback extends IClusterable
+	{
+		/**
+		 * Called when the click is executed.
+		 * 
+		 * @param target
+		 *            The ajax request target
+		 */
+		void onClick(AjaxRequestTarget target);
+	}
+
+	/**
+	 * Creates a link of type specified by current linkType. When the links is
+	 * clicked it calls the specified callback.
+	 * 
+	 * @param id
+	 *            The component id
+	 * @param callback
+	 *            The link call back
+	 * @return The link component
+	 */
+	public MarkupContainer newLink(String id, final ILinkCallback callback)
+	{
+		if (getLinkType() == LinkType.REGULAR)
+		{
+			return new Link(id)
+			{
+				private static final long serialVersionUID = 1L;
+
+				/**
+				 * @see org.apache.wicket.markup.html.link.Link#onClick()
+				 */
+				public void onClick()
+				{
+					callback.onClick(null);
+				}
+			};
+		}
+		else if (getLinkType() == LinkType.AJAX)
+		{
+			return new AjaxLink(id)
+			{
+				private static final long serialVersionUID = 1L;
+
+				/**
+				 * @see org.apache.wicket.ajax.markup.html.AjaxLink#onClick(org.apache.wicket.ajax.AjaxRequestTarget)
+				 */
+				public void onClick(AjaxRequestTarget target)
+				{
+					callback.onClick(target);
+				}
+			};
+		}
+		else
+		{
+			return new AjaxFallbackLink(id)
+			{
+				private static final long serialVersionUID = 1L;
+
+				/**
+				 * @see org.apache.wicket.ajax.markup.html.AjaxFallbackLink#onClick(org.apache.wicket.ajax.AjaxRequestTarget)
+				 */
+				public void onClick(AjaxRequestTarget target)
+				{
+					callback.onClick(target);
+				}
+			};
+		}
+	}
+
+	/**
+	 * Returns the current type of links on tree items.
+	 * 
+	 * @return The link type
+	 */
+	public LinkType getLinkType()
+	{
+		return linkType;
+	}
+
+	/**
+	 * Sets the type of links on tree items. After the link type is changed, the
+	 * whole tree is rebuild and re-rendered.
+	 * 
+	 * @param linkType
+	 *            type of links
+	 */
+	public void setLinkType(LinkType linkType)
+	{
+		if (this.linkType != linkType)
+		{
+			this.linkType = linkType;
+			invalidateAll();
+		}
+	}
+	
+	/**
+	 * @see org.apache.wicket.markup.html.tree.AbstractTree#isForceRebuildOnSelectionChange()
+	 */
+	protected boolean isForceRebuildOnSelectionChange()
+	{
+		return false;
+	}
+
+	private LinkType linkType = LinkType.AJAX;
+}

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.html?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.html (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.html Sun Jun 10 16:58:22 2007
@@ -0,0 +1,19 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<wicket:panel>
+<table class="icon-panel"><tr><td><img wicket:id="icon"></td><td wicket:id="content" class="content"></td></tr></table>
+</wicket:panel>
\ No newline at end of file

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java Sun Jun 10 16:58:22 2007
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.tree;
+
+import javax.swing.tree.TreeNode;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ResourceReference;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+
+/**
+ * Simple panel that contains an icon next to a label.
+ * 
+ * @author Matej Knopp
+ */
+public class LabelIconPanel extends Panel
+{
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Constructs the panel.
+	 * 
+	 * @param id
+	 *            component id
+	 * @param model
+	 *            model that is used to access the TreeNode
+	 * @param tree
+	 */
+	public LabelIconPanel(String id, IModel model, BaseTree tree)
+	{
+		super(id, model);
+
+		addComponents(model, tree);
+	}
+
+	/**
+	 * Adds the icon and content components to the panel. You can override this
+	 * method if you want custom components to be added
+	 * 
+	 * @param model
+	 *            model that can be used to retrieve the TreeNode
+	 * 
+	 * @param tree
+	 */
+	protected void addComponents(IModel model, BaseTree tree)
+	{
+		add(newImageComponent("icon", tree, model));
+		add(newContentComponent("content", tree, model));
+	}
+
+	/**
+	 * Creates the icon component for the node
+	 * 
+	 * @param componentId
+	 * @param tree
+	 * @param model
+	 * @return icon image component
+	 */
+	protected Component newImageComponent(String componentId, final BaseTree tree,
+			final IModel model)
+	{
+		return new Image(componentId)
+		{
+			private static final long serialVersionUID = 1L;
+
+			protected ResourceReference getImageResourceReference()
+			{
+				return LabelIconPanel.this.getImageResourceReference(tree, (TreeNode)model
+						.getObject());
+			}
+		};
+	}
+
+	/**
+	 * Creates the content component (label in this case) for the node
+	 * 
+	 * @param componentId
+	 * @param tree
+	 * @param model
+	 * @return content component
+	 */
+	protected Component newContentComponent(String componentId, BaseTree tree, IModel model)
+	{
+		return new Label(componentId, model);
+	}
+
+	/**
+	 * Returns the image resource reference based on the give tree node type.
+	 * 
+	 * @param tree
+	 * @param node
+	 * @return image resource reference
+	 */
+	protected ResourceReference getImageResourceReference(BaseTree tree, TreeNode node)
+	{
+		if (node.isLeaf())
+		{
+			return getResourceItemLeaf(node);
+		}
+		else
+		{
+			if (tree.getTreeState().isNodeExpanded(node))
+			{
+				return getResourceFolderOpen(node);
+			}
+			else
+			{
+				return getResourceFolderClosed(node);
+			}
+		}
+	}
+
+	/**
+	 * Optional method for wrapping (creating an intermediate model) for the
+	 * tree node model
+	 * 
+	 * @param nodeModel
+	 * @return wrapped model
+	 */
+	protected IModel wrapNodeModel(IModel nodeModel)
+	{
+		return nodeModel;
+	}
+
+	/**
+	 * Returns resource reference for closed folder icon.
+	 * @param node
+	 * @return resource reference
+	 */
+	protected ResourceReference getResourceFolderClosed(TreeNode node)
+	{
+		return RESOURCE_FOLDER_CLOSED;
+	}
+
+	/**
+	 * Returns resource reference for open folder icon.
+	 * @param node
+	 * @return resource reference
+	 */
+	protected ResourceReference getResourceFolderOpen(TreeNode node)
+	{
+		return RESOURCE_FOLDER_OPEN;
+	}
+
+	/**
+	 * Returns resource reference for a leaf icon.
+	 * @param node
+	 * @return resource reference
+	 */
+	protected ResourceReference getResourceItemLeaf(TreeNode node)
+	{
+		return RESOURCE_ITEM;
+	}
+
+	private static final ResourceReference RESOURCE_FOLDER_OPEN = new ResourceReference(
+			LabelIconPanel.class, "res/folder-open.gif");
+	private static final ResourceReference RESOURCE_FOLDER_CLOSED = new ResourceReference(
+			LabelIconPanel.class, "res/folder-closed.gif");
+	private static final ResourceReference RESOURCE_ITEM = new ResourceReference(
+			LabelIconPanel.class, "res/item.gif");
+}

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelTree.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelTree.java?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelTree.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelTree.java Sun Jun 10 16:58:22 2007
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.tree;
+
+import java.io.Serializable;
+
+import javax.swing.tree.TreeModel;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+/**
+ * Simple tree component that uses label to render tree node.
+ * 
+ * @author Matej Knopp
+ */
+public class LabelTree extends BaseTree
+{
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Construct.
+	 * 
+	 * @param id
+	 */
+	public LabelTree(String id)
+	{
+		super(id);
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param id
+	 * @param model
+	 *            model that provides the {@link TreeModel}
+	 */
+	public LabelTree(String id, IModel model)
+	{
+		super(id, model);
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param id
+	 * @param model
+	 *            Tree model
+	 */
+	public LabelTree(String id, TreeModel model)
+	{
+		super(id, new Model((Serializable)model));
+	}
+
+	/**
+	 * @see org.apache.wicket.markup.html.tree.BaseTree#newNodeComponent(java.lang.String,
+	 *      org.apache.wicket.model.IModel)
+	 */
+	protected Component newNodeComponent(String id, IModel model)
+	{
+		return new LabelIconPanel(id, model, this);
+	}
+
+}

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.html?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.html (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.html Sun Jun 10 16:58:22 2007
@@ -0,0 +1,19 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<wicket:panel>
+<table class="icon-panel"><tr><td wicket:id="iconLink"><img wicket:id="icon" class="icon"/></td><td class="content"><a wicket:id="contentLink"><span wicket:id="content" class="content"></span></a></td></tr></table>
+</wicket:panel>
\ No newline at end of file

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkIconPanel.java Sun Jun 10 16:58:22 2007
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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;
+
+/**
+ * Simple panel that contains a link with icon and a link with a label.
+ * 
+ * @author Matej Knopp
+ */
+public class LinkIconPanel extends LabelIconPanel
+{
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Constructs the panel.
+	 * 
+	 * @param id
+	 *            component id
+	 * @param model
+	 *            model that is used to access the TreeNode
+	 * @param tree
+	 */
+	public LinkIconPanel(String id, IModel model, BaseTree tree)
+	{
+		super(id, model, tree);
+	}
+
+	/**
+	 * @see org.apache.wicket.markup.html.tree.LabelIconPanel#addComponents(org.apache.wicket.model.IModel, org.apache.wicket.markup.html.tree.BaseTree)
+	 */
+	protected void addComponents(final IModel model, final BaseTree tree)
+	{
+		BaseTree.ILinkCallback callback = new BaseTree.ILinkCallback()
+		{
+			private static final long serialVersionUID = 1L;
+
+			public void onClick(AjaxRequestTarget target)
+			{
+				onNodeLinkClicked((TreeNode)model.getObject(), tree, target);
+			}
+		};
+
+		MarkupContainer link = tree.newLink("iconLink", callback);
+		add(link);
+		link.add(newImageComponent("icon", tree, model));
+
+		link = tree.newLink("contentLink", callback);
+		add(link);
+		link.add(newContentComponent("content", tree, model));
+	}
+
+	/**
+	 * Handler invoked when the link is clicked. By default makes the node selected
+	 * @param node
+	 * @param tree
+	 * @param target
+	 */
+	protected void onNodeLinkClicked(TreeNode node, BaseTree tree, AjaxRequestTarget target)
+	{
+		tree.getTreeState().selectNode(node, !tree.getTreeState().isNodeSelected(node));
+		tree.updateTree(target);
+	}
+}

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkTree.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkTree.java?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkTree.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/LinkTree.java Sun Jun 10 16:58:22 2007
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.tree;
+
+import java.io.Serializable;
+
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreeNode;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+/**
+ * Simple tree component that provides node panel with link allowing user to
+ * select individual nodes.
+ * 
+ * @author Matej Knopp
+ */
+public class LinkTree extends BaseTree
+{
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Construct.
+	 * 
+	 * @param id
+	 */
+	public LinkTree(String id)
+	{
+		super(id);
+	}
+
+	/**
+	 * 
+	 * Construct.
+	 * 
+	 * @param id
+	 * @param model
+	 *            model that provides the {@link TreeModel}
+	 */
+	public LinkTree(String id, IModel model)
+	{
+		super(id, model);
+	}
+	
+	/**
+	 * 
+	 * Construct.
+	 * 
+	 * @param id
+	 * @param model
+	 *            Tree model
+	 */
+	public LinkTree(String id, TreeModel model)
+	{
+		super(id, new Model((Serializable)model));
+	}
+
+	/**
+	 * @see org.apache.wicket.markup.html.tree.BaseTree#newNodeComponent(java.lang.String, org.apache.wicket.model.IModel)
+	 */
+	protected Component newNodeComponent(String id, IModel model)
+	{
+		return new LinkIconPanel(id, model, LinkTree.this)
+		{
+			private static final long serialVersionUID = 1L;
+
+			protected void onNodeLinkClicked(TreeNode node, BaseTree tree, AjaxRequestTarget target)
+			{
+				super.onNodeLinkClicked(node, tree, target);
+				LinkTree.this.onNodeLinkClicked(node, tree, target);
+			}
+		};
+	}
+
+	/**
+	 * Method invoked after the node has been selected / unselected.
+	 * @param node
+	 * @param tree
+	 * @param target
+	 */
+	protected void onNodeLinkClicked(TreeNode node, BaseTree tree, AjaxRequestTarget target)
+	{
+
+	}
+}

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/package.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/package.html?view=diff&rev=545982&r1=545981&r2=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/package.html (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/package.html Sun Jun 10 16:58:22 2007
@@ -23,8 +23,5 @@
 <p>
 Package for Tree components.
 </p>
-This tree will be moved to the core project (wicket.markup.html.tree) for
-Wicket 2.0 and will serve as Wicket's default tree component,
-and the tree that is now in that package will be moved here.
 </body>
 </html>

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree-images.png
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree-images.png?view=auto&rev=545982
==============================================================================
Binary file - no diff available.

Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree-images.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree-images.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree.css
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree.css?view=auto&rev=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree.css (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/base-tree.css Sun Jun 10 16:58:22 2007
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+table.wicket-tree-content {
+	border-collapse: collapse;
+	empty-cells: show;
+}
+
+table.wicket-tree-content,
+table.wicket-tree-content td,
+table.wicket-tree-content tr,
+table.wicket-tree-content th {
+	padding: 0px;
+	margin: 0px;
+}
+
+table.wicket-tree-content td.spacer {
+	width: 18px;
+	height: 100%;
+}
+
+table.wicket-tree-content td.spacer span,
+table.wicket-tree-content td.line span {
+	display: block;
+	width: 18px;
+	height: 18px;
+}
+
+table.wicket-tree-content td.line {
+	width: 18px;
+	height: 100%;
+	background-image: url("base-tree-images.png");
+	background-position: -36px center;
+	background-repeat: repeat-y;
+}
+
+table.wicket-tree-content td.half-line {
+	width: 18px;
+	height: 100%;
+	background-image: url("base-tree-images.png");
+	background-position: -72px center;
+	background-repeat: no-repeat;
+}
+
+table.wicket-tree-content a.junction-open,
+table.wicket-tree-content a.junction-closed,
+table.wicket-tree-content span.junction-corner {
+	width: 18px;
+	height: 18px;
+	display: block;
+	background-image: url("base-tree-images.png");
+	background-repeat: no-repeat;
+	margin: 0px; padding: 0px; border-width: 0px;
+}
+
+table.wicket-tree-content a.junction-open {
+	background-position: -18px center;
+}
+
+table.wicket-tree-content a.junction-closed {
+	background-position: 0px center;
+}
+
+table.wicket-tree-content span.junction-corner {
+	background-position: -54px center;
+}
+
+table.wicket-tree-content table.icon-panel {
+	border-collapse: collapse;
+	empty-cells: show;
+}
+
+table.wicket-tree-content table.icon-panel, 
+table.wicket-tree-content table.icon-panel tr,
+table.wicket-tree-content table.icon-panel td {
+	margin: 0px;
+	padding: 0px;
+}
+
+table.wicket-tree-content table.icon-panel img {
+	padding: 0px;
+	margin: 0px;
+	display: block;
+	border-width: 0px;
+	margin-left: 2px;
+	margin-top: -1px;
+}
+
+table.wicket-tree-content.selected {
+	background-color: #E0E8FF;
+	font-weight: bold;	
+}
+
+table.wicket-tree-content.selected .content {
+	font-weight: bold;	
+}
+
+table.wicket-tree-content table.icon-panel a {
+	text-decoration: none;
+	color: #3311aa;
+}
+
+table.wicket-tree-content table.icon-panel a:hover {
+	text-decoration: underline;
+	color: #3311aa;
+}
+
+table.wicket-tree-content table.icon-panel img.icon {
+	cursor: pointer;
+}
+
+table.icon-panel {
+	width: 100%;
+}
+
+table.icon-panel td.content {
+	width: 100%;
+}
+
+table.icon-panel td.content a {
+	padding-right: 0.4em;
+}

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-closed.gif
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-closed.gif?view=auto&rev=545982
==============================================================================
Binary file - no diff available.

Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-closed.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-open.gif
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-open.gif?view=auto&rev=545982
==============================================================================
Binary file - no diff available.

Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/folder-open.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/item.gif
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/item.gif?view=auto&rev=545982
==============================================================================
Binary file - no diff available.

Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/item.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java?view=diff&rev=545982&r1=545981&r2=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java (original)
+++ incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/ModelBean.java Sun Jun 10 16:58:22 2007
@@ -187,6 +187,6 @@
 	@Override
 	public String toString()
 	{
-		return getProperty1();
+		return getProperty1() + ", " + getProperty2() + ", " + getProperty3();
 	}
 }

Modified: incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html?view=diff&rev=545982&r1=545981&r2=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html (original)
+++ incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.html Sun Jun 10 16:58:22 2007
@@ -1,11 +1,16 @@
 <wicket:head>
 	<style>
-		div.my-tree div.wicket-tree {
-			height: 28em;
+		table.wicket-tree-content {
+			width: 100%;
+		}
+		td {
+			font-size: 82%;
 		}
 	</style>
 </wicket:head>
 <wicket:extend>
-	<div wicket:id="tree" class="my-tree">
-	</div>	
+	<table style="border: 1px solid #eee"><tr><td>
+		<div wicket:id="tree" class="my-tree">	
+		</div>	
+	</td></tr></table>
 </wicket:extend>

Modified: incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java?view=diff&rev=545982&r1=545981&r2=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java (original)
+++ incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/tree/SimpleTreePage.java Sun Jun 10 16:58:22 2007
@@ -16,11 +16,9 @@
  */
 package org.apache.wicket.examples.ajax.builtin.tree;
 
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.TreeNode;
-
-import org.apache.wicket.extensions.markup.html.tree.Tree;
 import org.apache.wicket.markup.html.tree.AbstractTree;
+import org.apache.wicket.markup.html.tree.BaseTree;
+import org.apache.wicket.markup.html.tree.LinkTree;
 
 
 /**
@@ -31,7 +29,7 @@
  */
 public class SimpleTreePage extends BaseTreePage
 {
-	private Tree tree;
+	private BaseTree tree;
 
 	protected AbstractTree getTree()
 	{
@@ -44,14 +42,7 @@
 	 */
 	public SimpleTreePage()
 	{
-		tree = new Tree("tree", createTreeModel())
-		{
-			protected String renderNode(TreeNode node)
-			{
-				ModelBean bean = (ModelBean)((DefaultMutableTreeNode)node).getUserObject();
-				return bean.getProperty1();
-			}
-		};
+		tree = new LinkTree("tree", createTreeModel());
 		add(tree);
 		tree.getTreeState().collapseAll();
 	}

Modified: incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml?view=diff&rev=545982&r1=545981&r2=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml Sun Jun 10 16:58:22 2007
@@ -43,7 +43,7 @@
 -->
 	<context-param>
 		<param-name>configuration</param-name>
-		<param-value>deployment</param-value>
+		<param-value>development</param-value>
 	</context-param>
 
 	<context-param>

Modified: incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/style.css
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/style.css?view=diff&rev=545982&r1=545981&r2=545982
==============================================================================
--- incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/style.css (original)
+++ incubator/wicket/trunk/jdk-1.5/wicket-examples/src/main/webapp/style.css Sun Jun 10 16:58:22 2007
@@ -172,7 +172,7 @@
 table.dataview tr.even { background-color: #ffebcd; }
 table.dataview tr.odd { background-color: #fff; }
 table.dataview tr td { padding-left: 8px; padding-right: 30px; }
-table.dataview tr th { color: black; padding-top: 3px; padding-bottom: 3px; padding-left: 8px; padding-right: 24px; background-color: #c1e4ff; border-bottom: 1px solid #0079d6; border-top: 1px solid #0079d6; text-align: left; white-space: nowrap; vertical-align: middle;}
+table.dataview tr th { color: black; padding-top: 3px; padding-bottom: 3px; padding-left: 8px; padding-right: 30px; background-color: #c1e4ff; border-bottom: 1px solid #0079d6; border-top: 1px solid #0079d6; text-align: left; white-space: nowrap; vertical-align: middle;}
 
 table.dataview tr th { background-position: right; background-repeat:no-repeat; }
 table.dataview tr th.wicket_orderDown {