ok as usual I bet myself to it, here is the answer :

Basically use a ListView over a ListView!


        @Override
        public void renderMenu() {
                IModel<MenuItemState> modelState = getState();
                final MenuItemState rootState = modelState.getObject();
                
                //Add all menu state objects as Ordered List / sub lists
                
                //Model MenuItems per Level (layer) 
                List<List<MenuItemState>> menuLayers = new
ArrayList<List<MenuItemState>>();               
                {
                        MenuItemState state = rootState;
                        do {
                                menuLayers.add(state.getChildren());
                                state = menuHelper.getFirstFertileChild(state);
                        } while(state != null); //Keep going (DFS) till Menu 
node bares no child                        
                }
                
                //Render:
                final ListView<List<MenuItemState>> multiLevelMenuContainer = 
new
ListView<List<MenuItemState>>("menuContainer", menuLayers) {
                        @Override
                        protected void populateItem(final 
ListItem<List<MenuItemState>>
menuLayerComponent) {
                                //Add levels layer by layer (each layer in a 
different <div> on mark-up.
Items in same layer get same styling
                                //TODO : Work on mark-up styling for final 
render details.
                                        menuLayerComponent.add(new 
ListView<MenuItemState>("menuItems",
menuLayerComponent.getModelObject()) {
                                                @Override
                                                public void populateItem(final 
ListItem<MenuItemState>
childMenuComponent) {
                                                        final MenuItemState 
childItemState =
childMenuComponent.getModelObject();
                                                        
childMenuComponent.add(new Label("name",
childItemState.getMenuItem().getName()));
                                                        
childMenuComponent.add(new StaticImage("img", 
                                                                        new 
Model(childItemState.getMenuItem().getImg())) );
                                                        
childMenuComponent.add(new StaticImage("rollOverImg", 
                                                                        new 
Model(childItemState.getMenuItem().getRollOverImg())) );
                                                        
childMenuComponent.add(new Label("selected",
Boolean.toString(childItemState.isSelected())));
                                                }
                                        });             
                        }
                        
                };
                add(multiLevelMenuContainer);
        }


Markup code looks like this:

                <table wicket:id="menuContainer" border='1'>
                        <tr><td>
                                <ul wicket:id="menuItems">
                                        <li></li>
                                        <li> </li>
                                        <li> </li>
                                        <li> </li>
                                </ul>
                        </td></tr>
                </table>

-- 
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Dunamic-neted-List-Views-tp2970644p2989287.html
Sent from the Users forum 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