/* |
|
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. |
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
* |
|
* This code is free software; you can redistribute it and/or modify it |
|
* under the terms of the GNU General Public License version 2 only, as |
|
* published by the Free Software Foundation. Oracle designates this |
|
* particular file as subject to the "Classpath" exception as provided |
|
* by Oracle in the LICENSE file that accompanied this code. |
|
* |
|
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
* version 2 for more details (a copy is included in the LICENSE file that |
|
* accompanied this code). |
|
* |
|
* You should have received a copy of the GNU General Public License version |
|
* 2 along with this work; if not, write to the Free Software Foundation, |
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
* |
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
* or visit www.oracle.com if you need additional information or have any |
|
* questions. |
|
*/ |
|
package javax.swing.plaf.metal; |
|
import javax.swing.plaf.*; |
|
import javax.swing.*; |
|
/** |
|
* {@code MetalTheme} provides the color palette and fonts used by |
|
* the Java Look and Feel. |
|
* <p> |
|
* {@code MetalTheme} is abstract, see {@code DefaultMetalTheme} and |
|
* {@code OceanTheme} for concrete implementations. |
|
* <p> |
|
* {@code MetalLookAndFeel} maintains the current theme that the |
|
* the {@code ComponentUI} implementations for metal use. Refer to |
|
* {@link MetalLookAndFeel#setCurrentTheme |
|
* MetalLookAndFeel.setCurrentTheme(MetalTheme)} for details on changing |
|
* the current theme. |
|
* <p> |
|
* {@code MetalTheme} provides a number of public methods for getting |
|
* colors. These methods are implemented in terms of a |
|
* handful of protected abstract methods. A subclass need only override |
|
* the protected abstract methods ({@code getPrimary1}, |
|
* {@code getPrimary2}, {@code getPrimary3}, {@code getSecondary1}, |
|
* {@code getSecondary2}, and {@code getSecondary3}); although a subclass |
|
* may override the other public methods for more control over the set of |
|
* colors that are used. |
|
* <p> |
|
* Concrete implementations of {@code MetalTheme} must return {@code non-null} |
|
* values from all methods. While the behavior of returning {@code null} is |
|
* not specified, returning {@code null} will result in incorrect behavior. |
|
* <p> |
|
* It is strongly recommended that subclasses return completely opaque colors. |
|
* To do otherwise may result in rendering problems, such as visual garbage. |
|
* |
|
* @see DefaultMetalTheme |
|
* @see OceanTheme |
|
* @see MetalLookAndFeel#setCurrentTheme |
|
* |
|
* @author Steve Wilson |
|
*/ |
|
public abstract class MetalTheme { |
|
// Contants identifying the various Fonts that are Theme can support |
|
static final int CONTROL_TEXT_FONT = 0; |
|
static final int SYSTEM_TEXT_FONT = 1; |
|
static final int USER_TEXT_FONT = 2; |
|
static final int MENU_TEXT_FONT = 3; |
|
static final int WINDOW_TITLE_FONT = 4; |
|
static final int SUB_TEXT_FONT = 5; |
|
static ColorUIResource white = new ColorUIResource( 255, 255, 255 ); |
|
private static ColorUIResource black = new ColorUIResource( 0, 0, 0 ); |
|
/** |
|
* Returns the name of this theme. |
|
* |
|
* @return the name of this theme |
|
*/ |
|
public abstract String getName(); |
|
/** |
|
* Returns the primary 1 color. |
|
* |
|
* @return the primary 1 color |
|
*/ |
|
protected abstract ColorUIResource getPrimary1(); // these are blue in Metal Default Theme |
|
/** |
|
* Returns the primary 2 color. |
|
* |
|
* @return the primary 2 color |
|
*/ |
|
protected abstract ColorUIResource getPrimary2(); |
|
/** |
|
* Returns the primary 3 color. |
|
* |
|
* @return the primary 3 color |
|
*/ |
|
protected abstract ColorUIResource getPrimary3(); |
|
/** |
|
* Returns the secondary 1 color. |
|
* |
|
* @return the secondary 1 color |
|
*/ |
|
protected abstract ColorUIResource getSecondary1(); // these are gray in Metal Default Theme |
|
/** |
|
* Returns the secondary 2 color. |
|
* |
|
* @return the secondary 2 color |
|
*/ |
|
protected abstract ColorUIResource getSecondary2(); |
|
/** |
|
* Returns the secondary 3 color. |
|
* |
|
* @return the secondary 3 color |
|
*/ |
|
protected abstract ColorUIResource getSecondary3(); |
|
/** |
|
* Returns the control text font. |
|
* |
|
* @return the control text font |
|
*/ |
|
public abstract FontUIResource getControlTextFont(); |
|
/** |
|
* Returns the system text font. |
|
* |
|
* @return the system text font |
|
*/ |
|
public abstract FontUIResource getSystemTextFont(); |
|
/** |
|
* Returns the user text font. |
|
* |
|
* @return the user text font |
|
*/ |
|
public abstract FontUIResource getUserTextFont(); |
|
/** |
|
* Returns the menu text font. |
|
* |
|
* @return the menu text font |
|
*/ |
|
public abstract FontUIResource getMenuTextFont(); |
|
/** |
|
* Returns the window title font. |
|
* |
|
* @return the window title font |
|
*/ |
|
public abstract FontUIResource getWindowTitleFont(); |
|
/** |
|
* Returns the sub-text font. |
|
* |
|
* @return the sub-text font |
|
*/ |
|
public abstract FontUIResource getSubTextFont(); |
|
/** |
|
* Returns the white color. This returns opaque white |
|
* ({@code 0xFFFFFFFF}). |
|
* |
|
* @return the white color |
|
*/ |
|
protected ColorUIResource getWhite() { return white; } |
|
/** |
|
* Returns the black color. This returns opaque black |
|
* ({@code 0xFF000000}). |
|
* |
|
* @return the black color |
|
*/ |
|
protected ColorUIResource getBlack() { return black; } |
|
/** |
|
* Returns the focus color. This returns the value of |
|
* {@code getPrimary2()}. |
|
* |
|
* @return the focus color |
|
*/ |
|
public ColorUIResource getFocusColor() { return getPrimary2(); } |
|
/** |
|
* Returns the desktop color. This returns the value of |
|
* {@code getPrimary2()}. |
|
* |
|
* @return the desktop color |
|
*/ |
|
public ColorUIResource getDesktopColor() { return getPrimary2(); } |
|
/** |
|
* Returns the control color. This returns the value of |
|
* {@code getSecondary3()}. |
|
* |
|
* @return the control color |
|
*/ |
|
public ColorUIResource getControl() { return getSecondary3(); } |
|
/** |
|
* Returns the control shadow color. This returns |
|
* the value of {@code getSecondary2()}. |
|
* |
|
* @return the control shadow color |
|
*/ |
|
public ColorUIResource getControlShadow() { return getSecondary2(); } |
|
/** |
|
* Returns the control dark shadow color. This returns |
|
* the value of {@code getSecondary1()}. |
|
* |
|
* @return the control dark shadow color |
|
*/ |
|
public ColorUIResource getControlDarkShadow() { return getSecondary1(); } |
|
/** |
|
* Returns the control info color. This returns |
|
* the value of {@code getBlack()}. |
|
* |
|
* @return the control info color |
|
*/ |
|
public ColorUIResource getControlInfo() { return getBlack(); } |
|
/** |
|
* Returns the control highlight color. This returns |
|
* the value of {@code getWhite()}. |
|
* |
|
* @return the control highlight color |
|
*/ |
|
public ColorUIResource getControlHighlight() { return getWhite(); } |
|
/** |
|
* Returns the control disabled color. This returns |
|
* the value of {@code getSecondary2()}. |
|
* |
|
* @return the control disabled color |
|
*/ |
|
public ColorUIResource getControlDisabled() { return getSecondary2(); } |
|
/** |
|
* Returns the primary control color. This returns |
|
* the value of {@code getPrimary3()}. |
|
* |
|
* @return the primary control color |
|
*/ |
|
public ColorUIResource getPrimaryControl() { return getPrimary3(); } |
|
/** |
|
* Returns the primary control shadow color. This returns |
|
* the value of {@code getPrimary2()}. |
|
* |
|
* @return the primary control shadow color |
|
*/ |
|
public ColorUIResource getPrimaryControlShadow() { return getPrimary2(); } |
|
/** |
|
* Returns the primary control dark shadow color. This |
|
* returns the value of {@code getPrimary1()}. |
|
* |
|
* @return the primary control dark shadow color |
|
*/ |
|
public ColorUIResource getPrimaryControlDarkShadow() { return getPrimary1(); } |
|
/** |
|
* Returns the primary control info color. This |
|
* returns the value of {@code getBlack()}. |
|
* |
|
* @return the primary control info color |
|
*/ |
|
public ColorUIResource getPrimaryControlInfo() { return getBlack(); } |
|
/** |
|
* Returns the primary control highlight color. This |
|
* returns the value of {@code getWhite()}. |
|
* |
|
* @return the primary control highlight color |
|
*/ |
|
public ColorUIResource getPrimaryControlHighlight() { return getWhite(); } |
|
/** |
|
* Returns the system text color. This returns the value of |
|
* {@code getBlack()}. |
|
* |
|
* @return the system text color |
|
*/ |
|
public ColorUIResource getSystemTextColor() { return getBlack(); } |
|
/** |
|
* Returns the control text color. This returns the value of |
|
* {@code getControlInfo()}. |
|
* |
|
* @return the control text color |
|
*/ |
|
public ColorUIResource getControlTextColor() { return getControlInfo(); } |
|
/** |
|
* Returns the inactive control text color. This returns the value of |
|
* {@code getControlDisabled()}. |
|
* |
|
* @return the inactive control text color |
|
*/ |
|
public ColorUIResource getInactiveControlTextColor() { return getControlDisabled(); } |
|
/** |
|
* Returns the inactive system text color. This returns the value of |
|
* {@code getSecondary2()}. |
|
* |
|
* @return the inactive system text color |
|
*/ |
|
public ColorUIResource getInactiveSystemTextColor() { return getSecondary2(); } |
|
/** |
|
* Returns the user text color. This returns the value of |
|
* {@code getBlack()}. |
|
* |
|
* @return the user text color |
|
*/ |
|
public ColorUIResource getUserTextColor() { return getBlack(); } |
|
/** |
|
* Returns the text highlight color. This returns the value of |
|
* {@code getPrimary3()}. |
|
* |
|
* @return the text highlight color |
|
*/ |
|
public ColorUIResource getTextHighlightColor() { return getPrimary3(); } |
|
/** |
|
* Returns the highlighted text color. This returns the value of |
|
* {@code getControlTextColor()}. |
|
* |
|
* @return the highlighted text color |
|
*/ |
|
public ColorUIResource getHighlightedTextColor() { return getControlTextColor(); } |
|
/** |
|
* Returns the window background color. This returns the value of |
|
* {@code getWhite()}. |
|
* |
|
* @return the window background color |
|
*/ |
|
public ColorUIResource getWindowBackground() { return getWhite(); } |
|
/** |
|
* Returns the window title background color. This returns the value of |
|
* {@code getPrimary3()}. |
|
* |
|
* @return the window title background color |
|
*/ |
|
public ColorUIResource getWindowTitleBackground() { return getPrimary3(); } |
|
/** |
|
* Returns the window title foreground color. This returns the value of |
|
* {@code getBlack()}. |
|
* |
|
* @return the window title foreground color |
|
*/ |
|
public ColorUIResource getWindowTitleForeground() { return getBlack(); } |
|
/** |
|
* Returns the window title inactive background color. This |
|
* returns the value of {@code getSecondary3()}. |
|
* |
|
* @return the window title inactive background color |
|
*/ |
|
public ColorUIResource getWindowTitleInactiveBackground() { return getSecondary3(); } |
|
/** |
|
* Returns the window title inactive foreground color. This |
|
* returns the value of {@code getBlack()}. |
|
* |
|
* @return the window title inactive foreground color |
|
*/ |
|
public ColorUIResource getWindowTitleInactiveForeground() { return getBlack(); } |
|
/** |
|
* Returns the menu background color. This |
|
* returns the value of {@code getSecondary3()}. |
|
* |
|
* @return the menu background color |
|
*/ |
|
public ColorUIResource getMenuBackground() { return getSecondary3(); } |
|
/** |
|
* Returns the menu foreground color. This |
|
* returns the value of {@code getBlack()}. |
|
* |
|
* @return the menu foreground color |
|
*/ |
|
public ColorUIResource getMenuForeground() { return getBlack(); } |
|
/** |
|
* Returns the menu selected background color. This |
|
* returns the value of {@code getPrimary2()}. |
|
* |
|
* @return the menu selected background color |
|
*/ |
|
public ColorUIResource getMenuSelectedBackground() { return getPrimary2(); } |
|
/** |
|
* Returns the menu selected foreground color. This |
|
* returns the value of {@code getBlack()}. |
|
* |
|
* @return the menu selected foreground color |
|
*/ |
|
public ColorUIResource getMenuSelectedForeground() { return getBlack(); } |
|
/** |
|
* Returns the menu disabled foreground color. This |
|
* returns the value of {@code getSecondary2()}. |
|
* |
|
* @return the menu disabled foreground color |
|
*/ |
|
public ColorUIResource getMenuDisabledForeground() { return getSecondary2(); } |
|
/** |
|
* Returns the separator background color. This |
|
* returns the value of {@code getWhite()}. |
|
* |
|
* @return the separator background color |
|
*/ |
|
public ColorUIResource getSeparatorBackground() { return getWhite(); } |
|
/** |
|
* Returns the separator foreground color. This |
|
* returns the value of {@code getPrimary1()}. |
|
* |
|
* @return the separator foreground color |
|
*/ |
|
public ColorUIResource getSeparatorForeground() { return getPrimary1(); } |
|
/** |
|
* Returns the accelerator foreground color. This |
|
* returns the value of {@code getPrimary1()}. |
|
* |
|
* @return the accelerator foreground color |
|
*/ |
|
public ColorUIResource getAcceleratorForeground() { return getPrimary1(); } |
|
/** |
|
* Returns the accelerator selected foreground color. This |
|
* returns the value of {@code getBlack()}. |
|
* |
|
* @return the accelerator selected foreground color |
|
*/ |
|
public ColorUIResource getAcceleratorSelectedForeground() { return getBlack(); } |
|
/** |
|
* Adds values specific to this theme to the defaults table. This method |
|
* is invoked when the look and feel defaults are obtained from |
|
* {@code MetalLookAndFeel}. |
|
* <p> |
|
* This implementation does nothing; it is provided for subclasses |
|
* that wish to customize the defaults table. |
|
* |
|
* @param table the {@code UIDefaults} to add the values to |
|
* |
|
* @see MetalLookAndFeel#getDefaults |
|
*/ |
|
public void addCustomEntriesToTable(UIDefaults table) {} |
|
/** |
|
* This is invoked when a MetalLookAndFeel is installed and about to |
|
* start using this theme. When we can add API this should be nuked |
|
* in favor of DefaultMetalTheme overriding addCustomEntriesToTable. |
|
*/ |
|
void install() { |
|
} |
|
/** |
|
* Returns true if this is a theme provided by the core platform. |
|
*/ |
|
boolean isSystemTheme() { |
|
return false; |
|
} |
|
} |