package org.sigmah.client.ui.view.admin.models.project;
/*
* #%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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.sigmah.client.i18n.I18N;
import org.sigmah.client.ui.presenter.admin.models.project.EditPhaseModelAdminPresenter;
import org.sigmah.client.ui.res.icon.IconImageBundle;
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.client.util.ClientUtils;
import org.sigmah.shared.dto.PhaseModelDTO;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.inject.Singleton;
/**
* {@link EditPhaseModelAdminPresenter}'s view implementation.
*
* @author Denis Colliot (dcolliot@ideia.fr)
*/
@Singleton
public class EditPhaseModelAdminView extends AbstractPopupView<PopupWidget> implements EditPhaseModelAdminPresenter.View {
private Map<CheckBox, PhaseModelDTO> successors;
private FormPanel form;
private TextField<String> nameField;
private FlowPanel successorsPanel;
private CheckBox rootField;
private NumberField displayOrderField;
private TextField<String> guideField;
private Button saveButton;
/**
* Builds the view.
*/
public EditPhaseModelAdminView() {
super(new PopupWidget(true), 500);
}
/**
* {@inheritDoc}
*/
@Override
public void initialize() {
successors = new HashMap<CheckBox, PhaseModelDTO>();
// --
// Form.
// --
form = Forms.panel(130);
// --
// Name field.
// --
nameField = Forms.text(I18N.CONSTANTS.adminPhaseName(), true);
// --
// Successors field.
// Cannot use a CheckBoxGroup for this field due to 'post-render' checkBox(es) insertion.
// --
successorsPanel = new FlowPanel();
final Field<Object> successorsField = Forms.adapter(I18N.CONSTANTS.adminPhaseSuccessors(), successorsPanel);
// --
// Root field.
// --
rootField = Forms.checkbox(I18N.CONSTANTS.adminPhaseModelRoot(), null, I18N.CONSTANTS.adminPhaseModelRoot(), false);
// --
// Display order field.
// --
displayOrderField = Forms.number(I18N.CONSTANTS.adminPhaseOrder(), true, false);
// --
// Guide field.
// --
guideField = Forms.text(I18N.CONSTANTS.projectPhaseGuideHeader(), false);
// --
// Save button.
// --
saveButton = Forms.button(I18N.CONSTANTS.adminOrgUnitCreateButton(), IconImageBundle.ICONS.save());
// --
// View initialization.
// --
form.add(nameField);
form.add(successorsField);
form.add(rootField);
form.add(displayOrderField);
form.add(guideField);
form.addButton(saveButton);
initPopup(form);
}
/**
* {@inheritDoc}
*/
@Override
public FormPanel getForm() {
return form;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> getNameField() {
return nameField;
}
/**
* {@inheritDoc}
*/
@Override
public Field<Boolean> getRootField() {
return rootField;
}
/**
* {@inheritDoc}
*/
@Override
public Field<Number> getDisplayOrderField() {
return displayOrderField;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> getGuideField() {
return guideField;
}
/**
* {@inheritDoc}
*/
@Override
public Button getSaveButton() {
return saveButton;
}
/**
* {@inheritDoc}
*/
@Override
public void clearSuccessors() {
successorsPanel.clear();
successors.clear();
}
/**
* {@inheritDoc}
*/
@Override
public void addSuccessor(final PhaseModelDTO successor, boolean selected) {
if (successor == null) {
return;
}
final CheckBox checkBox = Forms.checkbox(successor.getName(), String.valueOf(successor.getId()), selected);
successorsPanel.add(checkBox);
successors.put(checkBox, successor);
}
/**
* {@inheritDoc}
*/
@Override
public List<PhaseModelDTO> getSelectedSuccessors() {
final List<PhaseModelDTO> selectedSuccessors = new ArrayList<PhaseModelDTO>();
for (final Entry<CheckBox, PhaseModelDTO> successor : successors.entrySet()) {
if (ClientUtils.isTrue(successor.getKey().getValue())) {
selectedSuccessors.add(successor.getValue());
}
}
return selectedSuccessors;
}
}