package org.sigmah.client.ui.view.importation; /* * #%L * Sigmah * %% * Copyright (C) 2010 - 2016 URD * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import com.extjs.gxt.ui.client.Style; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.widget.form.CheckBox; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.extjs.gxt.ui.client.widget.form.Field; import com.extjs.gxt.ui.client.widget.form.FileUploadField; import com.extjs.gxt.ui.client.widget.form.Radio; import com.extjs.gxt.ui.client.widget.form.RadioGroup; import com.google.gwt.user.client.ui.Label; import java.util.Arrays; import org.sigmah.client.i18n.I18N; import org.sigmah.client.ui.presenter.importation.ImportationPresenter; import org.sigmah.client.ui.view.base.AbstractPopupView; import org.sigmah.client.ui.widget.button.Button; import org.sigmah.client.ui.widget.form.FormPanel; import org.sigmah.client.ui.widget.form.Forms; import org.sigmah.client.ui.widget.popup.PopupWidget; import org.sigmah.shared.dto.importation.ImportationSchemeDTO; import org.sigmah.shared.dto.value.FileUploadUtils; /** * View of {@link ImportationPresenter}. * * This view is a popup that contains a a file selector and a combo box to * select the import scheme to use. * * @author Raphaƫl Calabro (rcalabro@ideia.fr) */ public class ImportationView extends AbstractPopupView<PopupWidget> implements ImportationPresenter.View { private FormPanel form; private ComboBox<ImportationSchemeDTO> schemeField; private FileUploadField fileField; private Button importButton; private ImportDetailsPopup importDetailsPopup; private ElementExtractedValuePopup elementExtractedValuePopup; private AutomatedImportResultPopup automatedImportResultPopup; private Radio massImportRadio; private CheckBox newProjectsPolicyField; private CheckBox projectCorePolicyField; private Radio multipleMatchRadio; public ImportationView() { super(new PopupWidget(true)); } /** * {@inheritDoc} */ @Override public void initialize() { // Importation details popup. importDetailsPopup = new ImportDetailsPopup(); importDetailsPopup.initialize(); // Element extracted value popup. elementExtractedValuePopup = new ElementExtractedValuePopup(); elementExtractedValuePopup.initialize(); // Automated import result popup. automatedImportResultPopup = new AutomatedImportResultPopup(); automatedImportResultPopup.initialize(); // Scheme field. schemeField = Forms.combobox(I18N.CONSTANTS.adminImportationScheme(), true, ImportationSchemeDTO.ID, ImportationSchemeDTO.NAME); schemeField.setName(FileUploadUtils.DOCUMENT_ID); // File field. fileField = Forms.upload(I18N.CONSTANTS.adminFileImport()); fileField.setName(FileUploadUtils.DOCUMENT_CONTENT); // Mass import fields. massImportRadio = Forms.radio(I18N.CONSTANTS.importationModeMass(), Boolean.TRUE); final RadioGroup massImportRadioGroup = Forms.radioGroup(I18N.CONSTANTS.importationMode(), Style.Orientation.VERTICAL, massImportRadio, Forms.radio(I18N.CONSTANTS.importationModeWithControl())); newProjectsPolicyField = Forms.checkbox(I18N.CONSTANTS.importationMassParameterCreateNewProjects()); projectCorePolicyField = Forms.checkbox(I18N.CONSTANTS.importationMassParameterUnlockCores()); multipleMatchRadio = Forms.radio(I18N.CONSTANTS.importationMassParameterMultipleMatchesAll()); final RadioGroup multipleMatchRadioGroup = Forms.radioGroup("", multipleMatchRadio, Forms.radio(I18N.CONSTANTS.importationMassParameterMultipleMatchesNone(), Boolean.TRUE)); for (final Field<?> field : Arrays.asList(newProjectsPolicyField, projectCorePolicyField, multipleMatchRadioGroup)) { field.setHideLabel(true); } // Import button. importButton = Forms.button(I18N.CONSTANTS.importItem()); // Building the form. form = Forms.panel(); form.add(schemeField); form.add(fileField); form.add(massImportRadioGroup); form.add(createText(I18N.CONSTANTS.importationMassParameters(), true)); form.add(newProjectsPolicyField); form.add(projectCorePolicyField); form.add(createText(I18N.CONSTANTS.importationMassParameterMultipleMatches(), false)); form.add(multipleMatchRadioGroup); form.addButton(importButton); initPopup(form); } /** * Creates a simple text element. Since it is not a {@link Field}, it will * take the full width of the layout. * * @param text * Text du use. * @param bold * <code>true</code> to set <code>font-weight</code> CSS property as <code>bold</code>, * <code>false</code> otherwise. * @return A new <code>Label</code> containing the given text. */ private Label createText(final String text, final boolean bold) { final Label label = new Label(text); label.addStyleName("x-form-item"); if (bold) { label.getElement().getStyle().setFontWeight(com.google.gwt.dom.client.Style.FontWeight.BOLD); } return label; } /** * {@inheritDoc} */ @Override public FormPanel[] getForms() { return new FormPanel[] { form }; } /** * {@inheritDoc} */ @Override public Field<ImportationSchemeDTO> getSchemeField() { return schemeField; } /** * {@inheritDoc} */ @Override public FileUploadField getFileField() { return fileField; } /** * {@inheritDoc} */ @Override public Field<Boolean> getAutomatedField() { return massImportRadio; } /** * {@inheritDoc} */ @Override public Field<Boolean> getNewProjectsPolicyField() { return newProjectsPolicyField; } /** * {@inheritDoc} */ @Override public Field<Boolean> getProjectCorePolicyField() { return projectCorePolicyField; } /** * {@inheritDoc} */ @Override public Radio getMultipleMatchPolicyField() { return multipleMatchRadio; } /** * {@inheritDoc} */ @Override public Button getImportButton() { return importButton; } /** * {@inheritDoc} */ @Override public ListStore<ImportationSchemeDTO> getSchemeListStore() { return schemeField.getStore(); } /** * {@inheritDoc} */ @Override public ImportDetailsPopup getImportDetailsPopup() { return importDetailsPopup; } /** * {@inheritDoc} */ @Override public ElementExtractedValuePopup getElementExtractedValuePopup() { return elementExtractedValuePopup; } /** * {@inheritDoc} */ @Override public AutomatedImportResultPopup getAutomatedImportResultPopup() { return automatedImportResultPopup; } }