History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/font/FontManagerFactory.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/font/FontManagerFactory.java+102−0
@@ -0,0 +1,102 @@
1+/*
2+ * Copyright (c) 2008, 2010, 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 sun.font;
27+
28+import java.awt.AWTError;
29+import java.awt.Font;
30+import java.awt.GraphicsEnvironment;
31+import java.awt.Toolkit;
32+import java.security.AccessController;
33+import java.security.PrivilegedAction;
34+
35+import sun.security.action.GetPropertyAction;
36+
37+
38+/**
39+ * Factory class used to retrieve a valid FontManager instance for the current
40+ * platform.
41+ *
42+ * A default implementation is given for Linux, Solaris and Windows.
43+ * You can alter the behaviour of the {@link #getInstance()} method by setting
44+ * the {@code sun.font.fontmanager} property. For example:
45+ * {@code sun.font.fontmanager=sun.awt.X11FontManager}
46+ */
47+public final class FontManagerFactory {
48+
49+ /** Our singleton instance. */
50+ private static FontManager instance = null;
51+
52+ private static final String DEFAULT_CLASS;
53+ static {
54+ if (FontUtilities.isWindows)
55+ DEFAULT_CLASS = "sun.awt.Win32FontManager";
56+ else
57+ DEFAULT_CLASS = "sun.awt.X11FontManager";
58+ }
59+
60+ /**
61+ * Get a valid FontManager implementation for the current platform.
62+ *
63+ * @return a valid FontManager instance for the current platform
64+ */
65+ public static synchronized FontManager getInstance() {
66+
67+ if (instance != null) {
68+ return instance;
69+ }
70+
71+ AccessController.doPrivileged(new PrivilegedAction() {
72+
73+ public Object run() {
74+ try {
75+ String fmClassName =
76+ System.getProperty("sun.font.fontmanager",
77+ DEFAULT_CLASS);
78+ ClassLoader cl = ClassLoader.getSystemClassLoader();
79+ Class fmClass = Class.forName(fmClassName, true, cl);
80+ instance = (FontManager) fmClass.newInstance();
81+ } catch (ClassNotFoundException ex) {
82+ InternalError err = new InternalError();
83+ err.initCause(ex);
84+ throw err;
85+
86+ } catch (InstantiationException ex) {
87+ InternalError err = new InternalError();
88+ err.initCause(ex);
89+ throw err;
90+
91+ } catch (IllegalAccessException ex) {
92+ InternalError err = new InternalError();
93+ err.initCause(ex);
94+ throw err;
95+ }
96+ return null;
97+ }
98+ });
99+
100+ return instance;
101+ }
102+}