package com.constellio.app.modules.tasks.ui.pages.tasks; import com.constellio.app.modules.tasks.ui.components.TaskTable; import com.constellio.app.modules.tasks.ui.components.breadcrumb.TaskBreadcrumbTrail; import com.constellio.app.modules.tasks.ui.components.display.TaskDisplayFactory; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.framework.buttons.AddButton; import com.constellio.app.ui.framework.buttons.ConfirmDialogButton; import com.constellio.app.ui.framework.buttons.DeleteButton; import com.constellio.app.ui.framework.buttons.EditButton; import com.constellio.app.ui.framework.components.RecordDisplay; import com.constellio.app.ui.framework.components.breadcrumb.BaseBreadcrumbTrail; import com.constellio.app.ui.framework.components.table.RecordVOTable; import com.constellio.app.ui.framework.components.table.columns.EventVOTableColumnsManager; import com.constellio.app.ui.framework.components.table.columns.TableColumnsManager; import com.constellio.app.ui.framework.containers.RecordVOLazyContainer; import com.constellio.app.ui.framework.data.RecordVODataProvider; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.*; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import org.vaadin.dialogs.ConfirmDialog; import java.util.ArrayList; import java.util.List; import static com.constellio.app.ui.i18n.i18n.$; public class DisplayTaskViewImpl extends BaseViewImpl implements DisplayTaskView { public static final String STYLE_NAME = "display-folder"; private final DisplayTaskPresenter presenter; private Component subTasks; private Component eventsComponent; private TabSheet tabSheet; private RecordDisplay recordDisplay; public DisplayTaskViewImpl() { presenter = new DisplayTaskPresenter(this); } @Override protected void initBeforeCreateComponents(ViewChangeEvent event) { presenter.initTaskVO(event.getParameters()); } @Override protected Component buildMainComponent(ViewChangeEvent event) { RecordVO currentTask = presenter.getTask(); VerticalLayout verticalLayout = new VerticalLayout(); recordDisplay = new RecordDisplay(currentTask, new TaskDisplayFactory()); subTasks = new CustomComponent(); tabSheet = new TabSheet(); tabSheet.addStyleName(STYLE_NAME); tabSheet.addTab(recordDisplay, $("DisplayTaskView.tabs.metadata")); tabSheet.addTab(subTasks, $("DisplayTaskView.tabs.subtasks", presenter.getSubTaskCount())); eventsComponent = new CustomComponent(); tabSheet.addTab(eventsComponent, $("DisplayTaskView.tabs.logs")); if(presenter.hasCurrentUserPermissionToViewEvents()) { tabSheet.getTab(eventsComponent).setEnabled(true); } else { tabSheet.getTab(eventsComponent).setEnabled(false); } tabSheet.addSelectedTabChangeListener(new TabSheet.SelectedTabChangeListener() { @Override public void selectedTabChange(TabSheet.SelectedTabChangeEvent event) { if (event.getTabSheet().getSelectedTab() == eventsComponent) { presenter.refreshEvents(); } } }); verticalLayout.addComponent(tabSheet); presenter.selectInitialTabForUser(); return verticalLayout; } @Override protected void afterViewAssembled(ViewChangeEvent event) { presenter.viewAssembled(); } @Override protected List<Button> buildActionMenuButtons(ViewChangeEvent event) { List<Button> actionMenuButtons = new ArrayList<>(); EditButton editCurrentTask = new EditButton($("DisplayTaskView.modifyTask")) { @Override protected void buttonClick(ClickEvent event) { presenter.editButtonClicked(); } @Override public boolean isVisible() { return super.isVisible() && presenter.isEditCurrentTaskButtonVisible(); } }; actionMenuButtons.add(editCurrentTask); ConfirmDialogButton autoAssignTask = new ConfirmDialogButton($("DisplayTaskView.autoAssignTask")) { @Override protected String getConfirmDialogMessage() { return $("DisplayTaskView.autoAssignTaskDialogMessage"); } @Override protected void confirmButtonClick(ConfirmDialog dialog) { presenter.autoAssignButtonClicked(); } @Override public boolean isVisible() { return super.isVisible() && presenter.isAutoAssignButtonEnabled(); } }; actionMenuButtons.add(autoAssignTask); ConfirmDialogButton completeTask = new ConfirmDialogButton($("DisplayTaskView.completeTask")) { @Override protected String getConfirmDialogMessage() { return $("DisplayTaskView.completeTaskDialogMessage"); } @Override protected void confirmButtonClick(ConfirmDialog dialog) { presenter.completeButtonClicked(); } @Override public boolean isVisible() { return super.isVisible() && presenter.isCompleteCurrentTaskButtonVisible(); } }; actionMenuButtons.add(completeTask); ConfirmDialogButton closeTask = new ConfirmDialogButton($("DisplayTaskView.closeTask")) { @Override protected String getConfirmDialogMessage() { return $("DisplayTaskView.closeTaskDialogMessage"); } @Override protected void confirmButtonClick(ConfirmDialog dialog) { presenter.closeButtonClicked(); } @Override public boolean isVisible() { return super.isVisible() && presenter.isCloseCurrentTaskButtonVisible(); } @Override public boolean isEnabled() { return super.isEnabled() && presenter.isCloseCurrentTaskButtonVisible(); } }; actionMenuButtons.add(closeTask); AddButton createSubTask = new AddButton($("DisplayTaskView.createSubTask"), false) { @Override protected void buttonClick(ClickEvent event) { presenter.createSubTaskButtonClicked(); } @Override public boolean isVisible() { return super.isVisible() && presenter.isCreateCurrentTaskSubTaskButtonVisible(); } }; actionMenuButtons.add(createSubTask); DeleteButton deleteTask = new DeleteButton($("DisplayTaskView.deleteTask")) { @Override protected void confirmButtonClick(ConfirmDialog dialog) { presenter.deleteButtonClicked(); } @Override public boolean isVisible() { return super.isVisible() && presenter.isDeleteCurrentTaskButtonVisible(); } }; actionMenuButtons.add(deleteTask); return actionMenuButtons; } @Override public void setSubTasks(RecordVODataProvider dataProvider) { Component table = new TaskTable(dataProvider, presenter); tabSheet.replaceComponent(subTasks, table); subTasks = table; } @Override public void setEvents(RecordVODataProvider dataProvider) { RecordVOTable table = new RecordVOTable($("DisplayTaskView.tabs.logs"), new RecordVOLazyContainer(dataProvider)) { @Override protected TableColumnsManager newColumnsManager() { return new EventVOTableColumnsManager(); } }; table.setSizeFull(); tabSheet.replaceComponent(eventsComponent, table); eventsComponent = table; } @Override public void selectMetadataTab() { tabSheet.setSelectedTab(recordDisplay); } @Override public void selectTasksTab() { tabSheet.setSelectedTab(subTasks); } protected String getTitle() { // return $("DisplayTaskView.viewTitle", presenter.getTaskTitle()); return null; } @Override protected BaseBreadcrumbTrail buildBreadcrumbTrail() { RecordVO currentTask = presenter.getTask(); String recordId = currentTask.getId(); return new TaskBreadcrumbTrail(recordId, this); } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonClicked(); } }; } @Override public void refreshSubTasksTable() { // TODO: Reimplement } }