/******************************************************************************* * Copyright (c) 2007 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 * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.ui.widget.editor; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.eclipse.core.runtime.Assert; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.jboss.tools.common.ui.widget.field.CheckBoxField; /** * @author eskimo * */ public class CheckBoxFieldEditor extends BaseFieldEditor implements PropertyChangeListener { private Control checkBoxControl; /** * @param name * @param label * @param defaultValue */ public CheckBoxFieldEditor(String name, String label, Object defaultValue) { super(name, label, defaultValue); } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.internal.project.facet.BaseFieldEditor#createEditorControls(java.lang.Object) */ @Override public Object[] getEditorControls(Object composite) { return new Control[] {createCheckBoxControl((Composite)composite)}; } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.internal.project.facet.BaseFieldEditor#getEditorControls() */ @Override public Object[] getEditorControls() { return new Control[] {getCheckBoxControl()}; } public Control getCheckBoxControl() { return createCheckBoxControl(null); } private Control createCheckBoxControl(Composite parent) { if(checkBoxControl==null) { CheckBoxField checkBoxFild= new CheckBoxField(parent); checkBoxFild.addPropertyChangeListener(this); checkBoxControl = checkBoxFild.getCheckBox(); if(getValue() instanceof Boolean) { checkBoxFild.getCheckBox().setSelection(((Boolean)getValue()).booleanValue()); } } else if(parent!=null) { Assert.isTrue(checkBoxControl.getParent()==parent); } return checkBoxControl; } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.internal.project.facet.IFieldEditor#isEditable() */ @Override public boolean isEditable() { return false; } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.internal.project.facet.IFieldEditor#save(java.lang.Object) */ public void save(Object object) { } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.internal.project.facet.IFieldEditor#setEditable(boolean) */ @Override public void setEditable(boolean ediatble) { } @Override public void setValue(Object newValue) { if (checkBoxControl != null) { ((Button)checkBoxControl).setSelection(Boolean.parseBoolean(newValue.toString())); } super.setValue(newValue); } @Override public void doFillIntoGrid(Object parent) { } public void propertyChange(PropertyChangeEvent evt) { setValue(evt.getNewValue()); } /* (non-Javadoc) * @see org.jboss.tools.seam.ui.widget.editor.BaseFieldEditor#getNumberOfControls() */ @Override public int getNumberOfControls() { return 1; } }