Skip to content

Commit

Permalink
breadcrumbs improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Mar 1, 2016
1 parent d43d29a commit 63fca42
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 48 deletions.
Expand Up @@ -52,6 +52,7 @@
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
Expand Down Expand Up @@ -95,6 +96,8 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageClass;
import com.evolveum.midpoint.web.component.dialog.MainPopupDialog;
import com.evolveum.midpoint.web.component.menu.MainMenuItem;
import com.evolveum.midpoint.web.component.menu.MenuItem;
Expand Down Expand Up @@ -255,6 +258,21 @@ public PageBase(PageParameters parameters) {
initLayout();
}

@Override
protected void onConfigure() {
super.onConfigure();

BreadcrumbPageClass bc = new BreadcrumbPageClass(new AbstractReadOnlyModel() {

@Override
public String getObject() {
return getPageTitleModel().getObject();
}
}, this.getClass(), getPageParameters());

getSessionStorage().pushBreadcrumb(bc);
}

public PageBase() {
this(null);
}
Expand Down Expand Up @@ -411,21 +429,34 @@ private void initTitleLayout() {
pageTitle.add(pageTitleReal);
pageTitle.add(new Label(ID_PAGE_SUBTITLE, createPageSubTitleModel()));

ListView breadcrumbs = new ListView<BreadcrumbItem>(ID_BREADCRUMB,
new Model((Serializable) createBreadcrumbs())) {
ListView breadcrumbs = new ListView<Breadcrumb>(ID_BREADCRUMB,
new AbstractReadOnlyModel<List<Breadcrumb>>() {

@Override
protected void populateItem(ListItem<BreadcrumbItem> item) {
final BreadcrumbItem dto = item.getModelObject();
@Override
public List<Breadcrumb> getObject() {
return getSessionStorage().getBreadcrumbs();
}
}) {

@Override
protected void populateItem(ListItem<Breadcrumb> item) {
final Breadcrumb dto = item.getModelObject();

AjaxLink bcLink = new AjaxLink(ID_BC_LINK) {

@Override
public void onClick(AjaxRequestTarget target) {
navigateTo(target, dto);
dto.redirect(PageBase.this);
}
};
item.add(bcLink);
bcLink.add(new VisibleEnableBehaviour() {

@Override
public boolean isEnabled() {
return dto.isLink();
}
});

WebMarkupContainer bcIcon = new WebMarkupContainer(ID_BC_ICON);
bcIcon.add(new VisibleEnableBehaviour() {
Expand All @@ -438,11 +469,11 @@ public boolean isVisible() {
bcIcon.add(AttributeModifier.replace("class", dto.getIcon()));
bcLink.add(bcIcon);

Label bcName = new Label(ID_BC_NAME, dto.getName());
Label bcName = new Label(ID_BC_NAME, dto.getLabel());
bcLink.add(bcName);
}
};
pageTitleContainer.add(breadcrumbs);
add(breadcrumbs);
}

private void initLayout() {
Expand Down Expand Up @@ -588,6 +619,10 @@ protected IModel<String> createPageTitleModel() {
return createStringResource(key);
}

public IModel<String> getPageTitleModel() {
return (IModel) get(ID_TITLE).getDefaultModel();
}

public String getString(String resourceKey, Object... objects) {
return createStringResource(resourceKey, objects).getString();
}
Expand Down Expand Up @@ -793,29 +828,6 @@ public RestartResponseException getRestartResponseException(Class<? extends Page
}
}

private void navigateTo(AjaxRequestTarget target, BreadcrumbItem dto) {
if (dto.getPageParameters() == null) {
setResponsePage(dto.getPage());
}

try {
Class clazz = dto.getPage();
Constructor constr = clazz.getConstructor(PageParameters.class);
WebPage page = (WebPage) constr.newInstance(dto.getPageParameters());

setResponsePage(page);
} catch (Exception ex) {
LOGGER.debug("Couldn't navigate to breadcrumb item " + dto, ex);
error(getString("PageTemplate.couldntNavigateBreadcrumb", ex.getMessage()));
target.add(getFeedbackPanel());
}
}

public List<BreadcrumbItem> createBreadcrumbs() {
// todo implement breadcrumb algorithm [lazyman]
return new ArrayList<>();
}

protected <P extends Object> void validateObject(String xmlObject, final Holder<P> objectHolder,
boolean validateSchema, OperationResult result) {
EventHandler handler = new EventHandler() {
Expand Down
Expand Up @@ -185,16 +185,6 @@ private void menuItemPerformed(MenuItem menu) {
Breadcrumb bc = new Breadcrumb(mainMenuItem.getName());
storage.pushBreadcrumb(bc);

bc = new BreadcrumbPageClass(new AbstractReadOnlyModel() {

@Override
public String getObject() {
System.out.println(getPageBase().getClass());
return getPageBase().getPageTitleModel().getObject();
}
}, (Class) menu.getPage(), menu.getParams());
storage.pushBreadcrumb(bc);

bc.redirect(this);
setResponsePage(menu.getPage(), menu.getParams());
}
}
Expand Up @@ -17,17 +17,13 @@
package com.evolveum.midpoint.web.session;

import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
import com.evolveum.midpoint.web.page.BreadcrumbItem;
import org.apache.commons.lang.Validate;
import org.apache.wicket.Page;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;

/**
* @author lazyman
Expand Down Expand Up @@ -158,13 +154,20 @@ public void clearPagingInSession(boolean clearPaging){

public List<Breadcrumb> getBreadcrumbs() {
if (breadcrumbs == null) {
breadcrumbs = new ArrayList<>();
breadcrumbs = new Stack<>();
}
return breadcrumbs;
}

public void pushBreadcrumb(Breadcrumb breadcrumb) {
Validate.notNull(breadcrumb, "Breadcrumb must not be null");

Breadcrumb last = getBreadcrumbs().isEmpty() ?
null : getBreadcrumbs().get(getBreadcrumbs().size() - 1);
if (last != null && last.equals(breadcrumb)) {
return;
}

getBreadcrumbs().add(breadcrumb);
}

Expand Down

0 comments on commit 63fca42

Please sign in to comment.