package com.constellio.app.modules.rm.ui.components.breadcrumb;
import com.constellio.app.modules.rm.ui.components.breadcrumb.FolderDocumentBreadcrumbTrailPresenter.DocumentBreadcrumbItem;
import com.constellio.app.modules.rm.ui.components.breadcrumb.FolderDocumentBreadcrumbTrailPresenter.FolderBreadcrumbItem;
import com.constellio.app.modules.rm.ui.components.breadcrumb.FolderDocumentBreadcrumbTrailPresenter.TaxonomyBreadcrumbItem;
import com.constellio.app.modules.rm.ui.components.breadcrumb.FolderDocumentBreadcrumbTrailPresenter.TaxonomyElementBreadcrumbItem;
import com.constellio.app.ui.application.ConstellioUI;
import com.constellio.app.ui.framework.components.breadcrumb.BreadcrumbItem;
import com.constellio.app.ui.framework.components.breadcrumb.CollectionBreadcrumbItem;
import com.constellio.app.ui.framework.components.breadcrumb.SearchResultsBreadcrumbItem;
import com.constellio.app.ui.framework.components.breadcrumb.TitleBreadcrumbTrail;
import com.constellio.app.ui.pages.base.BaseView;
import com.constellio.app.ui.pages.base.UIContext;
import com.constellio.app.ui.pages.base.UIContextProvider;
import com.constellio.app.ui.util.FileIconUtils;
import com.vaadin.server.Resource;
import com.vaadin.ui.Button;
public class FolderDocumentBreadcrumbTrail extends TitleBreadcrumbTrail implements UIContextProvider {
private FolderDocumentBreadcrumbTrailPresenter presenter;
public FolderDocumentBreadcrumbTrail(String recordId, String taxonomyCode, BaseView view) {
super(view, null);
this.presenter = new FolderDocumentBreadcrumbTrailPresenter(recordId, taxonomyCode, this);
}
@Override
protected Button newButton(BreadcrumbItem item) {
Button button = super.newButton(item);
String recordId;
if (item instanceof FolderBreadcrumbItem) {
recordId = ((FolderBreadcrumbItem) item).getFolderId();
} else if (item instanceof DocumentBreadcrumbItem) {
recordId = ((DocumentBreadcrumbItem) item).getDocumentId();
} else if (item instanceof TaxonomyElementBreadcrumbItem) {
recordId = ((TaxonomyElementBreadcrumbItem) item).getTaxonomyElementId();
} else if (item instanceof TaxonomyBreadcrumbItem) {
recordId = null;
} else if (item instanceof CollectionBreadcrumbItem) {
recordId = null;
} else if (item instanceof SearchResultsBreadcrumbItem) {
recordId = null;
} else {
throw new RuntimeException("Unrecognized breadcrumb item type : " + item.getClass());
}
if (recordId != null) {
Resource icon = FileIconUtils.getIconForRecordId(recordId);
button.setIcon(icon);
}
return button;
}
@Override
protected void itemClick(BreadcrumbItem item) {
if (!presenter.itemClicked(item)) {
super.itemClick(item);
}
}
@Override
public UIContext getUIContext() {
return ConstellioUI.getCurrent();
}
}