use of org.apache.wicket.markup.html.WebPage 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);
}
use of org.apache.wicket.markup.html.WebPage in project midpoint by Evolveum.
the class PageBase method redirectBackToBreadcrumb.
public void redirectBackToBreadcrumb(Breadcrumb breadcrumb) {
Validate.notNull(breadcrumb, "Breadcrumb must not be null");
boolean found = false;
//we remove all breadcrumbs that are after "breadcrumb"
List<Breadcrumb> breadcrumbs = getBreadcrumbs();
Iterator<Breadcrumb> iterator = breadcrumbs.iterator();
while (iterator.hasNext()) {
Breadcrumb b = iterator.next();
if (found) {
iterator.remove();
} else if (b.equals(breadcrumb)) {
found = true;
}
}
WebPage page = breadcrumb.redirect();
if (page instanceof PageBase) {
PageBase base = (PageBase) page;
base.setBreadcrumbs(breadcrumbs);
}
setResponsePage(page);
}
Aggregations