001: /*
002: * <copyright>
003: *
004: * Copyright 1997-2004 BBNT Solutions, LLC
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.util;
028:
029: import java.awt.Color;
030:
031: import javax.swing.UIDefaults;
032: import javax.swing.UIManager;
033: import javax.swing.UnsupportedLookAndFeelException;
034: import javax.swing.plaf.metal.MetalLookAndFeel;
035: import javax.swing.plaf.metal.MetalTheme;
036:
037: /**
038: * ThemeFactory - Convenience class for establishing common look and feel
039: * for the UI. Also defines a common set of colors for use in the UI.
040: *
041: * Can switch between font sizes by changing myCurrentMetalTheme and
042: * recompiling. Top level demo UI - applet or main - should call
043: * establishMetalTheme()
044: *
045: * @see javax.swing.plaf.metal.MetalTheme
046: */
047: public class ThemeFactory {
048: static private final Color myCougaarRed = new Color(255, 75, 75);
049: static private final Color myCougaarYellow = new Color(250, 250, 25);
050: static private final Color myCougaarGreen = new Color(50, 205, 50);
051:
052: static public final String COUGAAR_RED_KEY = "CougaarRed";
053: static public final String COUGAAR_YELLOW_KEY = "CougaarYellow";
054: static public final String COUGAAR_GREEN_KEY = "CougaarGreen";
055:
056: /**
057: * Use for demo
058: */
059: static final MetalTheme myCurrentMetalTheme = new DemoMetalTheme();
060:
061: /**
062: * Use for normal size fonts
063: */
064: //static final MetalTheme myCurrentMetalTheme = new DefaultMetalTheme();
065: /**
066: * getMetalTheme - returns current MetalTheme (determines default
067: * colors and fonts.
068: *
069: * @return MetalTheme - current MetalTheme
070: */
071: static public MetalTheme getMetalTheme() {
072: return myCurrentMetalTheme;
073: }
074:
075: /**
076: * establishMetalTheme - sets the look and feel. Involves setting
077: * the current theme for MetalLookAndFeel and then installing
078: * MetalLookAndFeel as the UIManager default.
079: *
080: * @see javax.swing.plaf.metal.MetalLookAndFeel
081: * @see javax.swing.UIManager#setLookAndFeel
082: */
083: static public void establishMetalTheme() {
084: try {
085: MetalLookAndFeel.setCurrentTheme(myCurrentMetalTheme);
086:
087: UIManager.setLookAndFeel(new MetalLookAndFeel());
088:
089: UIDefaults defaults = UIManager.getDefaults();
090: defaults.put(COUGAAR_RED_KEY, getCougaarRed());
091: defaults.put(COUGAAR_YELLOW_KEY, getCougaarYellow());
092: defaults.put(COUGAAR_GREEN_KEY, getCougaarGreen());
093:
094: // BOZO for sun - List font is not surfaced in MetalLookAndFeel
095: defaults.put("List.font", myCurrentMetalTheme
096: .getUserTextFont());
097: } catch (UnsupportedLookAndFeelException ulafe) {
098: System.out
099: .println("ThemeFactory.establishMetalTheme() - exception "
100: + ulafe);
101: ulafe.printStackTrace();
102: }
103: }
104:
105: /**
106: * getCougaarRed - returns the canonical COUGAAR red
107: *
108: * @return Color - COUGAAR red.
109: */
110: static public Color getCougaarRed() {
111: return myCougaarRed;
112: }
113:
114: /**
115: * getCougaarYellow - returns the canonical COUGAAR yellow
116: *
117: * @return Color - COUGAAR yellow
118: */
119: static public Color getCougaarYellow() {
120: return myCougaarYellow;
121: }
122:
123: /**
124: * getCougaarGreen - returns the canonical COUGAAR green
125: *
126: * @return Color - COUGAAR green.
127: */
128: static public Color getCougaarGreen() {
129: return myCougaarGreen;
130: }
131:
132: }
|