/*
* @(#)MetalTheme.java 1.27 03/12/19
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.swing.plaf.metal;
import javax.swing.plaf.*;
import javax.swing.*;
/**
* This abstract class acts as a generic way to describe the colors
* used by Metal. Subclasses of <code>MetalTheme</code> can
* be used to swap the colors in a Metal application.
*
* @version 1.27 12/19/03
* @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 );
public abstract String getName();
protected abstract ColorUIResource getPrimary1(); // these are blue in Metal Default Theme
protected abstract ColorUIResource getPrimary2();
protected abstract ColorUIResource getPrimary3();
protected abstract ColorUIResource getSecondary1(); // these are gray in Metal Default Theme
protected abstract ColorUIResource getSecondary2();
protected abstract ColorUIResource getSecondary3();
public abstract FontUIResource getControlTextFont();
public abstract FontUIResource getSystemTextFont();
public abstract FontUIResource getUserTextFont();
public abstract FontUIResource getMenuTextFont();
public abstract FontUIResource getWindowTitleFont();
public abstract FontUIResource getSubTextFont();
protected ColorUIResource getWhite() { return white; }
protected ColorUIResource getBlack() { return black; }
public ColorUIResource getFocusColor() { return getPrimary2(); }
public ColorUIResource getDesktopColor() { return getPrimary2(); }
public ColorUIResource getControl() { return getSecondary3(); }
public ColorUIResource getControlShadow() { return getSecondary2(); }
public ColorUIResource getControlDarkShadow() { return getSecondary1(); }
public ColorUIResource getControlInfo() { return getBlack(); }
public ColorUIResource getControlHighlight() { return getWhite(); }
public ColorUIResource getControlDisabled() { return getSecondary2(); }
public ColorUIResource getPrimaryControl() { return getPrimary3(); }
public ColorUIResource getPrimaryControlShadow() { return getPrimary2(); }
public ColorUIResource getPrimaryControlDarkShadow() { return getPrimary1(); }
public ColorUIResource getPrimaryControlInfo() { return getBlack(); }
public ColorUIResource getPrimaryControlHighlight() { return getWhite(); }
/**
* Returns the color used, by default, for the text in labels
* and titled borders.
*/
public ColorUIResource getSystemTextColor() { return getBlack(); }
public ColorUIResource getControlTextColor() { return getControlInfo(); }
public ColorUIResource getInactiveControlTextColor() { return getControlDisabled(); }
public ColorUIResource getInactiveSystemTextColor() { return getSecondary2(); }
public ColorUIResource getUserTextColor() { return getBlack(); }
public ColorUIResource getTextHighlightColor() { return getPrimary3(); }
public ColorUIResource getHighlightedTextColor() { return getControlTextColor(); }
public ColorUIResource getWindowBackground() { return getWhite(); }
public ColorUIResource getWindowTitleBackground() { return getPrimary3(); }
public ColorUIResource getWindowTitleForeground() { return getBlack(); }
public ColorUIResource getWindowTitleInactiveBackground() { return getSecondary3(); }
public ColorUIResource getWindowTitleInactiveForeground() { return getBlack(); }
public ColorUIResource getMenuBackground() { return getSecondary3(); }
public ColorUIResource getMenuForeground() { return getBlack(); }
public ColorUIResource getMenuSelectedBackground() { return getPrimary2(); }
public ColorUIResource getMenuSelectedForeground() { return getBlack(); }
public ColorUIResource getMenuDisabledForeground() { return getSecondary2(); }
public ColorUIResource getSeparatorBackground() { return getWhite(); }
public ColorUIResource getSeparatorForeground() { return getPrimary1(); }
public ColorUIResource getAcceleratorForeground() { return getPrimary1(); }
public ColorUIResource getAcceleratorSelectedForeground() { return getBlack(); }
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;
}
}
|