0N/A/*
2362N/A * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/A/*
0N/A * <p>These classes are designed to be used while the
0N/A * corresponding <code>LookAndFeel</code> class has been installed
0N/A * (<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
0N/A * Using them while a different <code>LookAndFeel</code> is installed
0N/A * may produce unexpected results, including exceptions.
0N/A * Additionally, changing the <code>LookAndFeel</code>
0N/A * maintained by the <code>UIManager</code> without updating the
0N/A * corresponding <code>ComponentUI</code> of any
0N/A * <code>JComponent</code>s may also produce unexpected results,
0N/A * such as the wrong colors showing up, and is generally not
0N/A * encouraged.
0N/A *
0N/A */
0N/A
0N/Apackage com.sun.java.swing.plaf.windows;
0N/A
0N/Aimport java.awt.*;
0N/Aimport java.util.*;
0N/A
0N/Aimport javax.swing.*;
0N/A
0N/Aimport sun.awt.windows.ThemeReader;
0N/A
0N/A/**
0N/A * Implements Windows Parts and their States and Properties for the Windows Look and Feel.
0N/A *
0N/A * See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/userex/topics/partsandstates.asp
0N/A * See tmschema.h (or vssym32.h & vsstyle.h for MS Vista)
0N/A *
0N/A * @author Leif Samuelsson
0N/A */
0N/Aclass TMSchema {
0N/A
0N/A /**
0N/A * An enumeration of the various Windows controls (also known as
0N/A * components, or top-level parts)
0N/A */
0N/A public static enum Control {
0N/A BUTTON,
0N/A COMBOBOX,
0N/A EDIT,
0N/A HEADER,
0N/A LISTBOX,
0N/A LISTVIEW,
0N/A MENU,
0N/A PROGRESS,
0N/A REBAR,
0N/A SCROLLBAR,
0N/A SPIN,
0N/A TAB,
0N/A TOOLBAR,
0N/A TRACKBAR,
0N/A TREEVIEW,
0N/A WINDOW
0N/A }
0N/A
0N/A
0N/A /**
0N/A * An enumeration of the Windows compoent parts
0N/A */
0N/A public static enum Part {
0N/A MENU (Control.MENU, 0), // Special case, not in native
0N/A MP_BARBACKGROUND (Control.MENU, 7),
0N/A MP_BARITEM (Control.MENU, 8),
0N/A MP_POPUPBACKGROUND (Control.MENU, 9),
0N/A MP_POPUPBORDERS (Control.MENU, 10),
0N/A MP_POPUPCHECK (Control.MENU, 11),
0N/A MP_POPUPCHECKBACKGROUND (Control.MENU, 12),
0N/A MP_POPUPGUTTER (Control.MENU, 13),
0N/A MP_POPUPITEM (Control.MENU, 14),
0N/A MP_POPUPSEPARATOR (Control.MENU, 15),
0N/A MP_POPUPSUBMENU (Control.MENU, 16),
0N/A
0N/A BP_PUSHBUTTON (Control.BUTTON, 1),
0N/A BP_RADIOBUTTON(Control.BUTTON, 2),
0N/A BP_CHECKBOX (Control.BUTTON, 3),
0N/A BP_GROUPBOX (Control.BUTTON, 4),
0N/A
0N/A CP_COMBOBOX (Control.COMBOBOX, 0),
0N/A CP_DROPDOWNBUTTON(Control.COMBOBOX, 1),
0N/A CP_BACKGROUND (Control.COMBOBOX, 2),
0N/A CP_TRANSPARENTBACKGROUND (Control.COMBOBOX, 3),
0N/A CP_BORDER (Control.COMBOBOX, 4),
0N/A CP_READONLY (Control.COMBOBOX, 5),
0N/A CP_DROPDOWNBUTTONRIGHT (Control.COMBOBOX, 6),
0N/A CP_DROPDOWNBUTTONLEFT (Control.COMBOBOX, 7),
0N/A CP_CUEBANNER (Control.COMBOBOX, 8),
0N/A
0N/A
0N/A EP_EDIT (Control.EDIT, 0),
0N/A EP_EDITTEXT(Control.EDIT, 1),
0N/A
0N/A HP_HEADERITEM(Control.HEADER, 1),
0N/A HP_HEADERSORTARROW(Control.HEADER, 4),
0N/A
0N/A LBP_LISTBOX(Control.LISTBOX, 0),
0N/A
0N/A LVP_LISTVIEW(Control.LISTVIEW, 0),
0N/A
0N/A PP_PROGRESS (Control.PROGRESS, 0),
0N/A PP_BAR (Control.PROGRESS, 1),
0N/A PP_BARVERT (Control.PROGRESS, 2),
0N/A PP_CHUNK (Control.PROGRESS, 3),
0N/A PP_CHUNKVERT(Control.PROGRESS, 4),
0N/A
0N/A RP_GRIPPER (Control.REBAR, 1),
0N/A RP_GRIPPERVERT(Control.REBAR, 2),
0N/A
0N/A SBP_SCROLLBAR (Control.SCROLLBAR, 0),
0N/A SBP_ARROWBTN (Control.SCROLLBAR, 1),
0N/A SBP_THUMBBTNHORZ (Control.SCROLLBAR, 2),
0N/A SBP_THUMBBTNVERT (Control.SCROLLBAR, 3),
0N/A SBP_LOWERTRACKHORZ(Control.SCROLLBAR, 4),
0N/A SBP_UPPERTRACKHORZ(Control.SCROLLBAR, 5),
0N/A SBP_LOWERTRACKVERT(Control.SCROLLBAR, 6),
0N/A SBP_UPPERTRACKVERT(Control.SCROLLBAR, 7),
0N/A SBP_GRIPPERHORZ (Control.SCROLLBAR, 8),
0N/A SBP_GRIPPERVERT (Control.SCROLLBAR, 9),
0N/A SBP_SIZEBOX (Control.SCROLLBAR, 10),
0N/A
0N/A SPNP_UP (Control.SPIN, 1),
0N/A SPNP_DOWN(Control.SPIN, 2),
0N/A
0N/A TABP_TABITEM (Control.TAB, 1),
0N/A TABP_TABITEMLEFTEDGE (Control.TAB, 2),
0N/A TABP_TABITEMRIGHTEDGE(Control.TAB, 3),
0N/A TABP_PANE (Control.TAB, 9),
0N/A
0N/A TP_TOOLBAR (Control.TOOLBAR, 0),
0N/A TP_BUTTON (Control.TOOLBAR, 1),
0N/A TP_SEPARATOR (Control.TOOLBAR, 5),
0N/A TP_SEPARATORVERT (Control.TOOLBAR, 6),
0N/A
0N/A TKP_TRACK (Control.TRACKBAR, 1),
0N/A TKP_TRACKVERT (Control.TRACKBAR, 2),
0N/A TKP_THUMB (Control.TRACKBAR, 3),
0N/A TKP_THUMBBOTTOM(Control.TRACKBAR, 4),
0N/A TKP_THUMBTOP (Control.TRACKBAR, 5),
0N/A TKP_THUMBVERT (Control.TRACKBAR, 6),
0N/A TKP_THUMBLEFT (Control.TRACKBAR, 7),
0N/A TKP_THUMBRIGHT (Control.TRACKBAR, 8),
0N/A TKP_TICS (Control.TRACKBAR, 9),
0N/A TKP_TICSVERT (Control.TRACKBAR, 10),
0N/A
0N/A TVP_TREEVIEW(Control.TREEVIEW, 0),
0N/A TVP_GLYPH (Control.TREEVIEW, 2),
0N/A
0N/A WP_WINDOW (Control.WINDOW, 0),
0N/A WP_CAPTION (Control.WINDOW, 1),
0N/A WP_MINCAPTION (Control.WINDOW, 3),
0N/A WP_MAXCAPTION (Control.WINDOW, 5),
0N/A WP_FRAMELEFT (Control.WINDOW, 7),
0N/A WP_FRAMERIGHT (Control.WINDOW, 8),
0N/A WP_FRAMEBOTTOM (Control.WINDOW, 9),
0N/A WP_SYSBUTTON (Control.WINDOW, 13),
0N/A WP_MDISYSBUTTON (Control.WINDOW, 14),
0N/A WP_MINBUTTON (Control.WINDOW, 15),
0N/A WP_MDIMINBUTTON (Control.WINDOW, 16),
0N/A WP_MAXBUTTON (Control.WINDOW, 17),
0N/A WP_CLOSEBUTTON (Control.WINDOW, 18),
0N/A WP_MDICLOSEBUTTON (Control.WINDOW, 20),
0N/A WP_RESTOREBUTTON (Control.WINDOW, 21),
0N/A WP_MDIRESTOREBUTTON(Control.WINDOW, 22);
0N/A
0N/A private final Control control;
0N/A private final int value;
0N/A
0N/A private Part(Control control, int value) {
0N/A this.control = control;
0N/A this.value = value;
0N/A }
0N/A
0N/A public int getValue() {
0N/A return value;
0N/A }
0N/A
0N/A public String getControlName(Component component) {
0N/A String str = "";
0N/A if (component instanceof JComponent) {
0N/A JComponent c = (JComponent)component;
0N/A String subAppName = (String)c.getClientProperty("XPStyle.subAppName");
0N/A if (subAppName != null) {
0N/A str = subAppName + "::";
0N/A }
0N/A }
0N/A return str + control.toString();
0N/A }
0N/A
0N/A public String toString() {
0N/A return control.toString()+"."+name();
0N/A }
0N/A }
0N/A
0N/A
0N/A /**
0N/A * An enumeration of the possible component states
0N/A */
0N/A public static enum State {
0N/A ACTIVE,
0N/A ASSIST,
0N/A BITMAP,
0N/A CHECKED,
0N/A CHECKEDDISABLED,
0N/A CHECKEDHOT,
0N/A CHECKEDNORMAL,
0N/A CHECKEDPRESSED,
0N/A CHECKMARKNORMAL,
0N/A CHECKMARKDISABLED,
0N/A BULLETNORMAL,
0N/A BULLETDISABLED,
0N/A CLOSED,
0N/A DEFAULTED,
0N/A DISABLED,
0N/A DISABLEDHOT,
0N/A DISABLEDPUSHED,
0N/A DOWNDISABLED,
0N/A DOWNHOT,
0N/A DOWNNORMAL,
0N/A DOWNPRESSED,
0N/A FOCUSED,
0N/A HOT,
0N/A HOTCHECKED,
0N/A ICONHOT,
0N/A ICONNORMAL,
0N/A ICONPRESSED,
0N/A ICONSORTEDHOT,
0N/A ICONSORTEDNORMAL,
0N/A ICONSORTEDPRESSED,
0N/A INACTIVE,
0N/A INACTIVENORMAL, // See note 1
0N/A INACTIVEHOT, // See note 1
0N/A INACTIVEPUSHED, // See note 1
0N/A INACTIVEDISABLED, // See note 1
0N/A LEFTDISABLED,
0N/A LEFTHOT,
0N/A LEFTNORMAL,
0N/A LEFTPRESSED,
0N/A MIXEDDISABLED,
0N/A MIXEDHOT,
0N/A MIXEDNORMAL,
0N/A MIXEDPRESSED,
0N/A NORMAL,
0N/A PRESSED,
0N/A OPENED,
0N/A PUSHED,
0N/A READONLY,
0N/A RIGHTDISABLED,
0N/A RIGHTHOT,
0N/A RIGHTNORMAL,
0N/A RIGHTPRESSED,
0N/A SELECTED,
0N/A UNCHECKEDDISABLED,
0N/A UNCHECKEDHOT,
0N/A UNCHECKEDNORMAL,
0N/A UNCHECKEDPRESSED,
0N/A UPDISABLED,
0N/A UPHOT,
0N/A UPNORMAL,
0N/A UPPRESSED,
0N/A HOVER,
0N/A UPHOVER,
0N/A DOWNHOVER,
0N/A LEFTHOVER,
0N/A RIGHTHOVER,
0N/A SORTEDDOWN,
0N/A SORTEDHOT,
0N/A SORTEDNORMAL,
0N/A SORTEDPRESSED,
0N/A SORTEDUP;
0N/A
0N/A
0N/A /**
0N/A * A map of allowed states for each Part
0N/A */
0N/A private static EnumMap<Part, State[]> stateMap;
0N/A
0N/A private static synchronized void initStates() {
0N/A stateMap = new EnumMap<Part, State[]>(Part.class);
0N/A
0N/A stateMap.put(Part.EP_EDITTEXT,
0N/A new State[] {
0N/A NORMAL, HOT, SELECTED, DISABLED, FOCUSED, READONLY, ASSIST
0N/A });
0N/A
0N/A stateMap.put(Part.BP_PUSHBUTTON,
0N/A new State[] { NORMAL, HOT, PRESSED, DISABLED, DEFAULTED });
0N/A
0N/A stateMap.put(Part.BP_RADIOBUTTON,
0N/A new State[] {
0N/A UNCHECKEDNORMAL, UNCHECKEDHOT, UNCHECKEDPRESSED, UNCHECKEDDISABLED,
0N/A CHECKEDNORMAL, CHECKEDHOT, CHECKEDPRESSED, CHECKEDDISABLED
0N/A });
0N/A
0N/A stateMap.put(Part.BP_CHECKBOX,
0N/A new State[] {
0N/A UNCHECKEDNORMAL, UNCHECKEDHOT, UNCHECKEDPRESSED, UNCHECKEDDISABLED,
0N/A CHECKEDNORMAL, CHECKEDHOT, CHECKEDPRESSED, CHECKEDDISABLED,
0N/A MIXEDNORMAL, MIXEDHOT, MIXEDPRESSED, MIXEDDISABLED
0N/A });
0N/A
0N/A State[] comboBoxStates = new State[] { NORMAL, HOT, PRESSED, DISABLED };
0N/A stateMap.put(Part.CP_COMBOBOX, comboBoxStates);
0N/A stateMap.put(Part.CP_DROPDOWNBUTTON, comboBoxStates);
0N/A stateMap.put(Part.CP_BACKGROUND, comboBoxStates);
0N/A stateMap.put(Part.CP_TRANSPARENTBACKGROUND, comboBoxStates);
0N/A stateMap.put(Part.CP_BORDER, comboBoxStates);
0N/A stateMap.put(Part.CP_READONLY, comboBoxStates);
0N/A stateMap.put(Part.CP_DROPDOWNBUTTONRIGHT, comboBoxStates);
0N/A stateMap.put(Part.CP_DROPDOWNBUTTONLEFT, comboBoxStates);
0N/A stateMap.put(Part.CP_CUEBANNER, comboBoxStates);
0N/A
0N/A stateMap.put(Part.HP_HEADERITEM, new State[] { NORMAL, HOT, PRESSED,
0N/A SORTEDNORMAL, SORTEDHOT, SORTEDPRESSED,
0N/A ICONNORMAL, ICONHOT, ICONPRESSED,
0N/A ICONSORTEDNORMAL, ICONSORTEDHOT, ICONSORTEDPRESSED });
0N/A
0N/A stateMap.put(Part.HP_HEADERSORTARROW,
0N/A new State[] {SORTEDDOWN, SORTEDUP});
0N/A
0N/A State[] scrollBarStates = new State[] { NORMAL, HOT, PRESSED, DISABLED, HOVER };
0N/A stateMap.put(Part.SBP_SCROLLBAR, scrollBarStates);
0N/A stateMap.put(Part.SBP_THUMBBTNVERT, scrollBarStates);
0N/A stateMap.put(Part.SBP_THUMBBTNHORZ, scrollBarStates);
0N/A stateMap.put(Part.SBP_GRIPPERVERT, scrollBarStates);
0N/A stateMap.put(Part.SBP_GRIPPERHORZ, scrollBarStates);
0N/A
0N/A stateMap.put(Part.SBP_ARROWBTN,
0N/A new State[] {
0N/A UPNORMAL, UPHOT, UPPRESSED, UPDISABLED,
0N/A DOWNNORMAL, DOWNHOT, DOWNPRESSED, DOWNDISABLED,
0N/A LEFTNORMAL, LEFTHOT, LEFTPRESSED, LEFTDISABLED,
0N/A RIGHTNORMAL, RIGHTHOT, RIGHTPRESSED, RIGHTDISABLED,
0N/A UPHOVER, DOWNHOVER, LEFTHOVER, RIGHTHOVER
0N/A });
0N/A
0N/A
0N/A State[] spinnerStates = new State[] { NORMAL, HOT, PRESSED, DISABLED };
0N/A stateMap.put(Part.SPNP_UP, spinnerStates);
0N/A stateMap.put(Part.SPNP_DOWN, spinnerStates);
0N/A
0N/A stateMap.put(Part.TVP_GLYPH, new State[] { CLOSED, OPENED });
0N/A
0N/A State[] frameButtonStates = new State[] {
0N/A NORMAL, HOT, PUSHED, DISABLED, // See note 1
0N/A INACTIVENORMAL, INACTIVEHOT, INACTIVEPUSHED, INACTIVEDISABLED,
0N/A };
0N/A // Note 1: The INACTIVE frame button states apply when the frame
0N/A // is inactive. They are not defined in tmschema.h
0N/A
0N/A // Fix for 6316538: Vista has five frame button states
0N/A if (ThemeReader.getInt(Control.WINDOW.toString(),
0N/A Part.WP_CLOSEBUTTON.getValue(), 1,
0N/A Prop.IMAGECOUNT.getValue()) == 10) {
0N/A frameButtonStates = new State[] {
0N/A NORMAL, HOT, PUSHED, DISABLED, null,
0N/A INACTIVENORMAL, INACTIVEHOT, INACTIVEPUSHED, INACTIVEDISABLED, null
0N/A };
0N/A }
0N/A
0N/A stateMap.put(Part.WP_MINBUTTON, frameButtonStates);
0N/A stateMap.put(Part.WP_MAXBUTTON, frameButtonStates);
0N/A stateMap.put(Part.WP_RESTOREBUTTON, frameButtonStates);
0N/A stateMap.put(Part.WP_CLOSEBUTTON, frameButtonStates);
0N/A
0N/A // States for Slider (trackbar)
0N/A stateMap.put(Part.TKP_TRACK, new State[] { NORMAL });
0N/A stateMap.put(Part.TKP_TRACKVERT, new State[] { NORMAL });
0N/A
0N/A State[] sliderThumbStates =
0N/A new State[] { NORMAL, HOT, PRESSED, FOCUSED, DISABLED };
0N/A stateMap.put(Part.TKP_THUMB, sliderThumbStates);
0N/A stateMap.put(Part.TKP_THUMBBOTTOM, sliderThumbStates);
0N/A stateMap.put(Part.TKP_THUMBTOP, sliderThumbStates);
0N/A stateMap.put(Part.TKP_THUMBVERT, sliderThumbStates);
0N/A stateMap.put(Part.TKP_THUMBRIGHT, sliderThumbStates);
0N/A
0N/A // States for Tabs
0N/A State[] tabStates = new State[] { NORMAL, HOT, SELECTED, DISABLED, FOCUSED };
0N/A stateMap.put(Part.TABP_TABITEM, tabStates);
0N/A stateMap.put(Part.TABP_TABITEMLEFTEDGE, tabStates);
0N/A stateMap.put(Part.TABP_TABITEMRIGHTEDGE, tabStates);
0N/A
0N/A
0N/A stateMap.put(Part.TP_BUTTON,
0N/A new State[] {
0N/A NORMAL, HOT, PRESSED, DISABLED, CHECKED, HOTCHECKED
0N/A });
0N/A
0N/A State[] frameStates = new State[] { ACTIVE, INACTIVE };
0N/A stateMap.put(Part.WP_WINDOW, frameStates);
0N/A stateMap.put(Part.WP_FRAMELEFT, frameStates);
0N/A stateMap.put(Part.WP_FRAMERIGHT, frameStates);
0N/A stateMap.put(Part.WP_FRAMEBOTTOM, frameStates);
0N/A
0N/A State[] captionStates = new State[] { ACTIVE, INACTIVE, DISABLED };
0N/A stateMap.put(Part.WP_CAPTION, captionStates);
0N/A stateMap.put(Part.WP_MINCAPTION, captionStates);
0N/A stateMap.put(Part.WP_MAXCAPTION, captionStates);
0N/A
0N/A stateMap.put(Part.MP_BARBACKGROUND,
0N/A new State[] { ACTIVE, INACTIVE });
0N/A stateMap.put(Part.MP_BARITEM,
0N/A new State[] { NORMAL, HOT, PUSHED,
0N/A DISABLED, DISABLEDHOT, DISABLEDPUSHED });
0N/A stateMap.put(Part.MP_POPUPCHECK,
0N/A new State[] { CHECKMARKNORMAL, CHECKMARKDISABLED,
0N/A BULLETNORMAL, BULLETDISABLED });
0N/A stateMap.put(Part.MP_POPUPCHECKBACKGROUND,
0N/A new State[] { DISABLEDPUSHED, NORMAL, BITMAP });
0N/A stateMap.put(Part.MP_POPUPITEM,
0N/A new State[] { NORMAL, HOT, DISABLED, DISABLEDHOT });
0N/A stateMap.put(Part.MP_POPUPSUBMENU,
0N/A new State[] { NORMAL, DISABLED });
0N/A
0N/A }
0N/A
0N/A
0N/A public static synchronized int getValue(Part part, State state) {
0N/A if (stateMap == null) {
0N/A initStates();
0N/A }
0N/A
0N/A Enum[] states = stateMap.get(part);
0N/A if (states != null) {
0N/A for (int i = 0; i < states.length; i++) {
0N/A if (state == states[i]) {
0N/A return i + 1;
0N/A }
0N/A }
0N/A }
0N/A
0N/A if (state == null || state == State.NORMAL) {
0N/A return 1;
0N/A }
0N/A
0N/A return 0;
0N/A }
0N/A
0N/A }
0N/A
0N/A
0N/A /**
0N/A * An enumeration of the possible component attributes and the
0N/A * corresponding value type
0N/A */
0N/A public static enum Prop {
0N/A COLOR(Color.class, 204),
0N/A SIZE(Dimension.class, 207),
0N/A
0N/A FLATMENUS(Boolean.class, 1001),
0N/A
0N/A BORDERONLY(Boolean.class, 2203), // only draw the border area of the image
0N/A
0N/A IMAGECOUNT(Integer.class, 2401), // the number of state images in an imagefile
0N/A BORDERSIZE(Integer.class, 2403), // the size of the border line for bgtype=BorderFill
0N/A
0N/A PROGRESSCHUNKSIZE(Integer.class, 2411), // size of progress control chunks
0N/A PROGRESSSPACESIZE(Integer.class, 2412), // size of progress control spaces
0N/A
0N/A TEXTSHADOWOFFSET(Point.class, 3402), // where char shadows are drawn, relative to orig. chars
0N/A
0N/A NORMALSIZE(Dimension.class, 3409), // size of dest rect that exactly source
0N/A
0N/A
0N/A SIZINGMARGINS ( Insets.class, 3601), // margins used for 9-grid sizing
0N/A CONTENTMARGINS(Insets.class, 3602), // margins that define where content can be placed
0N/A CAPTIONMARGINS(Insets.class, 3603), // margins that define where caption text can be placed
0N/A
0N/A BORDERCOLOR(Color.class, 3801), // color of borders for BorderFill
0N/A FILLCOLOR ( Color.class, 3802), // color of bg fill
0N/A TEXTCOLOR ( Color.class, 3803), // color text is drawn in
0N/A
0N/A TEXTSHADOWCOLOR(Color.class, 3818), // color of text shadow
0N/A
0N/A BGTYPE(Integer.class, 4001), // basic drawing type for each part
0N/A
0N/A TEXTSHADOWTYPE(Integer.class, 4010), // type of shadow to draw with text
0N/A
0N/A TRANSITIONDURATIONS(Integer.class, 6000);
0N/A
0N/A private final Class type;
0N/A private final int value;
0N/A
0N/A private Prop(Class type, int value) {
0N/A this.type = type;
0N/A this.value = value;
0N/A }
0N/A
0N/A public int getValue() {
0N/A return value;
0N/A }
0N/A
0N/A public String toString() {
0N/A return name()+"["+type.getName()+"] = "+value;
0N/A }
0N/A }
0N/A
0N/A
0N/A /**
0N/A * An enumeration of attribute values for some Props
0N/A */
0N/A public static enum TypeEnum {
0N/A BT_IMAGEFILE (Prop.BGTYPE, "imagefile", 0),
0N/A BT_BORDERFILL(Prop.BGTYPE, "borderfill", 1),
0N/A
0N/A TST_NONE(Prop.TEXTSHADOWTYPE, "none", 0),
0N/A TST_SINGLE(Prop.TEXTSHADOWTYPE, "single", 1),
0N/A TST_CONTINUOUS(Prop.TEXTSHADOWTYPE, "continuous", 2);
0N/A
0N/A
0N/A private TypeEnum(Prop prop, String enumName, int value) {
0N/A this.prop = prop;
0N/A this.enumName = enumName;
0N/A this.value = value;
0N/A }
0N/A
0N/A private final Prop prop;
0N/A private final String enumName;
0N/A private final int value;
0N/A
0N/A public String toString() {
0N/A return prop+"="+enumName+"="+value;
0N/A }
0N/A
0N/A String getName() {
0N/A return enumName;
0N/A }
0N/A
0N/A
0N/A static TypeEnum getTypeEnum(Prop prop, int enumval) {
0N/A for (TypeEnum e : TypeEnum.values()) {
0N/A if (e.prop == prop && e.value == enumval) {
0N/A return e;
0N/A }
0N/A }
0N/A return null;
0N/A }
0N/A }
0N/A}