/*******************************************************************************
* Copyright (c) 2006-2013 The RCP Company 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:
* The RCP Company - initial API and implementation
*******************************************************************************/
package com.rcpcompany.uibindings.internal;
import org.eclipse.core.databinding.observable.ChangeEvent;
import org.eclipse.core.databinding.observable.IChangeListener;
import org.eclipse.core.databinding.observable.Observables;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Control;
import com.rcpcompany.uibindings.IBindingContext;
import com.rcpcompany.uibindings.IBindingContext.FinishOption;
import com.rcpcompany.uibindings.IColumnBinding;
import com.rcpcompany.uibindings.IColumnBindingCellInformation;
import com.rcpcompany.uibindings.IConstantTreeItem;
import com.rcpcompany.uibindings.IContainerBinding;
import com.rcpcompany.uibindings.IUIAttribute;
import com.rcpcompany.uibindings.IUIBindingsPackage;
import com.rcpcompany.uibindings.IValueBinding;
import com.rcpcompany.uibindings.IViewerBinding;
import com.rcpcompany.uibindings.internal.observables.MyDetailObservableValue;
import com.rcpcompany.uibindings.observables.ProxyObservableValue;
import com.rcpcompany.uibindings.uiAttributes.UIAttributePainter;
import com.rcpcompany.uibindings.uiAttributes.VirtualUIAttribute;
import com.rcpcompany.utils.logging.ITimedTask;
import com.rcpcompany.utils.logging.LogUtils;
/**
* <!-- begin-user-doc --> An implementation of the model object '
* <em><b>Column Binding Cell Information</b></em>'. <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getColumn <em>
* Column</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getElement <em>
* Element</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getLabelBinding
* <em>Label Binding</em>}</li>
* <li>
* {@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getLabelUIAttribute
* <em>Label UI Attribute</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getLabelPainter
* <em>Label Painter</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getObjectValue
* <em>Object Value</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getSourceValue
* <em>Source Value</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#isChangeable <em>
* Changeable</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getDisplayText
* <em>Display Text</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getValueType <em>
* Value Type</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#getToolTipText
* <em>Tool Tip Text</em>}</li>
* <li>{@link com.rcpcompany.uibindings.internal.ColumnBindingCellInformationImpl#isEnabled <em>
* Enabled</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class ColumnBindingCellInformationImpl extends EObjectImpl implements IColumnBindingCellInformation {
@Override
public void init(IColumnBinding column, Object element) {
final ITimedTask task = ITimedTask.Factory.start("init");
setColumn(column);
final Object baseElement = element;
setElement((EObject) baseElement);
getColumn().getCells().put(getElement(), this);
if (Activator.getDefault().TRACE_LIFECYCLE_CI) {
LogUtils.debug(this, this + " constructed"); //$NON-NLS-1$
}
if (column.getBaseColumn() == null) {
setSourceValue(Observables.constantObservableValue(getElement(), getElement().eClass()));
} else {
final IColumnBindingCellInformation parentCI = column.getBaseColumn().getCellInformation(getElement());
setSourceValue(new ProxyObservableValue(parentCI.getObjectValue()));
}
/**
* Find the value...
*
* Note that the source value can change(!) so a master-detail is needed!
*
* Another note: the valueTypes EJAVE_OBJECT and Object.class are passed to the observable
* as null, as this means the result will not be checked.
*/
Object valueType = column.getDataType().getValueType();
if (valueType == EcorePackage.Literals.EJAVA_OBJECT) {
valueType = null;
} else if (valueType == Object.class) {
valueType = null;
}
MyDetailObservableValue newObjectValue = null;
String errorText = null;
try {
newObjectValue = new MyDetailObservableValue(getSourceValue(), column.getFactory(), valueType);
} catch (final Exception ex) {
LogUtils.error(column.getFactory(), "Cannot create the detail", ex);
errorText = "Cannot create the detail: " + ex;
newObjectValue = null;
}
setObjectValue(newObjectValue);
/*
* We will use a UI binding to convert from myValue to myLabelUIAttribute...
*
* The attribute is NOT changeable, so paste must make it own changeable binding first.
*/
final VirtualUIAttribute attribute = new VirtualUIAttribute(String.class);
setLabelUIAttribute(attribute);
final UIAttributePainter painter = new UIAttributePainter(column.getViewerBinding().getControl(),
getLabelUIAttribute());
setLabelPainter(painter);
final IBindingContext context = getColumn().getContext();
final IValueBinding lb = context.addBinding().model(newObjectValue).ui(attribute);
if (errorText != null) {
lb.addErrorCondition(errorText);
}
/*
* The column is not added as an extra argument provider as it is already the parent
*/
if (column.eIsSet(IUIBindingsPackage.Literals.BINDING__EXTRA_ARGUMENT_PROVIDERS)) {
lb.getExtraArgumentProviders().addAll(column.getExtraArgumentProviders());
}
setLabelBinding(lb);
lb.setCell(this);
/*
* For constant tree items we add an extra argument provider with the descriptor
*/
if (element instanceof IConstantTreeItem) {
lb.getExtraArgumentProviders().add(((IConstantTreeItem) element).getDescriptor());
}
/*
* For the tree columns, we also add the model type of the row element as an extra argument
* provider...
*
* This is primary used for the image...
*/
// if (getColumn().getSpecialBindingType() == SpecialBinding.TREE_ITEM) {
// final IBindingDataType dataType = IBindingDataType.Factory.create(null,
// getElement().eClass());
// if (dataType != null) {
// final String type = lb.getType();
// if (type != null && type.length() > 0) {
// final IArgumentProvider ap = dataType.getArgumentProvider(type);
// if (ap != null) {
// if (Activator.getDefault().TRACE_TREE) {
// LogUtils.debug(this, lb + ": added data type argument provider(binding type: " + type
// + "): " + dataType);
// }
// lb.getExtraArgumentProviders().add(ap);
// }
// }
// final IArgumentProvider ap = dataType.getArgumentProvider(null);
// if (ap != null) {
// if (Activator.getDefault().TRACE_TREE) {
// LogUtils.debug(this, lb + ": added data type argument provider: " + dataType);
// }
// lb.getExtraArgumentProviders().add(ap);
// }
// }
// }
/*
* We added a new binding so call finish as well...
*/
task.subTask("finish");
context.finish(FinishOption.IF_ALREADY_FINISHED);
task.subTask("finish done");
attribute.addChangeListener(myAttributeValueListener);
// task.end();
}
@Override
public IContainerBinding getContainer() {
return getColumn().getViewerBinding();
}
@Override
public Point getPosition(boolean visualModel) {
final IColumnBinding col = getColumn();
final IViewerBinding viewer = col.getViewerBinding();
final int columnNo = col.getIndex(visualModel);
final int rowNo = viewer.getList().indexOf(getElement());
return new Point(columnNo, rowNo);
}
/**
* Listener used to on the {@link IUIAttribute} to monitor for changes that should provoke an
* update of the cell.
*/
protected final IChangeListener myAttributeValueListener = new IChangeListener() {
@Override
public void handleChange(ChangeEvent event) {
getColumn().getViewerBinding().updateCellsForElement(getElement());
}
};
/**
* The cached value of the '{@link #getColumn() <em>Column</em>}' reference. <!-- begin-user-doc
* --> <!-- end-user-doc -->
*
* @see #getColumn()
* @generated
* @ordered
*/
protected IColumnBinding column;
/**
* The cached value of the '{@link #getElement() <em>Element</em>}' reference. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getElement()
* @generated
* @ordered
*/
protected EObject element;
/**
* The cached value of the '{@link #getLabelBinding() <em>Label Binding</em>}' reference. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getLabelBinding()
* @generated
* @ordered
*/
protected IValueBinding labelBinding;
/**
* The cached value of the '{@link #getLabelUIAttribute() <em>Label UI Attribute</em>}'
* reference. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getLabelUIAttribute()
* @generated
* @ordered
*/
protected IUIAttribute labelUIAttribute;
/**
* The default value of the '{@link #getLabelPainter() <em>Label Painter</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getLabelPainter()
* @generated
* @ordered
*/
protected static final UIAttributePainter LABEL_PAINTER_EDEFAULT = null;
/**
* The cached value of the '{@link #getLabelPainter() <em>Label Painter</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getLabelPainter()
* @generated
* @ordered
*/
protected UIAttributePainter labelPainter = LABEL_PAINTER_EDEFAULT;
/**
* The default value of the '{@link #getObjectValue() <em>Object Value</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getObjectValue()
* @generated
* @ordered
*/
protected static final IObservableValue OBJECT_VALUE_EDEFAULT = null;
/**
* The cached value of the '{@link #getObjectValue() <em>Object Value</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getObjectValue()
* @generated
* @ordered
*/
protected IObservableValue objectValue = OBJECT_VALUE_EDEFAULT;
/**
* The default value of the '{@link #getSourceValue() <em>Source Value</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getSourceValue()
* @generated
* @ordered
*/
protected static final IObservableValue SOURCE_VALUE_EDEFAULT = null;
/**
* The cached value of the '{@link #getSourceValue() <em>Source Value</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getSourceValue()
* @generated
* @ordered
*/
protected IObservableValue sourceValue = SOURCE_VALUE_EDEFAULT;
/**
* The default value of the '{@link #isChangeable() <em>Changeable</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #isChangeable()
* @generated
* @ordered
*/
protected static final boolean CHANGEABLE_EDEFAULT = false;
/**
* The default value of the '{@link #getDisplayText() <em>Display Text</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getDisplayText()
* @generated
* @ordered
*/
protected static final String DISPLAY_TEXT_EDEFAULT = null;
/**
* The default value of the '{@link #getToolTipText() <em>Tool Tip Text</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getToolTipText()
* @generated
* @ordered
*/
protected static final String TOOL_TIP_TEXT_EDEFAULT = null;
/**
* The cached value of the '{@link #getToolTipText() <em>Tool Tip Text</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getToolTipText()
* @generated
* @ordered
*/
protected String toolTipText = TOOL_TIP_TEXT_EDEFAULT;
/**
* The default value of the '{@link #isEnabled() <em>Enabled</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #isEnabled()
* @generated
* @ordered
*/
protected static final boolean ENABLED_EDEFAULT = true;
/**
* The cached value of the '{@link #isEnabled() <em>Enabled</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #isEnabled()
* @generated
* @ordered
*/
protected boolean enabled = ENABLED_EDEFAULT;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public ColumnBindingCellInformationImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
protected EClass eStaticClass() {
return IUIBindingsPackage.Literals.COLUMN_BINDING_CELL_INFORMATION;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public IColumnBinding getColumn() {
return column;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setColumn(IColumnBinding newColumn) {
final IColumnBinding oldColumn = column;
column = newColumn;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__COLUMN, oldColumn, column));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public EObject getElement() {
return element;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setElement(EObject newElement) {
final EObject oldElement = element;
element = newElement;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ELEMENT, oldElement, element));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public IValueBinding getLabelBinding() {
return labelBinding;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setLabelBinding(IValueBinding newLabelBinding) {
final IValueBinding oldLabelBinding = labelBinding;
labelBinding = newLabelBinding;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_BINDING, oldLabelBinding, labelBinding));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public IUIAttribute getLabelUIAttribute() {
return labelUIAttribute;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setLabelUIAttribute(IUIAttribute newLabelUIAttribute) {
final IUIAttribute oldLabelUIAttribute = labelUIAttribute;
labelUIAttribute = newLabelUIAttribute;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_UI_ATTRIBUTE, oldLabelUIAttribute,
labelUIAttribute));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public UIAttributePainter getLabelPainter() {
return labelPainter;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setLabelPainter(UIAttributePainter newLabelPainter) {
final UIAttributePainter oldLabelPainter = labelPainter;
labelPainter = newLabelPainter;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_PAINTER, oldLabelPainter, labelPainter));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public IObservableValue getObjectValue() {
return objectValue;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setObjectValue(IObservableValue newObjectValue) {
final IObservableValue oldObjectValue = objectValue;
objectValue = newObjectValue;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__OBJECT_VALUE, oldObjectValue, objectValue));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public IObservableValue getSourceValue() {
return sourceValue;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setSourceValue(IObservableValue newSourceValue) {
final IObservableValue oldSourceValue = sourceValue;
sourceValue = newSourceValue;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__SOURCE_VALUE, oldSourceValue, sourceValue));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public boolean isChangeable() {
if (!isEnabled()) return false;
final IValueBinding b = getLabelBinding();
if (b == null) return false;
if (!b.isChangeable()) return false;
if (b.eIsSet(IUIBindingsPackage.Literals.BINDING__ERROR_CONDITIONS) && b.getErrorConditions().size() > 0)
return false;
if (!getColumn().getViewerBinding().isChangeable()) return false;
return true;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public String getDisplayText() {
Object value = null;
final IObservableValue displayValue = getLabelUIAttribute().getCurrentValue();
if (displayValue != null) {
value = displayValue.getValue();
}
if (value == null) {
value = ""; //$NON-NLS-1$
}
return value.toString();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public Class<?> getValueType() {
return getLabelBinding().getDataType().getDataType();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public String getToolTipText() {
return toolTipText;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setToolTipText(String newToolTipText) {
final String oldToolTipText = toolTipText;
toolTipText = newToolTipText;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__TOOL_TIP_TEXT, oldToolTipText, toolTipText));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean isEnabled() {
return enabled;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setEnabled(boolean newEnabled) {
final boolean oldEnabled = enabled;
enabled = newEnabled;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ENABLED, oldEnabled, enabled));
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__COLUMN:
return getColumn();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ELEMENT:
return getElement();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_BINDING:
return getLabelBinding();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_UI_ATTRIBUTE:
return getLabelUIAttribute();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_PAINTER:
return getLabelPainter();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__OBJECT_VALUE:
return getObjectValue();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__SOURCE_VALUE:
return getSourceValue();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__CHANGEABLE:
return isChangeable();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__DISPLAY_TEXT:
return getDisplayText();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__VALUE_TYPE:
return getValueType();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__TOOL_TIP_TEXT:
return getToolTipText();
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ENABLED:
return isEnabled();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__COLUMN:
setColumn((IColumnBinding) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ELEMENT:
setElement((EObject) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_BINDING:
setLabelBinding((IValueBinding) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_UI_ATTRIBUTE:
setLabelUIAttribute((IUIAttribute) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_PAINTER:
setLabelPainter((UIAttributePainter) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__OBJECT_VALUE:
setObjectValue((IObservableValue) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__SOURCE_VALUE:
setSourceValue((IObservableValue) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__TOOL_TIP_TEXT:
setToolTipText((String) newValue);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ENABLED:
setEnabled((Boolean) newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__COLUMN:
setColumn((IColumnBinding) null);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ELEMENT:
setElement((EObject) null);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_BINDING:
setLabelBinding((IValueBinding) null);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_UI_ATTRIBUTE:
setLabelUIAttribute((IUIAttribute) null);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_PAINTER:
setLabelPainter(LABEL_PAINTER_EDEFAULT);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__OBJECT_VALUE:
setObjectValue(OBJECT_VALUE_EDEFAULT);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__SOURCE_VALUE:
setSourceValue(SOURCE_VALUE_EDEFAULT);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__TOOL_TIP_TEXT:
setToolTipText(TOOL_TIP_TEXT_EDEFAULT);
return;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ENABLED:
setEnabled(ENABLED_EDEFAULT);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__COLUMN:
return column != null;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ELEMENT:
return element != null;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_BINDING:
return labelBinding != null;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_UI_ATTRIBUTE:
return labelUIAttribute != null;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__LABEL_PAINTER:
return LABEL_PAINTER_EDEFAULT == null ? labelPainter != null : !LABEL_PAINTER_EDEFAULT.equals(labelPainter);
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__OBJECT_VALUE:
return OBJECT_VALUE_EDEFAULT == null ? objectValue != null : !OBJECT_VALUE_EDEFAULT.equals(objectValue);
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__SOURCE_VALUE:
return SOURCE_VALUE_EDEFAULT == null ? sourceValue != null : !SOURCE_VALUE_EDEFAULT.equals(sourceValue);
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__CHANGEABLE:
return isChangeable() != CHANGEABLE_EDEFAULT;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__DISPLAY_TEXT:
return DISPLAY_TEXT_EDEFAULT == null ? getDisplayText() != null : !DISPLAY_TEXT_EDEFAULT
.equals(getDisplayText());
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__VALUE_TYPE:
return getValueType() != null;
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__TOOL_TIP_TEXT:
return TOOL_TIP_TEXT_EDEFAULT == null ? toolTipText != null : !TOOL_TIP_TEXT_EDEFAULT.equals(toolTipText);
case IUIBindingsPackage.COLUMN_BINDING_CELL_INFORMATION__ENABLED:
return enabled != ENABLED_EDEFAULT;
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public String toString() {
return "CI[" + hashCode() + "]: " + getColumn() + "," + getElement(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@Override
public void dispose() {
if (Activator.getDefault().TRACE_LIFECYCLE_CI) {
LogUtils.debug(this, this + " disposed"); //$NON-NLS-1$
}
if (getLabelUIAttribute() instanceof VirtualUIAttribute) {
((VirtualUIAttribute) getLabelUIAttribute()).removeChangeListener(myAttributeValueListener);
}
getLabelBinding().dispose();
// getLabelUIAttribute().dispose();
/*
* We created this, so we must dispose as well..
*/
getObjectValue().dispose();
// mySourceValue is handled in the base column...
getColumn().getCells().removeKey(getElement());
}
@Override
public Control setFocus() {
final IColumnBinding column = getColumn();
final IViewerBinding viewer = column.getViewerBinding();
final Control c = viewer.getControl();
c.setFocus();
viewer.setFocus(viewer.getColumns().indexOf(column) + viewer.getFirstTableColumnOffset(), getElement());
return c;
}
@Override
public String getMessagePrefix() {
/*
* For now, we just use the column header for the cell
*
* TODO extend this with a description of the object itself
*/
final IColumnBinding column = getColumn();
return column.getColumnAdapter().getText() + ": "; //$NON-NLS-1$
}
@Override
public IColumnBinding getColumnBinding() {
return getColumn();
}
} // ColumnBindingCellInformationImpl