> We need to wait until all components are added so that we can arrange them into correct hireracy before rendering.
May I suggest that components are added with help of a builder object, for example: public MyPanel(String id) { super(id); Builder b = new Builder(this); // the Builder gets reference to this MyPanel b.add(new TextField("name")); // can be child of "form" which is added later b.add(new SomeForm("form")); b.build(); // after this line this MyPanel contains the components name and form } If MyPanel's super class needs to access the same builder, it can provide a constructor for it. In that case b.build() should be only invoked in MyPanel's constructor. If a developer uses more than one builder in a constructor, he can restrict moving of components in markup to some extent: public MyPanel(String id) { super(id); Builder b1 = new Builder(this); b1.add(new TextField("name")); // in markup, "name" can't be put under "form" because it's in a different builder b1.build(); Builder b2 = new Builder(this); b2.add(new SomeForm("form"); b2.build(); } Of course this doesn't solve the problem Igor mentioned. For that you'd need the "old-fashioned way": public MyPanel(String id) { super(id); SomeForm form = new SomeForm("form"); form.add(new TextField("name"); // in markup, "name" can't be moved out from "form" add(form); } Developers would need to mix different approaches for building hierarchies if security is an issue. On second thought, I should use a broader term than security because there is more than one reason to restrict those pesky designers ;) --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org