/******************************************************************************* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Tiny Look and Feel * * (C) Copyright 2003 - 2007 Hans Bickel * * For * licensing information and credits, please refer to the * comment in file * de.muntjak.tinylookandfeel.TinyLookAndFeel * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ package de.muntjak.tinylookandfeel; import java.awt.Color; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.UIDefaults; import javax.swing.border.LineBorder; import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.FontUIResource; import javax.swing.plaf.InsetsUIResource; import javax.swing.plaf.metal.DefaultMetalTheme; import de.muntjak.tinylookandfeel.controlpanel.DrawRoutines; import de.muntjak.tinylookandfeel.controlpanel.HSBReference; /** * TinyDefaultTheme * * @version 1.1 * @author Hans Bickel */ @SuppressWarnings ( { "all" } ) public class TinyDefaultTheme extends DefaultMetalTheme { /** * Secondary Color 3, used for the following: Canvas color (that is, normal * background color), inactive title bar. Background for noneditable text * fields. */ public static ColorUIResource secondary3 = Theme.backColor [ Theme.style ] .getColor (); private final ColorUIResource lightBackground = new ColorUIResource ( 252, 252, 254 ); public static final ColorUIResource darkControl = new ColorUIResource ( 161, 161, 148 ); /** * Primary Color 1, used for the following: Active internal window borders. * Shadows of activated items. System text (for example, labels). */ private final ColorUIResource primary1 = new ColorUIResource ( 0, 0, 0 ); /** * Primary Color 2, used for the following: Highlighting to indicate * activation (for example, of menu titles and menu items); indication of * keyboard focus. Shadows (color). Scrollbars. */ private final ColorUIResource primary2 = new ColorUIResource ( 213, 211, 209 ); /** * Primary Color 3, used for the following: Large colored areas (for example, * the active title bar). Text selection. Tooltips background. InternalFrame * TitleBar. */ private final ColorUIResource primary3 = new ColorUIResource ( 213, 211, 209 ); /** * Secondary Color 1, used for the following: Dark border for flush 3D style. */ private final ColorUIResource secondary1 = new ColorUIResource ( 167, 165, 163 ); /** * Secondary Color 2, used for the following: Inactive internal window * borders; dimmed button borders. Shadows; highlighting of toolbar buttons * upon mouse button down. Dimmed text (for example, inactive menu items or * labels). */ private final ColorUIResource secondary2 = new ColorUIResource ( 167, 165, 163 ); /** * The background color of a pressed button. */ private final ColorUIResource secondary4 = new ColorUIResource ( 190, 188, 186 ); /** * The upper gradient color for components like JButton, JMenuBar and * JProgressBar. */ private final Color gradientReflection = new Color ( 255, 255, 255, 86 ); /** * The lower gradient color for components like JButton, JMenuBar and * JProgressBar. */ private final Color gradientShadow = new Color ( 188, 186, 184, 100 ); /** * The transluscent variation of the upper gradient color for components like * JButton, JMenuBar and JProgressBar. */ private final Color gradientTranslucentReflection = new Color ( gradientReflection.getRGB () & 0x00FFFFFF, true ); /** * The transluscent variation of the lower gradient color for components like * JButton, JMenuBar and JProgressBar. */ private final Color gradientTranslucentShadow = new Color ( gradientShadow .getRGB () & 0x00FFFFFF, true ); /** * Gets the upper gradient color for components like JButton, JMenuBar and * JProgressBar. * * @return The gradient reflection color. */ public Color getGradientReflection () { return gradientReflection; } /** * Gets the lower gradient color for components like JButton, JMenuBar and * JProgressBar. * * @return The gradient shadow color. */ public Color getGradientShadow () { return gradientShadow; } /** * Gets the transluscent variation of the upper gradient color for components * like JButton, JMenuBar and JProgressBar. * * @return The transluscent gradient reflection color. */ public Color getGradientTranslucentReflection () { return gradientTranslucentReflection; } /** * Gets the transluscent variation of the lower gradient color for components * like JButton, JMenuBar and JProgressBar. * * @return The transluscent gradient shadow color. */ public Color getGradientTranslucentShadow () { return gradientTranslucentShadow; } /** * Gets the Font of Labels in many cases. * * @return The Font of Labels in many cases. */ public FontUIResource getControlTextFont () { return Theme.plainFont [ Theme.style ].getFont (); } /** * Gets the Font of Menus and MenuItems. * * @return The Font of Menus and MenuItems. */ public FontUIResource getMenuTextFont () { return Theme.plainFont [ Theme.style ].getFont (); } /** * Gets the Font of Nodes in JTrees. * * @return The Font of Nodes in JTrees. */ public FontUIResource getSystemTextFont () { return Theme.plainFont [ Theme.style ].getFont (); } /** * Gets the Font in TextFields, EditorPanes, etc. * * @return The Font in TextFields, EditorPanes, etc. */ public FontUIResource getUserTextFont () { return Theme.plainFont [ Theme.style ].getFont (); } /** * Gets the Font of the Title of JInternalFrames. * * @return The Font of the Title of JInternalFrames. */ public FontUIResource getWindowTitleFont () { return Theme.boldFont [ Theme.style ].getFont (); } /** * Adds some custom values to the defaults table. * * @param table The UI defaults table. */ public void addCustomEntriesToTable ( UIDefaults table ) { super.addCustomEntriesToTable ( table ); table.put ( "Button.margin", new InsetsUIResource ( Theme.buttonMarginTop [ Theme.style ], Theme.buttonMarginLeft [ Theme.style ], Theme.buttonMarginBottom [ Theme.style ], Theme.buttonMarginRight [ Theme.style ] ) ); table.put ( "CheckBox.margin", new InsetsUIResource ( Theme.checkMarginTop [ Theme.style ], Theme.checkMarginLeft [ Theme.style ], Theme.checkMarginBottom [ Theme.style ], Theme.checkMarginRight [ Theme.style ] ) ); table.put ( "RadioButton.margin", new InsetsUIResource ( Theme.checkMarginTop [ Theme.style ], Theme.checkMarginLeft [ Theme.style ], Theme.checkMarginBottom [ Theme.style ], Theme.checkMarginRight [ Theme.style ] ) ); table.put ( "Button.background", Theme.buttonNormalColor [ Theme.style ] .getColor () ); table.put ( "Button.font", Theme.buttonFont [ Theme.style ].getFont () ); table.put ( "CheckBox.font", Theme.checkFont [ Theme.style ].getFont () ); table.put ( "CheckBoxMenuItem.font", Theme.menuItemFont [ Theme.style ] .getFont () ); table.put ( "ComboBox.font", Theme.comboFont [ Theme.style ].getFont () ); table.put ( "Label.font", Theme.labelFont [ Theme.style ].getFont () ); table.put ( "List.font", Theme.listFont [ Theme.style ].getFont () ); table.put ( "Menu.font", Theme.menuFont [ Theme.style ].getFont () ); table.put ( "MenuItem.font", Theme.menuItemFont [ Theme.style ].getFont () ); table.put ( "ProgressBar.font", Theme.progressBarFont [ Theme.style ] .getFont () ); table.put ( "RadioButton.font", Theme.radioFont [ Theme.style ].getFont () ); table.put ( "RadioButtonMenuItem.font", Theme.menuItemFont [ Theme.style ] .getFont () ); table.put ( "Table.font", Theme.tableFont [ Theme.style ].getFont () ); table.put ( "TableHeader.font", Theme.tableHeaderFont [ Theme.style ] .getFont () ); table.put ( "TitledBorder.font", Theme.titledBorderFont [ Theme.style ] .getFont () ); table.put ( "ToolTip.font", Theme.toolTipFont [ Theme.style ].getFont () ); table.put ( "Tree.font", Theme.treeFont [ Theme.style ].getFont () ); table.put ( "PasswordField.font", Theme.passwordFont [ Theme.style ] .getFont () ); table.put ( "TextArea.font", Theme.textAreaFont [ Theme.style ].getFont () ); table.put ( "TextField.font", Theme.textFieldFont [ Theme.style ] .getFont () ); table.put ( "FormattedTextField.font", Theme.textFieldFont [ Theme.style ] .getFont () ); table.put ( "TextPane.font", Theme.textPaneFont [ Theme.style ].getFont () ); table.put ( "EditorPane.font", Theme.editorFont [ Theme.style ].getFont () ); table.put ( "InternalFrame.font", Theme.editorFont [ Theme.style ] .getFont () ); // font for internal frames and palettes table.put ( "InternalFrame.normalTitleFont", Theme.internalFrameTitleFont [ Theme.style ].getFont () ); table.put ( "InternalFrame.paletteTitleFont", Theme.internalPaletteTitleFont [ Theme.style ].getFont () ); // font for (decorized) frame table.put ( "InternalFrame.titleFont", Theme.frameTitleFont [ Theme.style ] .getFont () ); table.put ( "TabbedPane.font", Theme.tabFont [ Theme.style ].getFont () ); table.put ( "Button.foreground", Theme.buttonFontColor [ Theme.style ] .getColor () ); table.put ( "CheckBox.foreground", Theme.checkFontColor [ Theme.style ] .getColor () ); table.put ( "Menu.foreground", Theme.menuFontColor [ Theme.style ] .getColor () ); table.put ( "MenuItem.foreground", Theme.menuItemFontColor [ Theme.style ] .getColor () ); table.put ( "CheckBoxMenuItem.foreground", Theme.menuItemFontColor [ Theme.style ].getColor () ); table.put ( "RadioButtonMenuItem.foreground", Theme.menuItemFontColor [ Theme.style ].getColor () ); table.put ( "RadioButton.foreground", Theme.radioFontColor [ Theme.style ] .getColor () ); table.put ( "TabbedPane.foreground", Theme.tabFontColor [ Theme.style ] .getColor () ); table.put ( "TitledBorder.titleColor", Theme.titledBorderFontColor [ Theme.style ].getColor () ); table.put ( "Label.foreground", Theme.labelFontColor [ Theme.style ] .getColor () ); table.put ( "TableHeader.foreground", Theme.tableHeaderFontColor [ Theme.style ].getColor () ); table.put ( "TableHeader.background", Theme.tableHeaderBackColor [ Theme.style ].getColor () ); table.put ( "Table.foreground", Theme.tableFontColor [ Theme.style ] .getColor () ); table.put ( "Table.background", Theme.tableBackColor [ Theme.style ] .getColor () ); table.put ( "Table.selectionForeground", Theme.tableSelectedForeColor [ Theme.style ].getColor () ); table.put ( "Table.selectionBackground", Theme.tableSelectedBackColor [ Theme.style ].getColor () ); table.put ( "Table.gridColor", Theme.tableGridColor [ Theme.style ] .getColor () ); table.put ( "ProgressBar.foreground", Theme.progressColor [ Theme.style ] .getColor () ); table.put ( "ProgressBar.background", Theme.progressTrackColor [ Theme.style ].getColor () ); table.put ( "ProgressBar.selectionForeground", Theme.progressSelectForeColor [ Theme.style ].getColor () ); table.put ( "ProgressBar.selectionBackground", Theme.progressSelectBackColor [ Theme.style ].getColor () ); table.put ( "PopupMenu.background", Theme.menuPopupColor [ Theme.style ] ); table.put ( "TabbedPane.background", Theme.tabNormalColor [ Theme.style ] .getColor () ); table .put ( "TabbedPane.tabAreaInsets", Theme.tabAreaInsets [ Theme.style ] ); table.put ( "TabbedPane.tabInsets", Theme.tabInsets [ Theme.style ] ); table.put ( "MenuBar.background", Theme.menuBarColor [ Theme.style ] .getColor () ); table.put ( "ToolBar.background", Theme.toolBarColor [ Theme.style ] .getColor () ); table.put ( "EditorPane.caretForeground", Theme.textCaretColor [ Theme.style ].getColor () ); table.put ( "PasswordField.caretForeground", Theme.textCaretColor [ Theme.style ].getColor () ); table.put ( "TextArea.caretForeground", Theme.textCaretColor [ Theme.style ] .getColor () ); table.put ( "TextField.caretForeground", Theme.textCaretColor [ Theme.style ].getColor () ); table.put ( "FormattedTextField.caretForeground", Theme.textCaretColor [ Theme.style ].getColor () ); table.put ( "List.foreground", Theme.listTextColor [ Theme.style ] .getColor () ); table.put ( "List.background", Theme.listBgColor [ Theme.style ] .getColor () ); table.put ( "ComboBox.foreground", Theme.comboTextColor [ Theme.style ] .getColor () ); table.put ( "ComboBox.background", Theme.comboBgColor [ Theme.style ] .getColor () ); table.put ( "ComboBox.disabledBackground", Theme.textDisabledBgColor [ Theme.style ].getColor () ); table.put ( "EditorPane.background", Theme.textBgColor [ Theme.style ] .getColor () ); table.put ( "EditorPane.foreground", Theme.textTextColor [ Theme.style ] .getColor () ); table.put ( "PasswordField.background", Theme.textBgColor [ Theme.style ] .getColor () ); table.put ( "PasswordField.foreground", Theme.textTextColor [ Theme.style ] .getColor () ); table.put ( "PasswordField.inactiveBackground", Theme.textDisabledBgColor [ Theme.style ].getColor () ); table.put ( "TextArea.background", Theme.textBgColor [ Theme.style ] .getColor () ); table.put ( "TextArea.foreground", Theme.textTextColor [ Theme.style ] .getColor () ); table.put ( "TextArea.inactiveBackground", Theme.textDisabledBgColor [ Theme.style ].getColor () ); table.put ( "TextField.background", Theme.textBgColor [ Theme.style ] .getColor () ); table.put ( "TextField.foreground", Theme.textTextColor [ Theme.style ] .getColor () ); table.put ( "TextField.inactiveBackground", Theme.textDisabledBgColor [ Theme.style ].getColor () ); table.put ( "FormattedTextField.background", Theme.textBgColor [ Theme.style ].getColor () ); table.put ( "FormattedTextField.foreground", Theme.textTextColor [ Theme.style ].getColor () ); table.put ( "FormattedTextField.inactiveBackground", Theme.textDisabledBgColor [ Theme.style ].getColor () ); table.put ( "TextPane.background", Theme.textPaneBgColor [ Theme.style ] .getColor () ); table.put ( "EditorPane.background", Theme.editorPaneBgColor [ Theme.style ] .getColor () ); table.put ( "OptionPane.messageForeground", Theme.textTextColor [ Theme.style ].getColor () ); table.put ( "PasswordField.selectionBackground", Theme.textSelectedBgColor [ Theme.style ].getColor () ); table.put ( "PasswordField.selectionForeground", Theme.textSelectedTextColor [ Theme.style ].getColor () ); table.put ( "TextField.selectionBackground", Theme.textSelectedBgColor [ Theme.style ].getColor () ); table.put ( "TextField.selectionForeground", Theme.textSelectedTextColor [ Theme.style ].getColor () ); table.put ( "FormattedTextField.selectionBackground", Theme.textSelectedBgColor [ Theme.style ].getColor () ); table.put ( "FormattedTextField.selectionForeground", Theme.textSelectedTextColor [ Theme.style ].getColor () ); table.put ( "TextArea.selectionBackground", Theme.textSelectedBgColor [ Theme.style ].getColor () ); table.put ( "TextArea.selectionForeground", Theme.textSelectedTextColor [ Theme.style ].getColor () ); table.put ( "TextPane.selectionBackground", Theme.textSelectedBgColor [ Theme.style ].getColor () ); table.put ( "TextPane.selectionForeground", Theme.textSelectedTextColor [ Theme.style ].getColor () ); table.put ( "ComboBox.selectionBackground", Theme.comboSelectedBgColor [ Theme.style ].getColor () ); table.put ( "ComboBox.selectionForeground", Theme.comboSelectedTextColor [ Theme.style ].getColor () ); table.put ( "ComboBox.focusBackground", Theme.comboSelectedBgColor [ Theme.style ].getColor () ); table.put ( "List.selectionForeground", Theme.listSelectedTextColor [ Theme.style ].getColor () ); table.put ( "List.selectionBackground", Theme.listSelectedBgColor [ Theme.style ].getColor () ); table.put ( "Tree.background", Theme.treeBgColor [ Theme.style ] .getColor () ); table.put ( "Tree.textBackground", Theme.treeTextBgColor [ Theme.style ] .getColor () ); table.put ( "Tree.textForeground", Theme.treeTextColor [ Theme.style ] .getColor () ); table.put ( "Tree.selectionBackground", Theme.treeSelectedBgColor [ Theme.style ].getColor () ); table.put ( "Tree.selectionForeground", Theme.treeSelectedTextColor [ Theme.style ].getColor () ); table.put ( "Tree.hash", Theme.treeLineColor [ Theme.style ].getColor () ); table.put ( "Tree.line", Theme.treeLineColor [ Theme.style ].getColor () ); table.put ( "Button.disabledText", Theme.buttonDisabledFgColor [ Theme.style ].getColor () ); table.put ( "CheckBox.disabledText", Theme.checkDisabledFgColor [ Theme.style ].getColor () ); table.put ( "RadioButton.disabledText", Theme.radioDisabledFgColor [ Theme.style ].getColor () ); table.put ( "ToggleButton.disabledText", Theme.disColor [ Theme.style ] .getColor () ); table.put ( "ToggleButton.disabledSelectedText", Theme.disColor [ Theme.style ].getColor () ); table.put ( "TextArea.inactiveForeground", Theme.disColor [ Theme.style ] .getColor () ); table.put ( "TextField.inactiveForeground", Theme.disColor [ Theme.style ] .getColor () ); table.put ( "FormattedTextField.inactiveForeground", Theme.disColor [ Theme.style ].getColor () ); table.put ( "TextPane.inactiveForeground", Theme.disColor [ Theme.style ] .getColor () ); table.put ( "PasswordField.inactiveForeground", Theme.disColor [ Theme.style ].getColor () ); table.put ( "ComboBox.disabledForeground", Theme.disColor [ Theme.style ] .getColor () ); table.put ( "Label.disabledForeground", Theme.disColor [ Theme.style ] .getColor () ); table.put ( "textInactiveText", Theme.disColor [ Theme.style ].getColor () ); table.put ( "Desktop.background", Theme.desktopPaneBgColor [ Theme.style ] .getColor () ); table.put ( "Separator.background", Theme.sepDarkColor [ Theme.style ] .getColor () ); table.put ( "Separator.foreground", Theme.sepLightColor [ Theme.style ] .getColor () ); table.put ( "TitledBorder.border", new LineBorder ( Theme.titledBorderColor [ Theme.style ].getColor () ) ); table.put ( "ToolTip.background", Theme.tipBgColor [ Theme.style ] .getColor () ); table.put ( "ToolTip.backgroundInactive", Theme.tipBgDis [ Theme.style ] .getColor () ); table.put ( "ToolTip.foreground", Theme.tipTextColor [ Theme.style ] .getColor () ); table.put ( "ToolTip.foregroundInactive", Theme.tipTextDis [ Theme.style ] .getColor () ); table .put ( "Panel.background", Theme.backColor [ Theme.style ].getColor () ); secondary3 = new ColorUIResource ( Theme.backColor [ Theme.style ] .getColor () ); // set default icons and colorize selected icons Icon icon = null; for ( int i = 0 ; i < 20 ; i++ ) { if ( Theme.colorize [ Theme.style ] [ i ] ) { icon = TinyLookAndFeel.getUncolorizedSystemIcon ( i ); if ( icon != null && ( icon instanceof ImageIcon ) ) { HSBReference ref = Theme.colorizer [ i ] [ Theme.style ]; table.put ( TinyLookAndFeel.getSystemIconName ( i ), DrawRoutines .colorize ( ( ( ImageIcon ) icon ).getImage (), ref.getHue (), ref.getSaturation (), ref.getBrightness (), ref .isPreserveGrey () ) ); } else { table.put ( TinyLookAndFeel.getSystemIconName ( i ), icon ); } } } } /** * Gets the background color of a selected menu item. Pending! * * @return The background color of a selected menu item. */ public ColorUIResource getMenuSelectedBackground () { return new ColorUIResource ( 200, 200, 255 ); } /** * Gets the foreground color of a separator (in menues etc.). * * @return The foreground color of a separator == secondary3 == * Theme.backColor */ public ColorUIResource getSeparatorForeground () { return getSecondary3 (); } /** * Gets the name of this theme. * * @return A string describing this theme. */ public String getName () { return "TinyLaF Default Theme"; } /** * Gets the first primary color. * * @return The first primary color. See field declaration for more details. */ protected ColorUIResource getPrimary1 () { return primary1; } /** * Gets the second primary color. * * @return The second primary color. See field declaration for more details. */ protected ColorUIResource getPrimary2 () { return primary2; } /** * Gets the third primary color. * * @return The third primary color. See field declaration for more details. */ protected ColorUIResource getPrimary3 () { return primary3; } /** * Gets the first secondary color. * * @return The first secondary color. See field declaration for more details. */ protected ColorUIResource getSecondary1 () { return secondary1; } /** * Gets the second secondary color. * * @return The second secondary color. See field declaration for more details. */ protected ColorUIResource getSecondary2 () { return secondary2; } /** * Gets the third secondary color. * * @return The third secondary color. See field declaration for more details. */ protected ColorUIResource getSecondary3 () { return secondary3; } /** * Returns the ligthBackground. * * @return ColorUIResource */ public ColorUIResource getLigthBackground () { return lightBackground; } /** * Returns the ligthBackground. * * @return ColorUIResource */ public ColorUIResource getDarkControl () { return darkControl; } }