I was not aware of the "nested" example in wicket-examples.

Unfortunately, http://www.wicket-library.com/wicket-examples/nested/ barfs when I try to access it.

Eelco Hillenius wrote:
Yeah, that's like Wicket's "nested" example in wicket-examples.

Eelco

On Thu, Oct 8, 2009 at 12:27 PM, Ceki Gulcu <c...@qos.ch> wrote:
Hello,

I just succeeded to create a self-recursive panel displaying a
tree-like structure with less than 40 lines of java code and 10 lines
of HTML. I am including the code here in case someone is interested.


==============================================
public class Node implements Serializable {

 String name;
 List<Node> childrenList = new ArrayList<Node>();

 Node(String name) {
   this.name = name;
 }

 public void add(Node child) {
   childrenList.add(child);
 }

 public String getName() {
   return name;
 }

 public List<Node> getChildrenList() {
   return childrenList;
 }

 static Node getSampleNode() {
   Node nodeA = new Node("A");
   Node nodeA0 = new Node("A0");
   Node nodeA00 = new Node("A00");
   Node nodeA01 = new Node("A01");
   Node nodeA1 = new Node("A1");

   nodeA.add(nodeA0);
   nodeA.add(nodeA1);

   nodeA0.add(nodeA00);
   nodeA0.add(nodeA01);
   return nodeA;
 }
}

=============== Tree.java and Tree.html ========================
public class Tree extends WebPage {

 public Tree() {
   Node node = Node.getSampleNode();
   NodePanel nodePanel = new NodePanel("", "node", node);
   add(nodePanel);
 }
}

<html xmlns="http://www.w3.org/1999/xhtml";>
 <head>
   <title>Tree</title>
   <link rel="stylesheet" href="style.css" />
 </head>
<body>
 <div wicket:id="node"></div>
</body>
</html>
================================================================


===== NodePanel.hava and html ==================================
public class NodePanel extends Panel {

 public NodePanel(final String indent, String id, Node node) {
   super(id);

   add(new Label("name", indent+node.getName()));

   if (node.getChildrenList().size() == 0) {
     final WebMarkupContainer parent = new WebMarkupContainer("children");
     add(parent);
     parent.add(new EmptyPanel("node"));
   } else {
     add(new ListView("children", node.getChildrenList()) {
       @Override
       protected void populateItem(ListItem item) {
         Node childNode = (Node) item.getModelObject();
         item.add(new NodePanel(indent+"----", "node", childNode));
       }
     });
   }
 }
}

<html xmlns:wicket>

 <wicket:panel>
   <p wicket:id="name">name</p>

   <div wicket:id="children">
     <div wicket:id="node">
     </div>
   </div>
 </wicket:panel>

</html>
================================================================

HTH,

--
Ceki Gülcü
Logback: The reliable, generic, fast and flexible logging framework for
Java.
http://logback.qos.ch

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



--
Ceki Gülcü
Logback: The reliable, generic, fast and flexible logging framework for Java.
http://logback.qos.ch

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to