/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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.*; import javax.swing.*; import javax.swing.border.*; 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.*; /** * TinyDefaultTheme * * @version 1.1 * @author Hans Bickel */ 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; } }