package com.constellio.app.modules.robots.ui.components.breadcrumb;
import java.io.Serializable;
import com.constellio.app.modules.robots.model.services.RobotsService;
import com.constellio.app.modules.robots.model.wrappers.Robot;
import com.constellio.app.modules.robots.ui.navigation.RobotViews;
import com.constellio.app.ui.framework.components.breadcrumb.BreadcrumbItem;
import com.constellio.app.ui.framework.components.breadcrumb.BreadcrumbTrail;
import com.constellio.app.ui.util.SchemaCaptionUtils;
public class RobotBreadcrumbTrailPresenter implements Serializable {
private final BreadcrumbTrail trail;
private final String robotId;
public RobotBreadcrumbTrailPresenter(BreadcrumbTrail trail, String robotId) {
this.trail = trail;
this.robotId = robotId;
}
public RobotBreadcrumbTrailPresenter createItems() {
for (Robot robot : service().loadAncestors(robotId)) {
String id = robot.getId();
String caption = SchemaCaptionUtils.getCaptionForRecord(robot.getWrappedRecord());
boolean current = robotId.equals(id);
trail.addItem(new RobotBreadcrumbItem(id, caption, !current));
}
return this;
}
public boolean itemClicked(BreadcrumbItem item) {
boolean handled;
if (item instanceof RobotBreadcrumbItem) {
handled = true;
RobotBreadcrumbItem robotBreadcrumbItem = (RobotBreadcrumbItem) item;
trail.navigate().to(RobotViews.class).robotConfiguration(robotBreadcrumbItem.getId());
} else {
handled = false;
}
return handled;
}
private RobotsService service() {
return new RobotsService(
trail.getSessionContext().getCurrentCollection(), trail.getConstellioFactories().getAppLayerFactory());
}
public static class RobotBreadcrumbItem implements BreadcrumbItem {
private final String id;
private final String label;
private final boolean enabled;
public RobotBreadcrumbItem(String id, String label, boolean enabled) {
this.id = id;
this.label = label;
this.enabled = enabled;
}
public String getId() {
return id;
}
@Override
public String getLabel() {
return label;
}
@Override
public boolean isEnabled() {
return enabled;
}
}
}