package com.tibco.as.spacebar.ui.navigator;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.LabelProvider;
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.Display;
import com.tibco.as.spacebar.ui.SpaceBarPlugin;
import com.tibco.as.spacebar.ui.model.Field;
import com.tibco.as.spacebar.ui.model.IElement;
import com.tibco.as.spacebar.ui.model.Index;
import com.tibco.as.spacebar.ui.model.Indexes;
import com.tibco.as.spacebar.ui.model.Member;
import com.tibco.as.spacebar.ui.model.Members;
import com.tibco.as.spacebar.ui.model.Metaspace;
import com.tibco.as.spacebar.ui.model.MetaspaceMember;
import com.tibco.as.spacebar.ui.model.Metaspaces;
import com.tibco.as.spacebar.ui.model.Space;
import com.tibco.as.spacebar.ui.model.SpaceFields;
import com.tibco.as.spacebar.ui.model.SpaceMember;
import com.tibco.as.spacebar.ui.model.Spaces;
public class MetaspaceLabelProvider extends LabelProvider implements
IFontProvider {
private Font boldFont;
@Override
public String getText(Object element) {
if (element instanceof IElement) {
return ((IElement) element).getName();
}
return null;
}
@Override
public Image getImage(Object object) {
if (object instanceof Metaspaces) {
return null;
}
if (object instanceof Metaspace) {
Metaspace metaspace = (Metaspace) object;
if (metaspace.isConnected()) {
return getImage(com.tibco.as.spacebar.ui.Image.METASPACE_CONNECTED);
}
return getImage(com.tibco.as.spacebar.ui.Image.METASPACE_DISCONNECTED);
}
if (object instanceof Members) {
return getImage(com.tibco.as.spacebar.ui.Image.MEMBERS);
}
if (object instanceof SpaceMember) {
if (((SpaceMember) object).isSeeder()) {
return getImage(com.tibco.as.spacebar.ui.Image.MEMBER_SEEDER);
}
return getImage(com.tibco.as.spacebar.ui.Image.MEMBER);
}
if (object instanceof MetaspaceMember) {
if (((MetaspaceMember) object).isManager()) {
return getImage(com.tibco.as.spacebar.ui.Image.MEMBER_SEEDER);
}
return getImage(com.tibco.as.spacebar.ui.Image.MEMBER);
}
if (object instanceof Spaces) {
return getImage(com.tibco.as.spacebar.ui.Image.SPACES);
}
if (object instanceof Space) {
return getImage(com.tibco.as.spacebar.ui.Image.SPACE);
}
if (object instanceof SpaceFields) {
return getImage(com.tibco.as.spacebar.ui.Image.FIELDS);
}
if (object instanceof Field) {
if (((Field) object).isDistribution()) {
return getImage(com.tibco.as.spacebar.ui.Image.DISTRIBUTION);
}
return getImage(com.tibco.as.spacebar.ui.Image.FIELD);
}
if (object instanceof Indexes) {
return getImage(com.tibco.as.spacebar.ui.Image.INDEXES);
}
if (object instanceof Index) {
return getImage(com.tibco.as.spacebar.ui.Image.INDEX);
}
return null;
}
private Image getImage(com.tibco.as.spacebar.ui.Image image) {
return SpaceBarPlugin.getDefault().getImage(image);
}
@Override
public Font getFont(Object element) {
// if (element instanceof Field) {
// Field field = (Field) element;
// if (isKey(field)) {
// return getBoldFont();
// }
// }
if (element instanceof Member) {
if (((Member) element).isSelf()) {
return getBoldFont();
}
}
if (element instanceof Field) {
if (((Field) element).isKey()) {
return getBoldFont();
}
}
return null;
}
private Font getBoldFont() {
if (boldFont == null) {
Font originalFont = Display.getDefault().getSystemFont();
FontData[] fontData = originalFont.getFontData();
// Adding the bold attribute
for (int i = 0; i < fontData.length; i++) {
fontData[i].setStyle(fontData[i].getStyle() | SWT.BOLD);
}
boldFont = new Font(Display.getDefault(), fontData);
}
return boldFont;
}
@Override
public void dispose() {
if (boldFont != null) {
boldFont.dispose();
}
super.dispose();
}
}