package com.constellio.app.modules.rm.ui.pages.systemCheck; import static com.constellio.app.ui.i18n.i18n.$; import com.constellio.app.ui.framework.buttons.BaseButton; import com.constellio.app.ui.framework.buttons.DownloadLink; import com.constellio.app.ui.framework.components.ReportViewer; import com.constellio.app.ui.framework.components.fields.BaseTextArea; import com.constellio.app.ui.pages.base.BaseViewImpl; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.server.*; import com.vaadin.ui.*; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class SystemCheckViewImpl extends BaseViewImpl implements SystemCheckView { private SystemCheckPresenter presenter; private VerticalLayout mainLayout; private HorizontalLayout buttonsLayout, referenceLayout; private Label systemCheckInfoLabel; private Button startSystemCheckButton; private Button startSystemCheckAndRepairButton; private Button optainsReferences; private TextField idField; private BaseTextArea reportContentField; public SystemCheckViewImpl() { this.presenter = new SystemCheckPresenter(this); } @Override protected Component buildMainComponent(ViewChangeEvent event) { mainLayout = new VerticalLayout(); mainLayout.setWidth("100%"); mainLayout.setSpacing(true); buttonsLayout = new HorizontalLayout(); buttonsLayout.setSpacing(true); systemCheckInfoLabel = new Label(); startSystemCheckButton = new BaseButton($("SystemCheckView.startSystemCheck")) { @Override protected void buttonClick(ClickEvent event) { presenter.startSystemCheckButtonClicked(); } }; startSystemCheckAndRepairButton = new BaseButton($("SystemCheckView.startSystemCheckAndRepair")) { @Override protected void buttonClick(ClickEvent event) { presenter.startSystemCheckAndRepairButtonClicked(); } }; reportContentField = new BaseTextArea($("SystemCheckView.reportContent")); reportContentField.setWidth("100%"); reportContentField.setHeight("100%"); reportContentField.setEnabled(true); referenceLayout = new HorizontalLayout(); referenceLayout.setSpacing(true); idField = new TextField(); optainsReferences = new Button($("SystemCheckView.optainsReferences")); optainsReferences.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { System.out.println(idField.getValue()); File report = presenter.getReferencesFor(idField.getValue()); Resource resource = DownloadLink.wrapForDownload(new FileResource(report)); Page.getCurrent().open(resource, "download", false); } }); referenceLayout.addComponents(idField, optainsReferences); mainLayout.addComponents(systemCheckInfoLabel, buttonsLayout, reportContentField, referenceLayout); buttonsLayout.addComponents(startSystemCheckButton, startSystemCheckAndRepairButton); return mainLayout; } @Override public void setSystemCheckRunning(boolean running) { if (running) { systemCheckInfoLabel.setValue($("SystemCheckView.systemCheckRunning")); } else { systemCheckInfoLabel.setValue($("SystemCheckView.systemCheckNotRunning")); } startSystemCheckButton.setEnabled(!running); startSystemCheckAndRepairButton.setEnabled(!running); } @Override public void setReportContent(String reportContent) { reportContentField.setValue(reportContent); } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonClicked(); } }; } @Override protected String getTitle() { return $("SystemCheckView.viewTitle"); } @Override protected boolean isBackgroundViewMonitor() { return true; } @Override protected void onBackgroundViewMonitor() { presenter.viewRefreshed(); } @Override protected void afterViewAssembled(ViewChangeEvent event) { presenter.viewAssembled(); } }