1 /* 2 * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.apple.laf; 27 28 import java.awt.Font; 29 import java.awt.geom.AffineTransform; 30 import java.text.AttributedCharacterIterator.Attribute; 31 import java.util.Map; 32 33 import javax.swing.plaf.*; 34 35 import com.apple.laf.AquaUtils.RecyclableSingleton; 36 37 @SuppressWarnings("serial") // JDK implementation class 38 public class AquaFonts { 39 private static final String MAC_DEFAULT_FONT_NAME = "Lucida Grande"; 40 41 private static final RecyclableSingleton<FontUIResource> lucida9Pt = new RecyclableSingleton<FontUIResource>() { 42 @Override 43 protected FontUIResource getInstance() { 44 return new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.PLAIN, 9); 45 } 46 }; 47 //private static final FontUIResource lucida10Pt = new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.PLAIN, 10); 48 private static final RecyclableSingleton<FontUIResource> lucida11Pt = new RecyclableSingleton<FontUIResource>() { 49 @Override 50 protected FontUIResource getInstance() { 51 return new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.PLAIN, 11); 52 } 53 }; 54 private static final RecyclableSingleton<FontUIResource> lucida12Pt = new RecyclableSingleton<FontUIResource>() { 55 @Override 56 protected FontUIResource getInstance() { 57 return new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.PLAIN, 12); 58 } 59 }; 60 private static final RecyclableSingleton<FontUIResource> lucida13Pt = new RecyclableSingleton<FontUIResource>() { 61 @Override 62 protected FontUIResource getInstance() { 63 return new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.PLAIN, 13); 64 } 65 }; 66 private static final RecyclableSingleton<FontUIResource> lucida14Pt = new RecyclableSingleton<FontUIResource>() { 67 @Override 68 protected FontUIResource getInstance() { 69 return new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.PLAIN, 14); 70 } 71 }; 72 73 private static final RecyclableSingleton<FontUIResource> lucida13PtBold = new RecyclableSingleton<FontUIResource>() { 74 @Override 75 protected FontUIResource getInstance() { 76 return new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.BOLD, 13); 77 } 78 }; 79 private static final RecyclableSingleton<FontUIResource> lucida14PtBold = new RecyclableSingleton<FontUIResource>() { 80 @Override 81 protected FontUIResource getInstance() { 82 return new DerivedUIResourceFont(MAC_DEFAULT_FONT_NAME, Font.BOLD, 14); 83 } 84 }; 85 getMiniControlTextFont()86 protected static FontUIResource getMiniControlTextFont() { 87 return lucida9Pt.get(); 88 } 89 getSmallControlTextFont()90 protected static FontUIResource getSmallControlTextFont() { 91 return lucida11Pt.get(); 92 } 93 getControlTextFont()94 public static FontUIResource getControlTextFont() { 95 return lucida13Pt.get(); 96 } 97 getControlTextSmallFont()98 public static FontUIResource getControlTextSmallFont() { 99 return lucida11Pt.get(); 100 } 101 getMenuFont()102 public static FontUIResource getMenuFont() { 103 return lucida14Pt.get(); 104 } 105 getDockIconFont()106 public static Font getDockIconFont() { 107 return lucida14PtBold.get(); 108 } 109 getAlertHeaderFont()110 public static FontUIResource getAlertHeaderFont() { 111 return lucida13PtBold.get(); 112 } 113 getAlertMessageFont()114 public static FontUIResource getAlertMessageFont() { 115 return lucida11Pt.get(); 116 } 117 getViewFont()118 public static FontUIResource getViewFont() { 119 return lucida12Pt.get(); 120 } 121 122 /** 123 * All fonts derived from this type will also be of this type, and not a plain java.awt.Font 124 */ 125 static class DerivedUIResourceFont extends FontUIResource implements UIResource { DerivedUIResourceFont(final Font font)126 public DerivedUIResourceFont(final Font font) { 127 super(font); 128 } 129 DerivedUIResourceFont(final String name, final int style, final int size)130 public DerivedUIResourceFont(final String name, final int style, final int size) { 131 super(name, style, size); 132 } 133 deriveFont(final AffineTransform trans)134 public Font deriveFont(final AffineTransform trans) { 135 return new DerivedUIResourceFont(super.deriveFont(trans)); 136 } 137 deriveFont(final float derivedSize)138 public Font deriveFont(final float derivedSize) { 139 return new DerivedUIResourceFont(super.deriveFont(derivedSize)); 140 } 141 deriveFont(final int derivedStyle)142 public Font deriveFont(final int derivedStyle) { 143 return new DerivedUIResourceFont(super.deriveFont(derivedStyle)); 144 } 145 deriveFont(final int derivedStyle, final AffineTransform trans)146 public Font deriveFont(final int derivedStyle, final AffineTransform trans) { 147 return new DerivedUIResourceFont(super.deriveFont(derivedStyle, trans)); 148 } 149 deriveFont(final int derivedStyle, final float derivedSize)150 public Font deriveFont(final int derivedStyle, final float derivedSize) { 151 return new DerivedUIResourceFont(super.deriveFont(derivedStyle, derivedSize)); 152 } 153 deriveFont(final Map<? extends Attribute, ?> attributes)154 public Font deriveFont(final Map<? extends Attribute, ?> attributes) { 155 return new DerivedUIResourceFont(super.deriveFont(attributes)); 156 } 157 } 158 } 159