71 import java.util.concurrent.CountDownLatch;
72 import java.util.concurrent.Future;
73 import com.sun.glass.ui.CommonDialogs.FileChooserResult;
74 import com.sun.glass.utils.NativeLibLoader;
75 import com.sun.javafx.PlatformUtil;
76 import com.sun.javafx.beans.event.AbstractNotifyListener;
77 import com.sun.javafx.embed.HostInterface;
78 import com.sun.javafx.geom.Path2D;
79 import com.sun.javafx.geom.transform.BaseTransform;
80 import com.sun.javafx.jmx.HighlightRegion;
81 import com.sun.javafx.perf.PerformanceTracker;
82 import com.sun.javafx.runtime.VersionInfo;
83 import com.sun.javafx.runtime.async.AsyncOperation;
84 import com.sun.javafx.runtime.async.AsyncOperationListener;
85 import com.sun.javafx.scene.SceneHelper;
86 import com.sun.javafx.scene.text.HitInfo;
87 import com.sun.javafx.scene.text.TextLayoutFactory;
88 import com.sun.javafx.sg.prism.NGCamera;
89 import com.sun.javafx.sg.prism.NGLightBase;
90 import com.sun.javafx.sg.prism.NGNode;
91 import com.sun.javafx.util.ModuleHelper;
92 import com.sun.scenario.DelayedRunnable;
93 import com.sun.scenario.animation.AbstractMasterTimer;
94 import com.sun.scenario.effect.AbstractShadow.ShadowMode;
95 import com.sun.scenario.effect.Color4f;
96 import com.sun.scenario.effect.FilterContext;
97 import com.sun.scenario.effect.Filterable;
98
99
100 public abstract class Toolkit {
101 private static String tk;
102 private static Toolkit TOOLKIT;
103 private static Thread fxUserThread = null;
104
105 private static final String QUANTUM_TOOLKIT = "com.sun.javafx.tk.quantum.QuantumToolkit";
106 private static final String DEFAULT_TOOLKIT = QUANTUM_TOOLKIT;
107
108 private static final Map gradientMap = new WeakHashMap();
109
110 private static String lookupToolkitClass(String name) {
111 if ("prism".equalsIgnoreCase(name)) {
195 || (userSpecifiedToolkit && !forcedToolkit.endsWith("StubToolkit"));
196
197 try {
198 Class clz = null;
199
200 try {
201 // try our priveledged loader first
202 final ClassLoader loader = Toolkit.class.getClassLoader();
203 clz = Class.forName(forcedToolkit, false, loader);
204 } catch (ClassNotFoundException e) {
205 // fall back and try the application class loader
206 final ClassLoader loader = Thread.currentThread().getContextClassLoader();
207 clz = Class.forName(forcedToolkit, false, loader);
208 }
209
210 // Check that clz is a subclass of Toolkit
211 if (!Toolkit.class.isAssignableFrom(clz)) {
212 throw new IllegalArgumentException("Unrecognized FX Toolkit class: "
213 + forcedToolkit);
214 }
215
216 Object thisModule = ModuleHelper.getModule(Toolkit.class);
217 ModuleHelper.addReads(thisModule, ModuleHelper.getModule(clz));
218
219 TOOLKIT = (Toolkit)clz.newInstance();
220 if (TOOLKIT.init()) {
221 if (printToolkit) {
222 System.err.println("JavaFX: using " + forcedToolkit);
223 }
224 return TOOLKIT;
225 }
226 TOOLKIT = null;
227 } catch (Exception any) {
228 TOOLKIT = null;
229 any.printStackTrace();
230 }
231
232 throw new RuntimeException("No toolkit found");
233 }
234
235 protected static Thread getFxUserThread() {
236 return fxUserThread;
237 }
|
71 import java.util.concurrent.CountDownLatch;
72 import java.util.concurrent.Future;
73 import com.sun.glass.ui.CommonDialogs.FileChooserResult;
74 import com.sun.glass.utils.NativeLibLoader;
75 import com.sun.javafx.PlatformUtil;
76 import com.sun.javafx.beans.event.AbstractNotifyListener;
77 import com.sun.javafx.embed.HostInterface;
78 import com.sun.javafx.geom.Path2D;
79 import com.sun.javafx.geom.transform.BaseTransform;
80 import com.sun.javafx.jmx.HighlightRegion;
81 import com.sun.javafx.perf.PerformanceTracker;
82 import com.sun.javafx.runtime.VersionInfo;
83 import com.sun.javafx.runtime.async.AsyncOperation;
84 import com.sun.javafx.runtime.async.AsyncOperationListener;
85 import com.sun.javafx.scene.SceneHelper;
86 import com.sun.javafx.scene.text.HitInfo;
87 import com.sun.javafx.scene.text.TextLayoutFactory;
88 import com.sun.javafx.sg.prism.NGCamera;
89 import com.sun.javafx.sg.prism.NGLightBase;
90 import com.sun.javafx.sg.prism.NGNode;
91 import com.sun.scenario.DelayedRunnable;
92 import com.sun.scenario.animation.AbstractMasterTimer;
93 import com.sun.scenario.effect.AbstractShadow.ShadowMode;
94 import com.sun.scenario.effect.Color4f;
95 import com.sun.scenario.effect.FilterContext;
96 import com.sun.scenario.effect.Filterable;
97
98
99 public abstract class Toolkit {
100 private static String tk;
101 private static Toolkit TOOLKIT;
102 private static Thread fxUserThread = null;
103
104 private static final String QUANTUM_TOOLKIT = "com.sun.javafx.tk.quantum.QuantumToolkit";
105 private static final String DEFAULT_TOOLKIT = QUANTUM_TOOLKIT;
106
107 private static final Map gradientMap = new WeakHashMap();
108
109 private static String lookupToolkitClass(String name) {
110 if ("prism".equalsIgnoreCase(name)) {
194 || (userSpecifiedToolkit && !forcedToolkit.endsWith("StubToolkit"));
195
196 try {
197 Class clz = null;
198
199 try {
200 // try our priveledged loader first
201 final ClassLoader loader = Toolkit.class.getClassLoader();
202 clz = Class.forName(forcedToolkit, false, loader);
203 } catch (ClassNotFoundException e) {
204 // fall back and try the application class loader
205 final ClassLoader loader = Thread.currentThread().getContextClassLoader();
206 clz = Class.forName(forcedToolkit, false, loader);
207 }
208
209 // Check that clz is a subclass of Toolkit
210 if (!Toolkit.class.isAssignableFrom(clz)) {
211 throw new IllegalArgumentException("Unrecognized FX Toolkit class: "
212 + forcedToolkit);
213 }
214
215 TOOLKIT = (Toolkit)clz.newInstance();
216 if (TOOLKIT.init()) {
217 if (printToolkit) {
218 System.err.println("JavaFX: using " + forcedToolkit);
219 }
220 return TOOLKIT;
221 }
222 TOOLKIT = null;
223 } catch (Exception any) {
224 TOOLKIT = null;
225 any.printStackTrace();
226 }
227
228 throw new RuntimeException("No toolkit found");
229 }
230
231 protected static Thread getFxUserThread() {
232 return fxUserThread;
233 }
|