001: /*
002: * uDig - User Friendly Desktop Internet GIS client http://udig.refractions.net (C) 2004,
003: * Refractions Research Inc. This library is free software; you can redistribute it and/or modify it
004: * under the terms of the GNU Lesser General Public License as published by the Free Software
005: * Foundation; version 2.1 of the License. This library is distributed in the hope that it will be
006: * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
007: * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
008: */
009: package net.refractions.udig.ui.palette;
010:
011: import java.util.EnumSet;
012: import java.util.MissingResourceException;
013: import java.util.ResourceBundle;
014:
015: import org.geotools.util.SimpleInternationalString;
016: import org.opengis.util.InternationalString;
017:
018: /**
019: * Captures the information provided by the ColorBrewer icons.
020: * <p>
021: * <ul>
022: * <li>ColorBlind
023: * <li>PhotoCopy
024: * <li>LCD Projector
025: * <li>LCD
026: * <li>CRT
027: * <li>Color Printing
028: * </ul>
029: * </p>
030: *
031: * @see http://www.personal.psu.edu/faculty/c/a/cab38/ColorBrewer/ColorBrewer_learnMore.html
032: * @author jgarnett
033: * @since 0.6.0
034: * @deprecated
035: */
036: public enum Friendly {
037: /**
038: * Will not confuse people with red-green color blindness. Red-green color blindness affects
039: * approximately 8 percent of men and 0.4 percent of women.
040: */
041: COLORBLIND,
042:
043: /**
044: * Will withstand black and white photocopying. Diverging schemes can not be photocopied
045: * successfully. Differences in lightness should be preserved with sequential schemes.
046: */
047: PHOTOCOPY,
048:
049: /** <code>PROJECTOR</code> field */
050: PROJECTOR,
051:
052: /**
053: * Suitable for the typical LCD room projector. LCD projectors have a tendency to 'wash-out'
054: * colors resulting in pastel and pale colors looking the same (i.e. white).
055: */
056: LCD,
057:
058: /**
059: * Suitable for viewing on a laptop LCD display. LCD monitors tend to wash-out colors which
060: * results in noticeable differences from traditional CRT computer monitors.
061: */
062: CRT,
063:
064: /**
065: * Suitable for color printing. CMYK specs are as close to press-ready as is reasonable.
066: */
067: PRINT;
068:
069: public final InternationalString description;
070: public final InternationalString display;
071:
072: private Friendly() {
073: this .display = string(name() + ".display"); //$NON-NLS-1$
074: this .description = string(name() + ".description"); //$NON-NLS-1$
075: }
076:
077: private static ResourceBundle bundle = null;
078:
079: /**
080: * Gets a string from the resource bundle. We don't want to crash because of a missing String.
081: * Returns the key if not found.
082: *
083: * @param key the id to look up
084: * @return the string with the given key
085: */
086: private static InternationalString string(String key) {
087: if (bundle == null) {
088: try {
089: bundle = ResourceBundle
090: .getBundle("net.refractions.udig.ui.palette.friendly"); //$NON-NLS-1$
091: } catch (Throwable t) {
092: t.printStackTrace();
093: }
094: }
095: try {
096: return new SimpleInternationalString(bundle.getString(key));
097: } catch (MissingResourceException e) {
098: return new SimpleInternationalString(key);
099: } catch (NullPointerException e) {
100: return new SimpleInternationalString("!" + key + "!"); //$NON-NLS-1$ //$NON-NLS-2$
101: }
102: }
103:
104: /**
105: * Parse text of the form: <code>colorblind, lcd, crt</code>.
106: *
107: * @param text
108: * @return EnumSet (may be empty)
109: */
110: public static EnumSet<Friendly> parse(String text) {
111: EnumSet<Friendly> set = EnumSet.noneOf(Friendly.class);
112: if (text == null)
113: return set;
114: for (String symbol : text.split(",")) { //$NON-NLS-1$
115: symbol = symbol.trim();
116: if (symbol.length() == 0)
117: continue;
118: try {
119: set.add(Friendly.valueOf(symbol.toUpperCase()));
120: } catch (IllegalArgumentException badSymbol) {
121: System.out.println(badSymbol);
122: }
123: }
124: return set;
125: }
126: }
|