You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
484 lines
20 KiB
484 lines
20 KiB
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
|
* 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; |
|
} |
|
} |