package com.constellio.app.modules.rm.ui.pages.retentionRule; import static com.constellio.app.ui.i18n.i18n.$; import java.util.ArrayList; import java.util.List; import org.vaadin.dialogs.ConfirmDialog; import com.constellio.app.modules.rm.ui.components.retentionRule.RetentionRuleDisplay; import com.constellio.app.modules.rm.ui.entities.RetentionRuleVO; import com.constellio.app.ui.framework.buttons.DeleteButton; import com.constellio.app.ui.framework.buttons.EditButton; import com.constellio.app.ui.framework.components.BaseDisplay; import com.constellio.app.ui.framework.components.BaseDisplay.CaptionAndComponent; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; public class DisplayRetentionRuleViewImpl extends BaseViewImpl implements DisplayRetentionRuleView { public static final String STYLE_NAME = "display-folder"; private RetentionRuleVO retentionRuleVO; private VerticalLayout mainLayout; private RetentionRuleDisplay recordDisplay; private Button editButton, deleteButton; private DisplayRetentionRulePresenter presenter; public DisplayRetentionRuleViewImpl() { presenter = new DisplayRetentionRulePresenter(this); } @Override protected void initBeforeCreateComponents(ViewChangeEvent event) { presenter.forParams(event.getParameters()); } @Override public void setRetentionRule(RetentionRuleVO retentionRuleVO) { this.retentionRuleVO = retentionRuleVO; } @Override protected String getTitle() { return $("DisplayRetentionRuleView.viewTitle"); } @Override protected Component buildMainComponent(ViewChangeEvent event) { mainLayout = new VerticalLayout(); mainLayout.setSizeFull(); recordDisplay = new RetentionRuleDisplay(presenter, retentionRuleVO); recordDisplay.setWidth("100%"); mainLayout.addComponent(recordDisplay); Component component = buildAdditionalComponent(); mainLayout.addComponent(component); return mainLayout; } private Component buildAdditionalComponent() { Label foldersNumberCaptionLabel = new Label($("DisplayRetentionRuleView.foldersNumber")); foldersNumberCaptionLabel.setId("foldersNumber"); foldersNumberCaptionLabel.addStyleName("foldersNumber"); Label foldersNumberDisplayComponent = new Label(presenter.getFoldersNumber()); foldersNumberDisplayComponent.addStyleName("display-value-foldersNumber"); List<CaptionAndComponent> captionsAndComponents = new ArrayList<>(); captionsAndComponents.add(new CaptionAndComponent(foldersNumberCaptionLabel, foldersNumberDisplayComponent)); return new BaseDisplay(captionsAndComponents); } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonClicked(); } }; } @Override protected List<Button> buildActionMenuButtons(ViewChangeEvent event) { List<Button> actionMenuButtons = super.buildActionMenuButtons(event); editButton = new EditButton(false) { @Override protected void buttonClick(ClickEvent event) { presenter.editButtonClicked(); } }; deleteButton = new DeleteButton(false) { @Override protected void confirmButtonClick(ConfirmDialog dialog) { presenter.deleteButtonClicked(); } }; deleteButton.setEnabled(presenter.isDeletable(retentionRuleVO)); actionMenuButtons.add(editButton); actionMenuButtons.add(deleteButton); return actionMenuButtons; } }