| /******************************************************************************* |
| * Copyright (c) 2000, 2003 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jface.viewers; |
| |
| import org.eclipse.jface.util.Assert; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| |
| /** |
| * A cell editor that manages a checkbox. |
| * The cell editor's value is a boolean. |
| * <p> |
| * This class may be instantiated; it is not intended to be subclassed. |
| * </p> |
| * <p> |
| * Note that this implementation simply fakes it and does does not create |
| * any new controls. The mere activation of this editor means that the value |
| * of the check box is being toggled by the end users; the listener method |
| * <code>applyEditorValue</code> is immediately called to signal the change. |
| * </p> |
| */ |
| public class CheckboxCellEditor extends CellEditor { |
| |
| /** |
| * The checkbox value. |
| */ |
| /* package */ |
| boolean value = false; |
| |
| /** |
| * Default CheckboxCellEditor style |
| */ |
| private static final int defaultStyle = SWT.NONE; |
| |
| /** |
| * Creates a new checkbox cell editor with no control |
| * @since 2.1 |
| */ |
| public CheckboxCellEditor() { |
| setStyle(defaultStyle); |
| } |
| |
| /** |
| * Creates a new checkbox cell editor parented under the given control. |
| * The cell editor value is a boolean value, which is initially <code>false</code>. |
| * Initially, the cell editor has no cell validator. |
| * |
| * @param parent the parent control |
| */ |
| public CheckboxCellEditor(Composite parent) { |
| this(parent, defaultStyle); |
| } |
| |
| /** |
| * Creates a new checkbox cell editor parented under the given control. |
| * The cell editor value is a boolean value, which is initially <code>false</code>. |
| * Initially, the cell editor has no cell validator. |
| * |
| * @param parent the parent control |
| * @param style the style bits |
| * @since 2.1 |
| */ |
| public CheckboxCellEditor(Composite parent, int style) { |
| super(parent, style); |
| } |
| |
| /** |
| * The <code>CheckboxCellEditor</code> implementation of |
| * this <code>CellEditor</code> framework method simulates |
| * the toggling of the checkbox control and notifies |
| * listeners with <code>ICellEditorListener.applyEditorValue</code>. |
| */ |
| public void activate() { |
| value = !value; |
| fireApplyEditorValue(); |
| } |
| |
| /** |
| * The <code>CheckboxCellEditor</code> implementation of |
| * this <code>CellEditor</code> framework method does |
| * nothing and returns <code>null</code>. |
| */ |
| protected Control createControl(Composite parent) { |
| return null; |
| } |
| |
| /** |
| * The <code>CheckboxCellEditor</code> implementation of |
| * this <code>CellEditor</code> framework method returns |
| * the checkbox setting wrapped as a <code>Boolean</code>. |
| * |
| * @return the Boolean checkbox value |
| */ |
| protected Object doGetValue() { |
| return new Boolean(value); |
| } |
| |
| /* (non-Javadoc) |
| * Method declared on CellEditor. |
| */ |
| protected void doSetFocus() { |
| // Ignore |
| } |
| |
| /** |
| * The <code>CheckboxCellEditor</code> implementation of |
| * this <code>CellEditor</code> framework method accepts |
| * a value wrapped as a <code>Boolean</code>. |
| * |
| * @param value a Boolean value |
| */ |
| protected void doSetValue(Object value) { |
| Assert.isTrue(value instanceof Boolean); |
| this.value = ((Boolean) value).booleanValue(); |
| } |
| } |