001: /*
002: * Copyright (c) 2001-2005 JGoodies Karsten Lentzsch. All Rights Reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JGoodies Karsten Lentzsch nor the names of
015: * its contributors may be used to endorse or promote products derived
016: * from this software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
020: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
021: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
022: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
025: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
026: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
027: * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
028: * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package contrib.com.jgoodies.looks;
032:
033: import org.jvnet.lafwidget.utils.LookUtils;
034:
035: /**
036: * Describes font size hints used by the JGoodies Windows look&feel;
037: * future implementations of the Plastic l&f may use the same hints.<p>
038: *
039: * These hints are only applied if the dialog font is <em>Tahoma</em>,
040: * which is the default font on the majority of Windows desktops.
041: * The hints apply a size delta to increase or decrease the given
042: * system font size.<p>
043: *
044: * NOTE: This is work in progress and will probably change in the
045: * next release, to better reflect the font choice in the J2SE 1.4.".
046: *
047: * @author Karsten Lentzsch
048: * @version $Revision: 1.2 $
049: *
050: * @see Options#setGlobalFontSizeHints(FontSizeHints)
051: * @see FontUtils
052: */
053: public final class FontSizeHints {
054:
055: public static final FontSizeHints LARGE = new FontSizeHints(12, 12,
056: 14, 14);
057: public static final FontSizeHints SYSTEM = new FontSizeHints(11,
058: 11, 14, 14);
059: public static final FontSizeHints MIXED2 = new FontSizeHints(11,
060: 11, 14, 13);
061: public static final FontSizeHints MIXED = new FontSizeHints(11, 11,
062: 14, 12);
063: public static final FontSizeHints SMALL = new FontSizeHints(11, 11,
064: 12, 12);
065: public static final FontSizeHints FIXED = new FontSizeHints(12, 12,
066: 12, 12);
067:
068: public static final FontSizeHints DEFAULT = SYSTEM;
069:
070: private final int loResMenuFontSize;
071: private final int loResControlFontSize;
072: private final int hiResMenuFontSize;
073: private final int hiResControlFontSize;
074:
075: /**
076: * Constructs <code>FontSizeHints</code> for the specified menu and
077: * control fonts, both for low and high resolution environments.
078: *
079: * @param loResMenuFontSize the size of the menu font in low resolution
080: * @param loResControlFontSize the size of the control font in low resolution
081: * @param hiResMenuFontSize the size of the menu font in low resolution
082: * @param hiResControlFontSize the size of the control font in low resolution
083: */
084: public FontSizeHints(int loResMenuFontSize,
085: int loResControlFontSize, int hiResMenuFontSize,
086: int hiResControlFontSize) {
087: this .loResMenuFontSize = loResMenuFontSize;
088: this .loResControlFontSize = loResControlFontSize;
089: this .hiResMenuFontSize = hiResMenuFontSize;
090: this .hiResControlFontSize = hiResControlFontSize;
091: }
092:
093: /**
094: * Returns the low resolution menu font size.
095: *
096: * @return the size of the menu font in low resolution mode
097: */
098: public int loResMenuFontSize() {
099: return loResMenuFontSize;
100: }
101:
102: /**
103: * Returns the low resolution control font size.
104: *
105: * @return the size of the control font in low resolution mode
106: */
107: public int loResControlFontSize() {
108: return loResControlFontSize;
109: }
110:
111: /**
112: * Returns the high resolution menu font size.
113: *
114: * @return the size of the menu font in high resolution mode
115: */
116: public int hiResMenuFontSize() {
117: return hiResMenuFontSize;
118: }
119:
120: /**
121: * Returns the high resolution control font size.
122: *
123: * @return the size of the control font in high resolution mode
124: */
125: public int hiResControlFontSize() {
126: return hiResControlFontSize;
127: }
128:
129: /**
130: * Returns the menu font size.
131: *
132: * @return the size of the menu font in the current resolution
133: */
134: public int menuFontSize() {
135: return LookUtils.IS_LOW_RESOLUTION ? loResMenuFontSize
136: : hiResMenuFontSize();
137: }
138:
139: /**
140: * Returns the control font size.
141: *
142: * @return the size of the control font in the current resolution
143: */
144: public int controlFontSize() {
145: return LookUtils.IS_LOW_RESOLUTION ? loResControlFontSize
146: : hiResControlFontSize();
147: }
148:
149: /**
150: * Returns the delta between the system menu font size and
151: * our menu font size hint.
152: *
153: * @return the delta between the system menu font size and
154: * our menu font size hint
155: */
156: public float menuFontSizeDelta() {
157: return menuFontSize() - SYSTEM.menuFontSize();
158: }
159:
160: /**
161: * Returns the delta between system control font size and
162: * our control font size hint.
163: *
164: * @return the delta between the system control font size and
165: * our control font size hint
166: */
167: public float controlFontSizeDelta() {
168: return controlFontSize() - SYSTEM.controlFontSize();
169: }
170:
171: /**
172: * Looksup and returns the <code>FontSizeHints</code> for the specified name.
173: *
174: * @param name the name of the FontSizeHints object
175: * @return the associated FontSizeHints object
176: */
177: public static FontSizeHints valueOf(String name) {
178: if (name.equalsIgnoreCase("LARGE"))
179: return LARGE;
180: else if (name.equalsIgnoreCase("SYSTEM"))
181: return SYSTEM;
182: else if (name.equalsIgnoreCase("MIXED"))
183: return MIXED;
184: else if (name.equalsIgnoreCase("SMALL"))
185: return SMALL;
186: else if (name.equalsIgnoreCase("FIXED"))
187: return FIXED;
188: else
189: throw new IllegalArgumentException(
190: "Unknown font size hints name: " + name);
191: }
192: }
|