1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
/* * @(#)ColorType.java 1.13 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.swing.plaf.synth; /** * A typesafe enumeration of colors that can be fetched from a style. * <p> * Each <code>SynthStyle</code> has a set of <code>ColorType</code>s that * are accessed by way of the * {@link SynthStyle#getColor(SynthContext, ColorType)} method. * <code>SynthStyle</code>'s <code>installDefaults</code> will install * the <code>FOREGROUND</code> color * as the foreground of * the Component, and the <code>BACKGROUND</code> color to the background of * the component (assuming that you have not explicitly specified a * foreground and background color). Some components * support more color based properties, for * example <code>JList</code> has the property * <code>selectionForeground</code> which will be mapped to * <code>FOREGROUND</code> with a component state of * <code>SynthConstants.SELECTED</code>. * <p> * The following example shows a custom <code>SynthStyle</code> that returns * a red Color for the <code>DISABLED</code> state, otherwise a black color. * <pre> * class MyStyle extends SynthStyle { * private Color disabledColor = new ColorUIResource(Color.RED); * private Color color = new ColorUIResource(Color.BLACK); * protected Color getColorForState(SynthContext context, ColorType type){ * if (context.getComponentState() == SynthConstants.DISABLED) { * return disabledColor; * } * return color; * } * } * </pre> * * @version 1.13, 11/17/05 * @since 1.5 * @author Scott Violet */ public class ColorType { /** * ColorType for the foreground of a region. */ public static final ColorType FOREGROUND = new ColorType("Foreground"); /** * ColorType for the background of a region. */ public static final ColorType BACKGROUND = new ColorType("Background"); /** * ColorType for the foreground of a region. */ public static final ColorType TEXT_FOREGROUND = new ColorType( "TextForeground"); /** * ColorType for the background of a region. */ public static final ColorType TEXT_BACKGROUND =new ColorType( "TextBackground"); /** * ColorType for the focus. */ public static final ColorType FOCUS = new ColorType("Focus"); /** * Maximum number of <code>ColorType</code>s. */ public static final int MAX_COUNT; private static int nextID; private String description; private int index; static { MAX_COUNT = Math.max(FOREGROUND.getID(), Math.max( BACKGROUND.getID(), FOCUS.getID())) + 1; } /** * Creates a new ColorType with the specified description. * * @param description String description of the ColorType. */ protected ColorType(String description) { if (description == null) { throw new NullPointerException( "ColorType must have a valid description"); } this.description = description; synchronized(ColorType.class) { this.index = nextID++; } } /** * Returns a unique id, as an integer, for this ColorType. * * @return a unique id, as an integer, for this ColorType. */ public final int getID() { return index; } /** * Returns the textual description of this <code>ColorType</code>. * This is the same value that the <code>ColorType</code> was created * with. * * @return the description of the string */ public String toString() { return description; } }