package com.constellio.app.ui.pages.imports; import static com.constellio.app.ui.i18n.i18n.$; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import com.constellio.app.ui.framework.buttons.BaseButton; import com.constellio.app.ui.framework.buttons.DownloadLink; 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.Page; import com.vaadin.server.Resource; import com.vaadin.server.StreamResource; import com.vaadin.server.StreamResource.StreamSource; 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.TextArea; import com.vaadin.ui.VerticalLayout; public class ExportViewImpl extends BaseViewImpl implements ExportView { private TextArea idsField; private Button exportWithoutContentsButton; private Button exportWithContentsButton; private Button exportLogs; private Button exportTools; private final ExportPresenter presenter; public ExportViewImpl() { presenter = new ExportPresenter(this); } @Override protected String getTitle() { return $("ExportView.viewTitle"); } @Override protected ClickListener getBackButtonClickListener() { return new ClickListener() { @Override public void buttonClick(ClickEvent event) { presenter.backButtonPressed(); } }; } @Override protected Component buildMainComponent(ViewChangeEvent event) { idsField = new BaseTextArea($("ExportView.exportedIds")); idsField.setWidth("100%"); exportWithoutContentsButton = new BaseButton($("ExportView.exportNoContents")) { @Override protected void buttonClick(ClickEvent event) { presenter.exportWithoutContentsButtonClicked(); } }; exportTools = new BaseButton($("ExportView.exportTools")) { @Override protected void buttonClick(ClickEvent event) { presenter.exportToolsButtonClicked(); } }; exportWithContentsButton = new BaseButton($("ExportView.exportAllContents")) { @Override protected void buttonClick(ClickEvent event) { presenter.exportWithContentsButtonClicked(); } }; exportLogs = new BaseButton($("ExportView.exportLogs")) { @Override protected void buttonClick(ClickEvent event) { presenter.exportLogs(); } }; exportWithContentsButton.setVisible(false); VerticalLayout layout = new VerticalLayout(idsField, exportWithoutContentsButton, exportWithContentsButton, exportTools, exportLogs); layout.setSizeFull(); layout.setSpacing(true); return layout; } @Override public String getExportedIds() { return idsField.getValue(); } @SuppressWarnings("deprecation") @Override public void startDownload(final String filename, final InputStream inputStream, final String mimeType) { StreamSource streamSource = new StreamSource() { @Override public InputStream getStream() { return inputStream; } }; StreamResource resource = new StreamResource(streamSource, filename); resource.setMIMEType(mimeType); Page.getCurrent().open(resource, "_blank", false); } }