Author: rwhitcomb Date: Tue Mar 17 19:20:42 2020 New Revision: 1875319 URL: http://svn.apache.org/viewvc?rev=1875319&view=rev Log: Change / simplify the way we initialize the CSSColor values by using a private static class for the lookup maps, and using an alternate constructor that creates the Color value itself. Add a method to ColorUtilities to translate a CSSColor to a string value.
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/CSSColor.java pivot/trunk/wtk/src/org/apache/pivot/wtk/util/ColorUtilities.java Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/CSSColor.java URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/CSSColor.java?rev=1875319&r1=1875318&r2=1875319&view=diff ============================================================================== --- pivot/trunk/wtk/src/org/apache/pivot/wtk/CSSColor.java (original) +++ pivot/trunk/wtk/src/org/apache/pivot/wtk/CSSColor.java Tue Mar 17 19:20:42 2020 @@ -34,162 +34,189 @@ import org.apache.pivot.wtk.util.ColorUt * and {@link org.apache.pivot.wtk.content.ColorItem#allCSSColors} methods. */ public enum CSSColor { - AliceBlue (new Color(240, 248, 255)), - AntiqueWhite (new Color(250, 235, 215)), - Aqua (new Color( 0, 255, 255)), - Aquamarine (new Color(127, 255, 212)), - Azure (new Color(240, 255, 255)), - Beige (new Color(245, 245, 220)), - Bisque (new Color(255, 228, 196)), + AliceBlue (240, 248, 255), + AntiqueWhite (250, 235, 215), + Aqua ( 0, 255, 255), + Aquamarine (127, 255, 212), + Azure (240, 255, 255), + Beige (245, 245, 220), + Bisque (255, 228, 196), Black (Color.BLACK), - BlanchedAlmond (new Color(255, 235, 205)), + BlanchedAlmond (255, 235, 205), Blue (Color.BLUE), - BlueViolet (new Color(138, 43, 226)), - Brown (new Color(165, 42, 42)), - Burlywood (new Color(222, 184, 135)), - CadetBlue (new Color( 95, 158, 160)), - Chartreuse (new Color(127, 255, 0)), - Chocolate (new Color(210, 105, 30)), - Coral (new Color(255, 127, 80)), - CornflowerBlue (new Color(100, 149, 237)), - Cornsilk (new Color(255, 248, 220)), - Crimson (new Color(220, 20, 60)), + BlueViolet (138, 43, 226), + Brown (165, 42, 42), + Burlywood (222, 184, 135), + CadetBlue ( 95, 158, 160), + Chartreuse (127, 255, 0), + Chocolate (210, 105, 30), + Coral (255, 127, 80), + CornflowerBlue (100, 149, 237), + Cornsilk (255, 248, 220), + Crimson (220, 20, 60), Cyan (Color.CYAN), - DarkBlue (new Color( 0, 0, 139)), - DarkCyan (new Color( 0, 139, 139)), - DarkGoldenrod (new Color(184, 134, 11)), + DarkBlue ( 0, 0, 139), + DarkCyan ( 0, 139, 139), + DarkGoldenrod (184, 134, 11), DarkGray (Color.DARK_GRAY), - DarkGreen (new Color( 0, 100, 0)), + DarkGreen ( 0, 100, 0), DarkGrey (Color.DARK_GRAY), - DarkKhaki (new Color(189, 183, 107)), - DarkMagenta (new Color(139, 0, 139)), - DarkOliveGreen (new Color( 85, 107, 47)), - DarkOrange (new Color(255, 140, 0)), - DarkOrchid (new Color(153, 50, 204)), - DarkRed (new Color(139, 0, 0)), - DarkSalmon (new Color(233, 150, 122)), - DarkSeaGreen (new Color(143, 188, 143)), - DarkSlateBlue (new Color( 72, 61, 139)), - DarkSlateGray (new Color( 47, 79, 79)), - DarkSlateGrey (new Color( 47, 79, 79)), - DarkTurquoise (new Color( 0, 206, 209)), - DarkViolet (new Color(148, 0, 211)), - DeepPink (new Color(255, 20, 147)), - DeepSkyBlue (new Color( 0, 191, 255)), - DimGray (new Color(105, 105, 105)), - DimGrey (new Color(105, 105, 105)), - DodgerBlue (new Color( 30, 144, 255)), - FireBrick (new Color(178, 34, 34)), - FloralWhite (new Color(255, 250, 240)), - ForestGreen (new Color( 34, 139, 34)), - Fuchsia (new Color(255, 0, 255)), - Gainsboro (new Color(220, 220, 220)), - GhostWhite (new Color(248, 248, 255)), - Gold (new Color(255, 215, 0)), - Goldenrod (new Color(218, 165, 32)), + DarkKhaki (189, 183, 107), + DarkMagenta (139, 0, 139), + DarkOliveGreen ( 85, 107, 47), + DarkOrange (255, 140, 0), + DarkOrchid (153, 50, 204), + DarkRed (139, 0, 0), + DarkSalmon (233, 150, 122), + DarkSeaGreen (143, 188, 143), + DarkSlateBlue ( 72, 61, 139), + DarkSlateGray ( 47, 79, 79), + DarkSlateGrey ( 47, 79, 79), + DarkTurquoise ( 0, 206, 209), + DarkViolet (148, 0, 211), + DeepPink (255, 20, 147), + DeepSkyBlue ( 0, 191, 255), + DimGray (105, 105, 105), + DimGrey (105, 105, 105), + DodgerBlue ( 30, 144, 255), + FireBrick (178, 34, 34), + FloralWhite (255, 250, 240), + ForestGreen ( 34, 139, 34), + Fuchsia (255, 0, 255), + Gainsboro (220, 220, 220), + GhostWhite (248, 248, 255), + Gold (255, 215, 0), + Goldenrod (218, 165, 32), Gray (Color.GRAY), Green (Color.GREEN), - GreenYellow (new Color(173, 255, 47)), + GreenYellow (173, 255, 47), Grey (Color.GRAY), - Honeydew (new Color(240, 255, 240)), - HotPink (new Color(255, 105, 180)), - IndianRed (new Color(205, 92, 92)), - Indigo (new Color( 75, 0, 130)), - Ivory (new Color(255, 255, 240)), - Khaki (new Color(240, 230, 140)), - Lavender (new Color(230, 230, 250)), - LavenderBlush (new Color(255, 240, 245)), - LawnGreen (new Color(124, 252, 0)), - LemonChiffon (new Color(255, 250, 205)), - LightBlue (new Color(173, 216, 230)), - LightCoral (new Color(240, 128, 128)), - LightCyan (new Color(224, 255, 255)), - LightGoldenrodYellow(new Color(250, 250, 210)), + Honeydew (240, 255, 240), + HotPink (255, 105, 180), + IndianRed (205, 92, 92), + Indigo ( 75, 0, 130), + Ivory (255, 255, 240), + Khaki (240, 230, 140), + Lavender (230, 230, 250), + LavenderBlush (255, 240, 245), + LawnGreen (124, 252, 0), + LemonChiffon (255, 250, 205), + LightBlue (173, 216, 230), + LightCoral (240, 128, 128), + LightCyan (224, 255, 255), + LightGoldenrodYellow(250, 250, 210), LightGray (Color.LIGHT_GRAY), - LightGreen (new Color(144, 238, 144)), + LightGreen (144, 238, 144), LightGrey (Color.LIGHT_GRAY), - LightPink (new Color(255, 182, 193)), - LightSalmon (new Color(255, 160, 122)), - LightSeaGreen (new Color( 32, 178, 170)), - LightSkyBlue (new Color(135, 206, 250)), - LightSlateGray (new Color(119, 136, 153)), - LightSlateGrey (new Color(119, 136, 153)), - LightSteelBlue (new Color(176, 196, 222)), - LightYellow (new Color(255, 255, 224)), - Lime (new Color( 0, 255, 0)), - LimeGreen (new Color( 50, 205, 50)), - Linen (new Color(250, 240, 230)), + LightPink (255, 182, 193), + LightSalmon (255, 160, 122), + LightSeaGreen ( 32, 178, 170), + LightSkyBlue (135, 206, 250), + LightSlateGray (119, 136, 153), + LightSlateGrey (119, 136, 153), + LightSteelBlue (176, 196, 222), + LightYellow (255, 255, 224), + Lime ( 0, 255, 0), + LimeGreen ( 50, 205, 50), + Linen (250, 240, 230), Magenta (Color.MAGENTA), - Maroon (new Color(128, 0, 0)), - MediumAquamarine (new Color(102, 205, 170)), - MediumBlue (new Color( 0, 0, 205)), - MediumOrchid (new Color(186, 85, 211)), - MediumPurple (new Color(147, 112, 219)), - MediumSeaGreen (new Color( 60, 179, 113)), - MediumSlateBlue (new Color(123, 104, 238)), - MediumSpringGreen (new Color( 0, 250, 154)), - MediumTurquoise (new Color( 72, 209, 204)), - MediumVioletRed (new Color(199, 21, 133)), - MidnightBlue (new Color( 25, 25, 112)), - MintCream (new Color(245, 255, 250)), - MistyRose (new Color(255, 228, 225)), - Moccasin (new Color(255, 228, 181)), - NavajoWhite (new Color(255, 222, 173)), - Navy (new Color( 0, 0, 128)), - OldLace (new Color(253, 245, 230)), - Olive (new Color(128, 128, 0)), - OliveDrab (new Color(107, 142, 35)), + Maroon (128, 0, 0), + MediumAquamarine (102, 205, 170), + MediumBlue ( 0, 0, 205), + MediumOrchid (186, 85, 211), + MediumPurple (147, 112, 219), + MediumSeaGreen ( 60, 179, 113), + MediumSlateBlue (123, 104, 238), + MediumSpringGreen ( 0, 250, 154), + MediumTurquoise ( 72, 209, 204), + MediumVioletRed (199, 21, 133), + MidnightBlue ( 25, 25, 112), + MintCream (245, 255, 250), + MistyRose (255, 228, 225), + Moccasin (255, 228, 181), + NavajoWhite (255, 222, 173), + Navy ( 0, 0, 128), + OldLace (253, 245, 230), + Olive (128, 128, 0), + OliveDrab (107, 142, 35), Orange (Color.ORANGE), - OrangeRed (new Color(255, 69, 0)), - Orchid (new Color(218, 112, 214)), - PaleGoldenrod (new Color(238, 232, 170)), - PaleGreen (new Color(152, 251, 152)), - PaleTurquoise (new Color(175, 238, 238)), - PaleVioletRed (new Color(219, 112, 147)), - PapayaWhip (new Color(255, 239, 213)), - PeachPuff (new Color(255, 218, 185)), - Peru (new Color(205, 133, 63)), + OrangeRed (255, 69, 0), + Orchid (218, 112, 214), + PaleGoldenrod (238, 232, 170), + PaleGreen (152, 251, 152), + PaleTurquoise (175, 238, 238), + PaleVioletRed (219, 112, 147), + PapayaWhip (255, 239, 213), + PeachPuff (255, 218, 185), + Peru (205, 133, 63), Pink (Color.PINK), - Plum (new Color(221, 160, 221)), - PowderBlue (new Color(176, 224, 230)), - Purple (new Color(128, 0, 128)), + Plum (221, 160, 221), + PowderBlue (176, 224, 230), + Purple (128, 0, 128), Red (Color.RED), - RosyBrown (new Color(188, 143, 143)), - RoyalBlue (new Color( 65, 105, 225)), - SaddleBrown (new Color(139, 69, 19)), - Salmon (new Color(250, 128, 114)), - SandyBrown (new Color(244, 164, 96)), - SeaGreen (new Color( 46, 139, 87)), - Seashell (new Color(255, 245, 238)), - Sienna (new Color(160, 82, 45)), - Silver (new Color(192, 192, 192)), - SkyBlue (new Color(135, 206, 235)), - SlateBlue (new Color(106, 90, 205)), - SlateGray (new Color(112, 128, 144)), - SlateGrey (new Color(112, 128, 144)), - Snow (new Color(255, 250, 250)), - SpringGreen (new Color( 0, 255, 127)), - SteelBlue (new Color( 70, 130, 180)), - Tan (new Color(210, 180, 140)), - Teal (new Color( 0, 128, 128)), - Thistle (new Color(216, 191, 216)), - Tomato (new Color(255, 99, 71)), - Turquoise (new Color( 64, 224, 208)), - Violet (new Color(238, 130, 238)), - Wheat (new Color(245, 222, 179)), + RosyBrown (188, 143, 143), + RoyalBlue ( 65, 105, 225), + SaddleBrown (139, 69, 19), + Salmon (250, 128, 114), + SandyBrown (244, 164, 96), + SeaGreen ( 46, 139, 87), + Seashell (255, 245, 238), + Sienna (160, 82, 45), + Silver (192, 192, 192), + SkyBlue (135, 206, 235), + SlateBlue (106, 90, 205), + SlateGray (112, 128, 144), + SlateGrey (112, 128, 144), + Snow (255, 250, 250), + SpringGreen ( 0, 255, 127), + SteelBlue ( 70, 130, 180), + Tan (210, 180, 140), + Teal ( 0, 128, 128), + Thistle (216, 191, 216), + Tomato (255, 99, 71), + Turquoise ( 64, 224, 208), + Violet (238, 130, 238), + Wheat (245, 222, 179), White (Color.WHITE), - WhiteSmoke (new Color(245, 245, 245)), + WhiteSmoke (245, 245, 245), Yellow (Color.YELLOW), - YellowGreen (new Color(154, 205, 50)); + YellowGreen (154, 205, 50); /** The color value associated with this CSS color name. */ private Color color; /** A standardized (lower-case) name for this color for matching. */ private String colorName; + /** + * Private class that allows us to initialize lookup maps at constructor time, + * instead of in a static initializer block later. + */ + private static class Lookup { + /** A map to translate from a color name to the enum value. */ + private static Map<String, CSSColor> colorNameMap = new HashMap<>(); + /** A map to translate from a color value to the enum value. */ + private static Map<Color, CSSColor> colorValueMap = new HashMap<>(); + } + + /** + * Construct from integer R,G,B values. + * @param r The red component of the color. + * @param g The green component. + * @param b And finally the blue value. + */ + CSSColor(final int r, final int g, final int b) { + this(new Color(r, g, b)); + } + + /** + * Construct from one of the {@link Color} equivalents. + * @param color The Java AWT color value this corresponds to. + */ CSSColor(final Color color) { this.color = color; this.colorName = super.toString().toLowerCase(Locale.ENGLISH); + Lookup.colorNameMap.put(this.colorName, this); + Lookup.colorValueMap.put(this.color, this); } /** @@ -216,7 +243,7 @@ public enum CSSColor { */ public static CSSColor fromString(final String colorName) { String lowerName = colorName.toLowerCase(Locale.ENGLISH); - CSSColor color = colorNameMap.get(lowerName); + CSSColor color = Lookup.colorNameMap.get(lowerName); if (color == null) { throw new IllegalArgumentException("Incorrect Color format. " + "Color name \"" + colorName + "\" is not valid."); @@ -233,7 +260,7 @@ public enum CSSColor { */ public static CSSColor fromColor(final Color color) { Color solidColor = ColorUtilities.toSolidColor(color); - CSSColor cssColor = colorValueMap.get(solidColor); + CSSColor cssColor = Lookup.colorValueMap.get(solidColor); if (cssColor == null) { throw new IllegalArgumentException("Incorrect Color value. " + color.toString() + " does not match any CSS color."); @@ -241,18 +268,4 @@ public enum CSSColor { return cssColor; } - - /** A map to translate from a color name to the enum value. */ - private static Map<String, CSSColor> colorNameMap; - /** A map to translate from a color value to the enum value. */ - private static Map<Color, CSSColor> colorValueMap; - - static { - colorNameMap = new HashMap<>(); - colorValueMap = new HashMap<>(); - for (CSSColor color : values()) { - colorNameMap.put(color.getColorName(), color); - colorValueMap.put(color.getColor(), color); - } - } } Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/util/ColorUtilities.java URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/util/ColorUtilities.java?rev=1875319&r1=1875318&r2=1875319&view=diff ============================================================================== --- pivot/trunk/wtk/src/org/apache/pivot/wtk/util/ColorUtilities.java (original) +++ pivot/trunk/wtk/src/org/apache/pivot/wtk/util/ColorUtilities.java Tue Mar 17 19:20:42 2020 @@ -240,4 +240,16 @@ public final class ColorUtilities { } } + /** + * @return An encoded value for the given {@link CSSColor} in the form of: + * <tt>#RRGGBB</tt> only (since these are always solid colors by definition), + * which is suitable for lookup in the + * {@link org.apache.pivot.wtk.GraphicsUtilities#decodeColor(String)} method. + * @param color The input color to convert. + * @see #toStringValue(Color) + */ + public static String toStringValue(final CSSColor color) { + return toStringValue(color.getColor()); + } + }