package org.objectstyle.wolips.componenteditor.inspector;
import java.util.List;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableFontProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.objectstyle.wolips.bindings.api.IApiBinding;
import org.objectstyle.wolips.bindings.wod.IWodBinding;
import org.objectstyle.wolips.bindings.wod.IWodElement;
import org.objectstyle.wolips.bindings.wod.WodProblem;
import org.objectstyle.wolips.wodclipse.core.util.WodModelUtils;
public class BindingsLabelProvider extends ColumnLabelProvider implements ITableLabelProvider, ITableColorProvider, ITableFontProvider {
private int _column;
private IWodElement _wodElement;
private List<WodProblem> _problems;
public BindingsLabelProvider(int column) {
_column = column;
}
public void setContext(IWodElement wodElement, List<WodProblem> problems) {
_wodElement = wodElement;
_problems = problems;
}
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
@Override
public String getText(Object element) {
return getColumnText(element, _column);
}
public String getColumnText(Object element, int columnIndex) {
IApiBinding apiBinding = (IApiBinding) element;
String text = null;
if (columnIndex == 0) {
text = apiBinding.getName();
} else if (columnIndex == 1) {
IWodBinding wodBinding = _wodElement.getBindingNamed(apiBinding.getName());
if (wodBinding != null) {
text = wodBinding.getValue();
}
}
return text;
}
public void addListener(ILabelProviderListener listener) {
// DO NOTHING
}
public void dispose() {
// DO NOTHING
}
public boolean isLabelProperty(Object element, String property) {
return true;
}
public void removeListener(ILabelProviderListener listener) {
// DO NOTHING
}
public Color getBackground(Object element, int columnIndex) {
return null;
}
@Override
public Color getForeground(Object element) {
return getForeground(element, _column);
}
public Color getForeground(Object element, int columnIndex) {
Color color = null;
IApiBinding apiBinding = (IApiBinding) element;
if (WodModelUtils.hasValidationProblem(apiBinding, _problems)) {
color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
}
return color;
}
@Override
public Font getFont(Object element) {
return getFont(element, _column);
}
public Font getFont(Object element, int columnIndex) {
Font font = null;
if (columnIndex == 0) {
if (element instanceof IWodBinding) {
font = JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT);
}
}
return font;
}
}