Hello! I have a special menu to build, my HomePage has many links example and I can go to distinct Page
HomePage link to Page1, Page 5 In Page 1 has link to Page 2, Page3 Page2 -> links to Page 3, Page 4 Page3 -> links to Page 2, Page 4 In Page 5 has link to Page 6, Page 7 Page7 -> links to Page 8 Page6 -> links to Page 9 And the combinations going on. So, I need to build a MenuPanel to take track from the user selection of page to permit the user return easy to whatever page. Example of navigation: The user starts in HomePage, then Click Page1, the menu is (HomePage | Page1 <-- disabled but showed in the menu to show the position) latter the user clicks Page2 now the menu change to (HomePage | Page1 | Page2 <-- disabled ) I have solved this with a Session and a Menu List saving the PageParameters to reproduce the same page, my user can go to HomePage, Page1 or clic the link Page3 or Page4, so the menu change to (HomePage | Page1 | Page2 | Page3 ) My problem is that if my user open a new browser tab, the menu in session is the same so I need to take track of the new tab. How can I take track of the browser tab, window etc, to get better listMenu. I can't do a map of menu because Page4 may be can render page N accord to user properties May be I need to get the window# or tab and save it with the listMenu. My test code public class SiSession extends WebSession { private static final long serialVersionUID = 6953907625762546748L; private ArrayList<Menu> listMenu = new ArrayList<Menu>(); public ArrayList<Menu> getListMenu() { return listMenu; } public void setListMenu(ArrayList<Menu> lista) { this.listMenu = lista; } } LayoutPage public abstract class LayoutPage extends WebPage { public LayoutPage(Class clase, String nombre, PageParameters parametros){ MenuPanel mp = new MenuPanel("menu", clase, nombre, parametros); add(mp); } } public class MenuPanel extends Panel { public MenuPanel(String id, Class<? extends Page> paginaActual, String nombre, PageParameters parametros){ super(id); SiSession sesion = (SiSession) getSession(); ArrayList<Menu> lista = sesion.getListMenu(); int index = lista.lastIndexOf(new Menu(paginaActual)); if(index >= 0){ lista = new ArrayList(lista.subList(0, index)); } ista.add(new Menu(nombre, paginaActual, parametros)); ListView<Menu> listaMenu = new ListView<Menu>("listaMenu", lista) { @Override protected void populateItem(ListItem<Menu> item) { BookmarkablePageLink link = new BookmarkablePageLink<Void>("url", item.getModelObject().getClase()); link.add(new Label("etiqueta", item.getModelObject().getNombre())); item.add(link); } }; add(listaMenu); } } public class Menu implements IClusterable { private String nombre; private Class<? extends Page> clase; private PageParameters parameters; private Image imagen; public Menu(Class clase){ setClase(clase); } public Menu(String nombre, Class clase){ setNombre(nombre); setClase(clase); } public Menu(String nombre, Class clase, PageParameters parameters){ setNombre(nombre); setClase(clase); setParameters(parameters); } ...getters & setters } all my Pages are like this public class UnoPage extends LayoutPage { public UnoPage(){ super(UnoPage.class, "Uno", null); Link link = new Link("dosPageLink"){ @Override public void onClick() { setResponsePage(DosPage.class); } }; add(link); } } Thank you! -- César Alberto Barrera <abarrera at gmail dot com>