use of org.apache.wicket.IPageFactory in project midpoint by Evolveum.
the class MainMenuPanel method menuItemPerformed.
private void menuItemPerformed(MenuItem menu) {
LOGGER.trace("menuItemPerformed: {}", menu);
IPageFactory pFactory = Session.get().getPageFactory();
WebPage page = pFactory.newPage(menu.getPageClass(), menu.getParams());
if (!(page instanceof PageBase)) {
setResponsePage(page);
return;
}
PageBase pageBase = (PageBase) page;
// IMPORTANT: we need to re-bundle the name to a new models
// that will not be connected to the old page reference
// otherwise the old page will somehow remain in the memory
// I have no idea how it could do that and especially how
// several old pages can remain in memory. But if the model
// is not re-bundled here then the page size grows and never
// falls.
MainMenuItem mainMenuItem = getModelObject();
String name = mainMenuItem.getNameModel().getObject();
Breadcrumb bc = new Breadcrumb(new Model<>(name));
bc.setIcon(new Model<>(mainMenuItem.getIconClass()));
pageBase.addBreadcrumb(bc);
List<MenuItem> items = mainMenuItem.getItems();
if (!items.isEmpty() && mainMenuItem.isInsertDefaultBackBreadcrumb()) {
MenuItem first = items.get(0);
IModel<String> nameModel = first.getNameModel();
BreadcrumbPageClass invisibleBc = new BreadcrumbPageClass(new Model<>(nameModel.getObject()), first.getPageClass(), first.getParams());
invisibleBc.setVisible(false);
pageBase.addBreadcrumb(invisibleBc);
}
setResponsePage(page);
}
Aggregations