/******************************************************************************* * Copyright (c) 2010-2014 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.skalli.view.component; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.skalli.model.Project; import com.vaadin.data.Validator.InvalidValueException; import com.vaadin.ui.CheckBox; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Layout; public class PhaseSelect extends CustomField { private static final long serialVersionUID = -8351312392930159187L; private Project project; private List<String> phases; private ComboBox cb; private CheckBox deleted; private boolean readOnly; public PhaseSelect(String caption, Collection<?> phases, Project project, boolean showDeletedCheckbox) { setCaption(caption); this.project = project; this.phases = new ArrayList<String>(); if (phases != null) { if (!phases.contains(project.getPhase())) { addPhase(project.getPhase()); } for (Object phase : phases) { addPhase(phase.toString()); } } Layout layout = createLayout(showDeletedCheckbox); setCompositionRoot(layout); } private void addPhase(String phase) { phases.add(phase); } private Layout createLayout(boolean showDeletedCheckbox) { final FloatLayout layout = new FloatLayout(); cb = new ComboBox(null, phases); cb.setImmediate(true); layout.addComponent(cb); if (showDeletedCheckbox) { deleted = new CheckBox("Deleted", project.isDeleted()); deleted.setImmediate(true); layout.addComponent(deleted, "margin-left:20px;margin-top:3px"); } return layout; } public void setFilteringMode(int filteringMode) { cb.setFilteringMode(filteringMode); } public void setNewItemsAllowed(boolean allowNewOptions) { cb.setNewItemsAllowed(allowNewOptions); } public void setNullSelectionAllowed(boolean nullSelectionAllowed) { cb.setNullSelectionAllowed(nullSelectionAllowed); } public void select(Object itemId) { cb.select(itemId); } public boolean isDeleted() { return deleted != null ? ((Boolean) deleted.getValue()).booleanValue() : project.isDeleted(); } @Override public void setReadOnly(boolean readOnly) { this.readOnly = readOnly; cb.setReadOnly(readOnly); if (deleted != null) { deleted.setReadOnly(readOnly); } } @Override public boolean isReadOnly() { return readOnly; } @Override public void commit() throws SourceException, InvalidValueException { validate(); cb.commit(); project.setDeleted(isDeleted()); project.setPhase((String) cb.getValue()); } @Override public Class<?> getType() { return String.class; } }