Hi Martin,

do you have any news on this subject? E.g. found that you reinvent the wheel
or started a project with this idea :-)?

Regards,
Peter.


MartinM wrote:
> 
> Hi!
> 
> I finally came up with something that I have been looking for. It
> might be more suitable for Wicket 1.5 because it's not very compatible
> (read: not very lean) with current wicket:
> 
> Wicket Without Markup ;)
> 
> Well, yes there is markup for each component, but when you lay them
> out on the page, the markup is component-contained.
> So coding an application feels like a breeze for the Java developer,
> and the HTML developer can strictly stick to styling the (contained)
> components themselves.
> 
> Maybe I omitted something, but here comes the example. Let me know
> what you think. Does it inspire any fresh ideas in you? Is this an old
> idea? I recall listviews having been mentioned once as a solution for
> producing markup-less code ... maybe I have re-invented the weel or
> something.
> 
> HomePage.html:
> <html>
> <body>
> <strong>Wicket Quickstart Archetype Homepage</strong>
> <form wicket:id="form">
> <wicket:container wicket:id="root-content-id"></wicket:container>
> </form>
> </body>
> </html>
> 
> 
> HomePage.java:
> public class HomePage extends WebPage {
>       /** */
>       private static final long serialVersionUID = 1L;
>       private final MarkupNoLongerRequiredContainer rootContainer;
>       private final MarkupNoLongerRequiredContainer row1;
>       private final MarkupNoLongerRequiredContainer row2;
>       private final MarkupNoLongerRequiredContainer row3;
>       private final Form<Void> form;
>       
>       /**
>        *
>        */
>       public HomePage() {
>               add(form = new Form<Void>("form"));
>               form.add(rootContainer = new
> MarkupNoLongerRequiredContainer("root-content-id"));
>               {
>                       rootContainer.add(row1 = new 
> MarkupNoLongerRequiredContainer());
>                       row1.add(new Label(GID, "Hello world"));
>                       row1.add(0, new Label(GID, 
> "<br/>").setEscapeModelStrings(false));
> // Change row before
>                       row1.add(0, new Label(GID, 
> "<br/>").setEscapeModelStrings(false));
> // Change row twice before
>                       row1.add(new Label(GID, 
> "<br/>").setEscapeModelStrings(false)); //
> Change row once after
>               }
>               {
>                       rootContainer.add(row2 = new 
> MarkupNoLongerRequiredContainer());
>                       row2.add(new Label(GID, "Type your name here:"));
>                       row2.add(new InputField(new TextField<String>(GID, 
> Model.of("..."))));
>               }
>               {
>                       rootContainer.add(row3 = new 
> MarkupNoLongerRequiredContainer());
>                       row2.add(new Label(GID, 
> "<br/>").setEscapeModelStrings(false)); //
> Change row before
>                       row2.add(new InputField(new Button(GID, 
> Model.of("Clickme")) {
>                               @Override
>                               protected void onComponentTag(ComponentTag tag) 
> {
>                                       tag.put("type", "button");
>                                       super.onComponentTag(tag);
>                               }
>                       }));
>               }
>       }
> }
> 
> InputField.html:
> <wicket:panel>
>   <input wicket:id="generic-child-id"/>
> </wicket:panel>
> 
> 
> InputField.java:
> public class InputField extends Panel {
>       /** */
>       private static final long serialVersionUID = 1L;
> 
>       public <InputFieldDataType, InputFieldType extends
> FormComponent<InputFieldDataType>> InputField(InputFieldType
> inputFieldType) {
>               super(MarkupNoLongerRequiredContainer.GID);
>               add(inputFieldType);
>       }
> }
> 
> MarkupNoLongerRequiredContainer.html:
> <wicket:panel>
>   <wicket:container wicket:id="listview-id">
>               <wicket:container wicket:id="generic-child-id">
>               </wicket:container>
>       </wicket:container>
> </wicket:panel>
> 
> 
> MarkupNoLongerRequiredContainer.java:
> public class MarkupNoLongerRequiredContainer extends Panel {
>       /** */
>       public static final String GID = "generic-child-id";
> 
>       /** */
>       private static final long serialVersionUID = 1L;
>       
>       private final List<Component> children = new ArrayList<Component>();
> 
>       public MarkupNoLongerRequiredContainer() {
>               this(GID);
>       }
>       
>       @Override
>       protected void onBeforeRender() {
>               super.onBeforeRender();
>       }
>       
>       /**
>        * @param id
>        */
>       public MarkupNoLongerRequiredContainer(String id) {
>               super(id);
>               super.add(new ListView<Component>("listview-id", children) {
>                       /** */
>                       private static final long serialVersionUID = 1L;
> 
>                       @Override
>                       protected void populateItem(ListItem<Component> 
> listItem) {
>                               Component component = listItem.getModelObject();
>                               if (!component.getId().equals(GID)) {
>                                       throw new 
> IllegalStateException("Currently handles only children
> with id " + GID);
>                               }
>                               listItem.add(component);
>                       }
>               });
>       }
> 
>       public boolean add(Component component) {
>               return children.add(component);
>       }
> 
>       public void add(int index, Component element) {
>               children.add(index, element);
>       }
> 
>       public boolean addAll(Collection<? extends Component> collection) {
>               return children.addAll(collection);
>       }
> 
>       public boolean addAll(int index, Collection<? extends Component>
> collection) {
>               return children.addAll(index, collection);
>       }
> 
>       public void clear() {
>               children.clear();
>       }
> 
>       public boolean contains(Object o) {
>               return children.contains(o);
>       }
> 
>       public boolean containsAll(Collection<?> collection) {
>               return children.containsAll(collection);
>       }
> 
>       public int indexOf(Object o) {
>               return children.indexOf(o);
>       }
> 
>       public boolean isEmpty() {
>               return children.isEmpty();
>       }
> 
>       public int lastIndexOf(Object o) {
>               return children.lastIndexOf(o);
>       }
> 
>       public ListIterator<Component> listIterator() {
>               return children.listIterator();
>       }
> 
>       public ListIterator<Component> listIterator(int index) {
>               return children.listIterator(index);
>       }
> 
>       public boolean remove(Object o) {
>               return children.remove(o);
>       }
> 
>       public Component remove(int index) {
>               return children.remove(index);
>       }
> 
>       public boolean removeAll(Collection<?> collection) {
>               return children.removeAll(collection);
>       }
> 
>       public boolean retainAll(Collection<?> collection) {
>               return children.retainAll(collection);
>       }
> 
>       public Component set(int index, Component element) {
>               return children.set(index, element);
>       }
> 
>       public List<Component> subList(int fromIndex, int toIndex) {
>               return children.subList(fromIndex, toIndex);
>       }
> 
>       public Object[] toArray() {
>               return children.toArray();
>       }
> 
>       public <T> T[] toArray(T[] a) {
>               return children.toArray(a);
>       }
> }
> 
> **
> Martin
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Wicket-without-markup-tp27506286p27694080.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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

Reply via email to