package com.limegroup.gnutella.gui.themes;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.plaf.BorderUIResource;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.FontUIResource;
import javax.swing.plaf.metal.MetalLookAndFeel;
import com.jgoodies.plaf.plastic.PlasticButtonUI;
import com.limegroup.gnutella.gui.GUIMediator;
import com.limegroup.gnutella.gui.themes.ThemeFileHandler;
/**
* Controls the look and feel of the application.
*/
//2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678|
public final class LimeLookAndFeel extends MetalLookAndFeel {
/**
* The constructor simply sets the color theme for the application.
*/
public LimeLookAndFeel() {
setCurrentTheme(new LimeTheme());
}
public String getDescription() {
return "Lime Look and Feel";
}
public String getID() {
return "GoLime";
}
public String getName() {
return "Lime Look and Feel";
}
public boolean isNativeLookAndFeel() {
return false;
}
public boolean isSupportedLookAndFeel() {
return true;
}
/**
* Set the ui delegate classes for main component classes.
*/
protected void initClassDefaults(UIDefaults table) {
super.initClassDefaults(table);
table.put("ButtonUI", PlasticButtonUI.class.getName());
table.put("ClassLoader", getClass().getClassLoader());
}
/**
* Set the finer-grained ui settings for stock component ui items.
*/
protected void initComponentDefaults(UIDefaults table) {
super.initComponentDefaults(table);
Object[] defaults = LimeLookAndFeel.getComponentDefaults(table);
table.putDefaults(defaults);
}
/**
* Installs the component defaults on the UIManager.
*/
public static void installUIManagerDefaults() {
Object[] defaults = getComponentDefaults(null);
for(int i = 0; i < defaults.length; i += 2)
UIManager.put(defaults[i], defaults[i+1]);
}
/**
* Gets the defaults for components in the lime look & feel.
*/
private static Object[] getComponentDefaults(UIDefaults table) {
Icon questionIcon = GUIMediator.getThemeImage("question");
Icon errorIcon = GUIMediator.getThemeImage("warning");
Icon infoIcon = GUIMediator.getThemeImage("notsearching");
Icon openDirIcon = GUIMediator.getThemeImage("dir_open");
Icon closedDirIcon = GUIMediator.getThemeImage("dir_closed");
if(table == null)
table = UIManager.getDefaults();
Object labelFont = table.get("Label.font");
Object buttonFont = table.get("Button.font");
if(!System.getProperty("os.name").startsWith("Windows")) {
labelFont = new FontUIResource("Dialog", Font.PLAIN, 11);
buttonFont = labelFont;
}
Object[] defaults = {
"Button.font", buttonFont,
"Button.is3DEnabled", Boolean.TRUE,
"CheckBox.foreground", getSystemTextColor(),
"OptionPane.questionIcon", questionIcon,
"OptionPane.errorIcon", errorIcon,
"OptionPane.informationIcon", infoIcon,
"ProgressBar.selectionForeground",new ColorUIResource(ThemeFileHandler.WINDOW4_COLOR.getValue()),
"ProgressBar.selectionBackground",new ColorUIResource(ThemeFileHandler.WINDOW4_COLOR.getValue()),
"Label.font", labelFont,
"Table.foreground", getUserTextColor(),
"Table.selectionForeground", getUserTextColor(),
"Table.selectionBackground", new ColorUIResource(ThemeFileHandler.SECONDARY3_COLOR.getValue()),
"Table.focusCellForeground", getUserTextColor(),
"Table.focusCellBackground", new ColorUIResource(ThemeFileHandler.SECONDARY3_COLOR.getValue()),
"TableHeader.background", new ColorUIResource(ThemeFileHandler.TABLE_HEADER_BACKGROUND_COLOR.getValue()),
"TableHeader.cellBorder", new BorderUIResource(BorderFactory.createRaisedBevelBorder()),
"TableHeader.cellPressedBorder", new BorderUIResource(BorderFactory.createLoweredBevelBorder()),
"TextField.background", new ColorUIResource(ThemeFileHandler.WINDOW7_COLOR.getValue()),
"ToolTip.foreground", getControlTextColor(),
"ToolTip.background", getControl(),
"Tree.foreground", getUserTextColor(),
"Tree.expandedIcon", openDirIcon,
"Tree.collapsedIcon", closedDirIcon,
"Tree.rightChildIndent", new Integer(6),
"Tree.selectionForeground", getUserTextColor(),
"Tree.selectionBackground", new ColorUIResource(ThemeFileHandler.SECONDARY3_COLOR.getValue()),
};
return defaults;
}
}