package org.xmind.cathy.internal.dashboard;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jface.resource.ColorDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.ResourceManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.RGB;
import org.xmind.ui.resources.ColorUtils;
import org.xmind.ui.tabfolder.MTabFolder;
import org.xmind.ui.tabfolder.MTabItem;
import org.xmind.ui.util.StyleProvider;
public class DashboardStyleProvider extends StyleProvider {
private ResourceManager resourceManager;
private Map<String, RGB> keyToRGB = new HashMap<String, RGB>();
public DashboardStyleProvider(ResourceManager resourceManager) {
this.resourceManager = resourceManager;
}
@Override
public Color getColor(Object widget, String key) {
String defaultValue = null;
if (widget instanceof MTabItem) {
MTabItem item = (MTabItem) widget;
if (FILL.equals(key)
&& (item.isSelected() || item.isPreselected())) {
defaultValue = "#FFFFFF"; //$NON-NLS-1$
} else if (TEXT.equals(key)) {
defaultValue = "#FFFFFF"; //$NON-NLS-1$
}
} else if (widget instanceof MTabFolder) {
if (MTabFolder.TAB_BAR.equals(key)) {
defaultValue = "#535f5e"; //$NON-NLS-1$
}
if (MTabFolder.BODY.equals(key)) {
defaultValue = "#F2F2F2"; //$NON-NLS-1$
}
}
if (defaultValue != null) {
RGB rgb = ColorUtils.toRGB(defaultValue);
if (keyToRGB.containsKey(key))
rgb = keyToRGB.get(key);
return (Color) resourceManager.get(ColorDescriptor.createFrom(rgb));
}
return super.getColor(widget, key);
}
@Override
public int getAlpha(Object widget, String key, int defaultValue) {
if (widget instanceof MTabItem) {
MTabItem item = (MTabItem) widget;
if (FILL.equals(key)) {
if (item.isSelected())
return 0x26;
if (item.isPreselected())
return 0x13;
}
}
return super.getAlpha(widget, key, defaultValue);
}
@Override
public Font getFont(Object widget, String key) {
if (widget instanceof MTabItem) {
if (TEXT.equals(key))
return (Font) resourceManager.get(JFaceResources
.getDefaultFontDescriptor().setHeight(12));
}
return super.getFont(widget, key);
}
@Override
public int getWidth(Object widget, String key, int defaultValue) {
if (widget instanceof MTabItem) {
if (IMAGE.equals(key))
return 56;
if (MARGIN.equals(key))
return 3;
if (SEPARATOR.equals(key))
return 2;
if (key == null)
return 72;
}
return super.getWidth(widget, key, defaultValue);
}
@Override
public int getHeight(Object widget, String key, int defaultValue) {
if (widget instanceof MTabItem) {
if (IMAGE.equals(key))
return 45;
if (MARGIN.equals(key))
return 6;
if (SEPARATOR.equals(key))
return 2;
if (key == null)
return 74;
}
return super.getHeight(widget, key, defaultValue);
}
@Override
public int getPosition(Object widget, String key, int defaultValue) {
if (widget instanceof MTabItem) {
if (TEXT.equals(key))
return SWT.BOTTOM;
} else if (widget instanceof MTabFolder) {
if (MTabFolder.TAB_BAR.equals(key))
return SWT.LEFT;
}
return super.getPosition(widget, key, defaultValue);
}
public void setColor(String key, RGB value) {
keyToRGB.put(key, value);
}
}