/******************************************************************************* * Copyright (c) 2007 - 2012 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.ui.widget.editor; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.List; import org.eclipse.core.runtime.Assert; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.jboss.tools.common.ui.widget.field.RadioField; /** * * @author Viacheslav Kabanovich */ public class RadioFieldEditor extends BaseFieldEditor implements ITaggedFieldEditor,PropertyChangeListener{ List values = null; List<String> labels; List<String> valueDescriptions; RadioField radioField; public RadioFieldEditor(String name, String label, List<String> labels, List values,Object defaultValue) { super(name, label, defaultValue); this.labels = labels; this.values = Collections.unmodifiableList(values); } public RadioFieldEditor(String name, String label, List<String> labels, List values,Object defaultValue, List<String> valueDescriptions) { this(name, label, labels, values, defaultValue); this.valueDescriptions = valueDescriptions; } @Override public Object[] getEditorControls(Object composite) { return new Control[] {getComboControl((Composite)composite)}; } @Override public void doFillIntoGrid(Object parent) { } public Control getComboControl(Composite composite) { if(radioField == null) { radioField = new RadioField(composite,labels, values,getValue(), false, valueDescriptions); radioField.addPropertyChangeListener(this); } else if(composite!=null) { Assert.isTrue(radioField.getControl().getParent()==composite); } return radioField.getControl(); } @Override public Object[] getEditorControls() { return new Control[]{radioField.getControl()}; } public void save(Object object) { } public void propertyChange(PropertyChangeEvent evt) { setValue(evt.getNewValue()); } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.widget.editor.ITaggedFieldEditor#getTags() */ public String[] getTags() { String[] result = new String[values.size()]; for (int i = 0; i < result.length; i++) result[i] = values.get(0).toString(); return result; } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.widget.editor.ITaggedFieldEditor#setTags(java.lang.String[]) */ public void setTags(String[] tags) { values.clear(); for (int i = 0; i < tags.length; i++) values.add(tags[i]); //TODO // radioField.setTags(tags,getValueAsString()); } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.widget.editor.BaseFieldEditor#getNumberOfControls() */ @Override public int getNumberOfControls() { return 1; } public void setValue(Object newValue) { if(newValue==null) { return; } super.setValue(newValue); if(radioField!=null) { radioField.removePropertyChangeListener(this); radioField.setValue(newValue.toString()); radioField.addPropertyChangeListener(this); } } }