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.
486 lines
14 KiB
486 lines
14 KiB
/*
|
|
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
|
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
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;
|
|
}
|
|
}
|