001: /*
002: * Copyright (c) 2001-2007 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 com.jgoodies.looks;
032:
033: import javax.swing.UIDefaults;
034:
035: /**
036: * Provides predefined MicroLayoutPolicy implementations.
037: *
038: * @author Karsten Lentzsch
039: * @version $Revision: 1.3 $
040: *
041: * @see MicroLayout
042: * @see MicroLayouts
043: * @see MicroLayoutPolicy
044: *
045: * @since 2.1
046: */
047: public final class MicroLayoutPolicies {
048:
049: private MicroLayoutPolicies() {
050: // Override default constructor; prevents instantation.
051: }
052:
053: // Getting a MicroLayoutPolicy ********************************************
054:
055: /**
056: * Returns the default MicroLayoutPolicy for the Plastic L&fs.
057: * Uses component insets that are similar to the Windows L&f
058: * micro layout, making it easier to
059: *
060: * @return a Windows-like micro layout policy for the Plastic L&fs
061: */
062: public static MicroLayoutPolicy getDefaultPlasticPolicy() {
063: return new DefaultPlasticPolicy();
064: }
065:
066: /**
067: * Returns the default MicroLayoutPolicy for the Windows L&f.
068: * It aims to describe component insets that follow the native guidelines.
069: *
070: * @return the default micro layout policy for the Windows platform.
071: */
072: public static MicroLayoutPolicy getDefaultWindowsPolicy() {
073: return new DefaultWindowsPolicy();
074: }
075:
076: // MicroLayoutPolicy Implementations **************************************
077:
078: /**
079: * Implements the default font lookup for the Plastic L&f family
080: * when running in a Windows environment.
081: */
082: private static final class DefaultPlasticPolicy implements
083: MicroLayoutPolicy {
084:
085: public MicroLayout getMicroLayout(String lafName,
086: UIDefaults table) {
087: boolean isClassic = !LookUtils.IS_LAF_WINDOWS_XP_ENABLED;
088: boolean isVista = LookUtils.IS_OS_WINDOWS_VISTA;
089: boolean isLowRes = LookUtils.IS_LOW_RESOLUTION;
090: boolean isPlasticXP = lafName.equals("JGoodies Plastic XP");
091: if (isPlasticXP) {
092: if (isVista) {
093: return isClassic ? MicroLayouts
094: .createPlasticXPVistaClassicMicroLayout()
095: : MicroLayouts
096: .createPlasticXPVistaMicroLayout();
097: } else {
098: return isLowRes ? MicroLayouts
099: .createPlasticXPLowResMicroLayout()
100: : MicroLayouts
101: .createPlasticXPHiResMicroLayout();
102: }
103: } else {
104: if (isVista) {
105: return isClassic ? MicroLayouts
106: .createPlasticVistaClassicMicroLayout()
107: : MicroLayouts
108: .createPlasticVistaMicroLayout();
109: } else {
110: return isLowRes ? MicroLayouts
111: .createPlasticLowResMicroLayout()
112: : MicroLayouts
113: .createPlasticHiResMicroLayout();
114: }
115: }
116: }
117:
118: }
119:
120: /**
121: * Implements the default font lookup on the Windows platform.
122: */
123: private static final class DefaultWindowsPolicy implements
124: MicroLayoutPolicy {
125:
126: public MicroLayout getMicroLayout(String lafName,
127: UIDefaults table) {
128: boolean isClassic = !LookUtils.IS_LAF_WINDOWS_XP_ENABLED;
129: boolean isVista = LookUtils.IS_OS_WINDOWS_VISTA;
130: boolean isLowRes = LookUtils.IS_LOW_RESOLUTION;
131: if (isClassic) {
132: return isLowRes ? MicroLayouts
133: .createWindowsClassicLowResMicroLayout()
134: : MicroLayouts
135: .createWindowsClassicHiResMicroLayout();
136: } else if (isVista) {
137: return isLowRes ? MicroLayouts
138: .createWindowsVistaLowResMicroLayout()
139: : MicroLayouts
140: .createWindowsVistaHiResMicroLayout();
141: } else {
142: return isLowRes ? MicroLayouts
143: .createWindowsXPLowResMicroLayout()
144: : MicroLayouts
145: .createWindowsXPHiResMicroLayout();
146: }
147: }
148:
149: }
150:
151: }
|