blob: 1d5936a1f46cb237fec38b85283233d00dc811b1 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 IBM Corporation 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.ui.celleditors;
import org.eclipse.epf.authoring.ui.AuthoringUIPlugin;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
/**
* Check Box cell editor for process form page, WBS, TA, WPU
*
* @author An Ming
* @author Shilpa Toraskar
* @since 1.2
*/
public class ProcessCheckBoxCellEditor extends AbstractCheckBoxCellEditor {
// checkbox images
private final Image checkImage = AuthoringUIPlugin.getDefault().getSharedImage(
"full/obj16/Check.gif");
private final Image uncheckImage = AuthoringUIPlugin.getDefault().getSharedImage(
"full/obj16/Uncheck.gif");
private final Image disableCheckImage = AuthoringUIPlugin.getDefault().getSharedImage(
"full/obj16/DisableCheck.gif");
private final Image disableUncheckImage = AuthoringUIPlugin.getDefault().getSharedImage(
"full/obj16/DisableUnCheck.gif");
private SelectionListener listener;
/**
* Constructor
* @param tree
*/
public ProcessCheckBoxCellEditor(Composite tree) {
super(tree);
}
/* (non-Javadoc)
* @see org.eclipse.epf.authoring.ui.celleditors.AbstractCheckBoxCellEditor#getImage(org.eclipse.swt.widgets.TreeItem, java.lang.String)
*/
public Image getImage(TreeItem item, String columnproperty) {
final ICellModifier modifier = getCellModifier();
Object element = item.getData();
if (element == null)
return null;
// if (columnproperty == IBSItemProvider.COL_IS_ONGOING
// || columnproperty == IBSItemProvider.COL_IS_REPEATABLE
// || columnproperty == IBSItemProvider.COL_IS_EVENT_DRIVEN) {
// if (!(TngUtil.unwrap(element) instanceof WorkBreakdownElement)) {
// return null;
// }
// }
Object value = modifier.getValue(element, columnproperty);
if (value == null || !(value instanceof Boolean))
return null;
boolean canModify = modifier.canModify(element, columnproperty);
if (((Boolean) value).booleanValue()) {
return canModify ? checkImage : disableCheckImage;
} else {
return canModify ? uncheckImage : disableUncheckImage;
}
}
/* (non-Javadoc)
* @see org.eclipse.epf.authoring.ui.celleditors.AbstractCheckBoxCellEditor#modify(org.eclipse.swt.widgets.TreeItem, java.lang.String)
*/
public void modify(TreeItem item, String columnproperty) {
final ICellModifier modifier = getCellModifier();
if (!modifier.canModify(item.getData(), columnproperty))
return;
modifier.modify(item, columnproperty, new Boolean(!((Boolean) modifier
.getValue(item.getData(), columnproperty)).booleanValue()));
}
/*
* =======in fact below codes are for the dynamic cell editor (real control
* "button")=====
*/
/* (non-Javadoc)
* @see org.eclipse.epf.authoring.ui.celleditors.AbstractCheckBoxCellEditor#createControl(org.eclipse.swt.widgets.Tree)
*/
protected Control createControl(Tree parent) {
Button button = new Button(parent, SWT.CHECK);
button.pack();
return button;
}
/* (non-Javadoc)
* @see org.eclipse.epf.authoring.ui.celleditors.AbstractCheckBoxCellEditor#hookControl(org.eclipse.swt.widgets.Control, org.eclipse.swt.widgets.TreeItem, java.lang.String)
*/
protected void hookControl(Control control, TreeItem item,
final String columnproperty) {
final ICellModifier modifier = getCellModifier();
final Object element = item;
final Button checkbox = (Button) control;
if (listener != null)
checkbox.removeSelectionListener(listener);
listener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
modifier.modify(element, columnproperty, new Boolean(checkbox
.getSelection()));
}
};
checkbox.addSelectionListener(listener);
}
}