package com.constellio.app.modules.rm.ui.pages.reports; import static com.constellio.app.ui.i18n.i18n.$; import com.constellio.app.ui.framework.buttons.BaseButton; import com.constellio.app.ui.framework.buttons.ReportButton; import com.constellio.app.ui.framework.buttons.WindowButton; import com.constellio.app.ui.framework.components.fields.lookup.LookupRecordField; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.server.ThemeResource; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.CssLayout; import com.vaadin.ui.Field; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.themes.ValoTheme; public class RMReportsViewImpl extends BaseViewImpl implements RMReportsView { public static final String OK_BUTTON = "seleniumOkButton"; private final RMNewReportsPresenter presenter; public RMReportsViewImpl() { presenter = new RMNewReportsPresenter(this); } @Override protected String getTitle() { return $("RMReportsView.viewTitle"); } @Override protected Component buildMainComponent(ViewChangeEvent event) { CssLayout layout = new CssLayout(); layout.addStyleName("view-group"); for (String report : presenter.getSupportedReports()) { if (presenter.isWithSchemaType(report)) { String schemaType = presenter.getSchemaTypeValue(report); WindowButton windowButton = buildLookupButton(schemaType, report); setReportButtonStyle(report, windowButton); layout.addComponent(windowButton); } else { ReportButton button = new ReportButton(report, presenter); layout.addComponent(button); } } return layout; } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonClicked(); } }; } private WindowButton buildLookupButton(final String schemaType, final String title) { return new WindowButton($(title), $(title)) { @Override protected Component buildWindowContent() { final Field<?> lookupSchemaType = new LookupRecordField(schemaType); lookupSchemaType.setCaption($("search")); lookupSchemaType.setId("schemaType"); lookupSchemaType.addStyleName("schemaType"); BaseButton okButton = new BaseButton($("Ok")) { @Override protected void buttonClick(ClickEvent event) { presenter.setSchemaTypeValue((String) lookupSchemaType.getValue()); ReportButton reportButton = new ReportButton(title, presenter); reportButton.click(); getWindow().close(); } }; okButton.addStyleName(OK_BUTTON); okButton.addStyleName(ValoTheme.BUTTON_PRIMARY); BaseButton cancelButton = new BaseButton($("cancel")) { @Override protected void buttonClick(ClickEvent event) { getWindow().close(); } }; cancelButton.addStyleName(ValoTheme.BUTTON_PRIMARY); HorizontalLayout horizontalLayout = new HorizontalLayout(); horizontalLayout.setSpacing(true); horizontalLayout.addComponents(okButton, cancelButton); VerticalLayout verticalLayout = new VerticalLayout(); verticalLayout.addComponents(lookupSchemaType, horizontalLayout); verticalLayout.setSpacing(true); return verticalLayout; } }; } private void setReportButtonStyle(String report, WindowButton windowButton) { String iconPathKey = report + ".icon"; String iconPath = $(iconPathKey); if (!iconPathKey.equals(iconPath)) { windowButton.setIcon(new ThemeResource(iconPath)); } windowButton.addStyleName(ValoTheme.BUTTON_ICON_ALIGN_TOP); windowButton.addStyleName(ValoTheme.BUTTON_BORDERLESS); } }