Skip to content

Commit

Permalink
MID-7135 breadcrumb improvements started, wip
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jan 27, 2022
1 parent 0a7ffa4 commit fad4d0d
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import com.evolveum.midpoint.security.api.OwnerResolver;
import com.evolveum.midpoint.security.api.SecurityContextManager;
import com.evolveum.midpoint.authentication.api.util.AuthUtil;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageInstance;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
Expand Down Expand Up @@ -126,7 +128,6 @@
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.breadcrumbs.BreadcrumbPageInstance;
import com.evolveum.midpoint.web.component.dialog.MainPopupDialog;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.menu.BaseMenuItem;
Expand Down Expand Up @@ -336,29 +337,11 @@ protected void onConfigure() {
}

protected void createBreadcrumb() {
BreadcrumbPageClass bc = new BreadcrumbPageClass(new IModel<>() {
private static final long serialVersionUID = 1L;

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

addBreadcrumb(bc);
addBreadcrumb(new BreadcrumbPageClass(getPageTitleModel(), this.getClass(), getPageParameters()));
}

protected void createInstanceBreadcrumb() {
BreadcrumbPageInstance bc = new BreadcrumbPageInstance(new IModel<>() {
private static final long serialVersionUID = 1L;

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

addBreadcrumb(bc);
addBreadcrumb(new BreadcrumbPageInstance(getPageTitleModel(), this));
}

public void updateBreadcrumbParameters(String key, Object value) {
Expand Down Expand Up @@ -1519,7 +1502,7 @@ public boolean canRedirectBack(int backStep) {
}
if (breadcrumbs.size() == backStep && (breadcrumbs.get(breadcrumbs.size() - backStep)) != null) {
Breadcrumb br = breadcrumbs.get(breadcrumbs.size() - backStep);
if (br instanceof BreadcrumbPageInstance || br instanceof BreadcrumbPageClass) {
if (br != null) {
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,6 @@
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageClass;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageInstance;
import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider;
import com.evolveum.midpoint.web.component.data.SelectableBeanContainerDataProvider;
import com.evolveum.midpoint.web.component.data.Table;
Expand Down Expand Up @@ -3288,10 +3287,8 @@ public static Class<?> getPreviousPageClass(PageBase parentPage) {
}
Breadcrumb previousBreadcrumb = breadcrumbs.get(breadcrumbs.size() - 2);
Class<?> page = null;
if (previousBreadcrumb instanceof BreadcrumbPageClass) {
page = ((BreadcrumbPageClass) previousBreadcrumb).getPage();
} else if (previousBreadcrumb instanceof BreadcrumbPageInstance) {
page = ((BreadcrumbPageInstance) previousBreadcrumb).getPage().getClass();
if (previousBreadcrumb != null) {
page = previousBreadcrumb.getPageClass();
}
return page;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
* @author semancik
*/
public class Breadcrumb implements Serializable, DebugDumpable {

private static final long serialVersionUID = 1L;

private static final Trace LOG = TraceManager.getTrace(Breadcrumb.class);
Expand All @@ -55,6 +56,10 @@ public Breadcrumb(IModel<String> labelModel, IModel<String> iconModel) {
setIcon(new CachedModel(iconModel));
}

public Class<? extends WebPage> getPageClass() {
return null;
}

public PageParameters getParameters() {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
*/
package com.evolveum.midpoint.web.component.breadcrumbs;

import java.util.Arrays;
import java.util.Objects;
import com.evolveum.midpoint.util.DebugUtil;

import org.apache.commons.lang3.Validate;
import org.apache.wicket.IPageFactory;
Expand All @@ -17,30 +16,33 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import com.evolveum.midpoint.util.DebugUtil;
import java.util.Arrays;
import java.util.Objects;

/**
* @author Viliam Repan (lazyman)
*/
public class BreadcrumbPageClass extends Breadcrumb {

private static final long serialVersionUID = 1L;

private Class<? extends WebPage> page;
private Class<? extends WebPage> pageClass;

private PageParameters parameters;

public BreadcrumbPageClass(IModel<String> label, Class<? extends WebPage> page, PageParameters parameters) {
public BreadcrumbPageClass(IModel<String> label, Class<? extends WebPage> pageClass, PageParameters parameters) {
super(label);

Validate.notNull(page, "Page class must not be null");
Validate.notNull(pageClass, "Page class must not be null");

this.page = page;
this.pageClass = pageClass;
this.parameters = parameters;

setUseLink(true);
}

public Class<? extends WebPage> getPage() {
return page;
public Class<? extends WebPage> getPageClass() {
return pageClass;
}

@Override
Expand All @@ -55,51 +57,51 @@ public void setParameters(PageParameters parameters) {
this.parameters = parameters;
}

public void setPage(Class<? extends WebPage> page) {
this.page = page;
public void setPageClass(Class<? extends WebPage> pageClass) {
this.pageClass = pageClass;
}

@Override
public WebPage redirect() {
IPageFactory pFactory = Session.get().getPageFactory();
if (parameters == null) {
return pFactory.newPage(page);
return pFactory.newPage(pageClass);
} else {
return pFactory.newPage(page, parameters);
return pFactory.newPage(pageClass, parameters);
}
}

@Override
public RestartResponseException getRestartResponseException() {
if (parameters == null) {
return new RestartResponseException(page);
return new RestartResponseException(pageClass);
} else {
return new RestartResponseException(page, parameters);
return new RestartResponseException(pageClass, parameters);
}
}

@Override
public boolean equals(Object o) {
if (this == o) { return true; }
if (o == null || getClass() != o.getClass()) { return false; }
if (!super.equals(o)) { return false; }
if (this == o) {return true;}
if (o == null || getClass() != o.getClass()) {return false;}
if (!super.equals(o)) {return false;}

BreadcrumbPageClass that = (BreadcrumbPageClass) o;

return Objects.equals(page, that.page)
return Objects.equals(pageClass, that.pageClass)
&& Objects.equals(parameters, that.parameters);
}

@Override
public int hashCode() {
return Arrays.hashCode(new Object[] { page, parameters });
return Arrays.hashCode(new Object[] { pageClass, parameters });
}

@Override
protected void extendsDebugDump(StringBuilder sb, int indent) {
super.extendsDebugDump(sb, indent);
sb.append("\n");
DebugUtil.debugDumpWithLabelLn(sb, "page", page, indent + 1);
DebugUtil.debugDumpWithLabelLn(sb, "page", pageClass, indent + 1);
DebugUtil.debugDumpWithLabel(sb, "parameters", parameters == null ? null : parameters.toString(), indent + 1);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,26 @@
*/
package com.evolveum.midpoint.web.component.breadcrumbs;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import com.evolveum.midpoint.web.util.NewWindowNotifyingBehavior;

import org.apache.commons.lang3.Validate;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import com.evolveum.midpoint.web.util.NewWindowNotifyingBehavior;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
* @author Viliam Repan (lazyman)
*/
@Deprecated
public class BreadcrumbPageInstance extends Breadcrumb {

private static final long serialVersionUID = 1L;

private final WebPage page;

public BreadcrumbPageInstance(IModel<String> label, WebPage page) {
Expand All @@ -39,6 +42,11 @@ public WebPage getPage() {
return page;
}

@Override
public Class<? extends WebPage> getPageClass() {
return page.getClass();
}

@Override
public PageParameters getParameters() {
return page.getPageParameters();
Expand All @@ -61,9 +69,9 @@ public RestartResponseException getRestartResponseException() {

@Override
public boolean equals(Object o) {
if (this == o) { return true; }
if (o == null || getClass() != o.getClass()) { return false; }
if (!super.equals(o)) { return false; }
if (this == o) {return true;}
if (o == null || getClass() != o.getClass()) {return false;}
if (!super.equals(o)) {return false;}

BreadcrumbPageInstance that = (BreadcrumbPageInstance) o;

Expand Down

0 comments on commit fad4d0d

Please sign in to comment.