package com.hundsun.ares.studio.ui.editor.extend;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.ui.editor.viewers.IEStructuralFeatureProvider;
/**
* @author wangxh
*
*/
public class CheckBoxColumnLabelProvider extends ColumnLabelProvider {
private CheckBoxLabelProvider provider = new CheckBoxLabelProvider();
private IEStructuralFeatureProvider attributeProvider;
private IARESResource resource ;
/**
* @param attribute
*/
public CheckBoxColumnLabelProvider(EStructuralFeature attribute , IARESResource resource) {
this(new IEStructuralFeatureProvider.Impl(attribute));
this.resource = resource;
}
/**
* @param attributeProvider
*/
public CheckBoxColumnLabelProvider(IEStructuralFeatureProvider attributeProvider) {
super();
this.attributeProvider = attributeProvider;
}
public EStructuralFeature getEStructuralFeature(Object element) {
return attributeProvider.getFeature(element);
}
public void setAttributeProvider(IEStructuralFeatureProvider attributeProvider) {
this.attributeProvider = attributeProvider;
}
@Override
public String getText(Object element) {
return provider.getText(getValue(element));
}
@Override
public Image getImage(Object element) {
return provider.getImage(getValue(element));
}
@Override
public Color getBackground(Object element) {
if (resource != null && resource.isReadOnly()) {
return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
}
return super.getBackground(element);
}
protected Object getValue(Object element) {
EStructuralFeature attribute = getEStructuralFeature(element);
EObject owner = (EObject) element;
return owner.eGet(attribute);
}
}