package org.objectstyle.wolips.componenteditor.inspector;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jface.viewers.BaseLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITableFontProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Control;
import org.objectstyle.wolips.bindings.wod.BindingValueKey;
import org.objectstyle.wolips.componenteditor.ComponenteditorPlugin;
public class WOBrowserColumnLabelProvider extends BaseLabelProvider implements ILabelProvider, ITableLabelProvider, ITableFontProvider {
private IType _type;
private Control _control;
private Font _titleFont;
public WOBrowserColumnLabelProvider(IType type, Control control) {
_type = type;
_control = control;
}
protected Font getTitleFont() {
if (_titleFont == null) {
Font originalFont = _control.getFont();
FontData[] fontData = _control.getFont().getFontData();
_titleFont = new Font(originalFont.getDevice(), fontData[0].getName(), fontData[0].getHeight(), SWT.BOLD);
}
return _titleFont;
}
public Image getImage(Object element) {
return getColumnImage(element, 0);
}
@Override
public void dispose() {
if (_titleFont != null) {
_titleFont.dispose();
_titleFont = null;
}
super.dispose();
}
public String getText(Object element) {
return getColumnText(element, 0);
}
public Image getColumnImage(Object element, int columnIndex) {
Image image = null;
if (columnIndex == 0) {
if (element instanceof String) {
// image = ComponenteditorPlugin.getDefault().getImage(ComponenteditorPlugin.COMPONENT_ICON);
}
}
else if (columnIndex == 1) {
if (element instanceof BindingValueKey) {
BindingValueKey bindingValueKey = (BindingValueKey) element;
if (bindingValueKey != null) {
try {
if (!bindingValueKey.isLeaf()) {
image = ComponenteditorPlugin.getDefault().getImage(ComponenteditorPlugin.TO_ONE_ICON);
}
} catch (JavaModelException e) {
e.printStackTrace();
}
}
}
}
return image;
}
public String getColumnText(Object element, int columnIndex) {
String text = null;
if (columnIndex == 0) {
if (element instanceof BindingValueKey) {
BindingValueKey bindingValueKey = (BindingValueKey) element;
if (bindingValueKey != null) {
StringBuffer nameBuffer = new StringBuffer();
IType declaringType = bindingValueKey.getDeclaringType();
if (declaringType != null && _type != null && !_type.equals(declaringType)) {
nameBuffer.append(" ");
}
nameBuffer.append(bindingValueKey.getBindingName());
int minWidth = 40;
if (text != null && text.length() < minWidth) {
for (int i = text.length(); i < minWidth; i++) {
nameBuffer.append(' ');
}
}
text = nameBuffer.toString();
}
} else if (element instanceof String) {
text = (String) element;
}
if (text == null) {
text = "<unknown>";
}
} else if (columnIndex == 1) {
text = null;
}
return text;
}
public Font getFont(Object element, int columnIndex) {
Font font = null;
if (element instanceof String) {
font = getTitleFont();
}
return font;
}
}