1 | package org.expeditee.reflection;
|
---|
2 |
|
---|
3 | import java.io.File;
|
---|
4 | import java.lang.reflect.Constructor;
|
---|
5 | import java.lang.reflect.Method;
|
---|
6 | import java.net.URL;
|
---|
7 | import java.net.URLClassLoader;
|
---|
8 | import java.util.Arrays;
|
---|
9 | import java.util.List;
|
---|
10 |
|
---|
11 | public class JavaFX {
|
---|
12 | public static Class JFXPanel;
|
---|
13 |
|
---|
14 | public static Class Platform;
|
---|
15 | public static Method PlatformRunLater;
|
---|
16 |
|
---|
17 | public static Class Group;
|
---|
18 | public static Method GroupGetChildren;
|
---|
19 |
|
---|
20 | public static Class Scene;
|
---|
21 | public static Constructor SceneConstructor;
|
---|
22 |
|
---|
23 | public static Class WebView;
|
---|
24 | public static Method JFXPanelSetScene;
|
---|
25 | public static Method WebViewSetPrefSize;
|
---|
26 | public static Method WebViewGetEngine;
|
---|
27 | public static Method WebViewSetContextMenuEnabled;
|
---|
28 |
|
---|
29 | public static Class WebEngine;
|
---|
30 | public static Method WebEngineLoad;
|
---|
31 | public static Method WebEngineGetLocation;
|
---|
32 | public static Method WebEngineGetLoadWorker;
|
---|
33 | public static Method WebEngineGetHistory;
|
---|
34 | public static Method WebEngineReload;
|
---|
35 | public static Method WebEngineExecuteScript;
|
---|
36 |
|
---|
37 | public static Class WebHistory;
|
---|
38 | public static Method WebHistoryGo;
|
---|
39 |
|
---|
40 | public static Class Worker;
|
---|
41 | public static Method WorkerStateProperty;
|
---|
42 |
|
---|
43 | public static Class ReadOnlyObjectProperty;
|
---|
44 | public static Method ReadOnlyObjectPropertyAddListener;
|
---|
45 |
|
---|
46 | public static Class ChangeListener;
|
---|
47 |
|
---|
48 | public static Class ObservableValue;
|
---|
49 |
|
---|
50 | public static Class State;
|
---|
51 | public static List<Object> StateConstants;
|
---|
52 |
|
---|
53 | public static Class EventHandler;
|
---|
54 |
|
---|
55 | public static Class Node;
|
---|
56 | public static Method NodeSetOnMouseClicked;
|
---|
57 |
|
---|
58 | public static Class MouseEvent;
|
---|
59 | public static Method MouseEventGetButton;
|
---|
60 |
|
---|
61 | public static Class MouseButton;
|
---|
62 |
|
---|
63 | public static Class JSObject;
|
---|
64 | public static Method JSObjectEval;
|
---|
65 | public static Method JSObjectCall;
|
---|
66 | public static Method JSObjectGetMember;
|
---|
67 | public static Method JSObjectGetSlot;
|
---|
68 |
|
---|
69 | static {
|
---|
70 | String javaLibDir = System.getProperty("java.home") + File.separator + "lib" + File.separator;
|
---|
71 | try {
|
---|
72 | ClassLoader classLoader = ClassLoader.getSystemClassLoader();
|
---|
73 |
|
---|
74 | File jar = new File(javaLibDir + "jfxrt.jar");
|
---|
75 |
|
---|
76 | Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
|
---|
77 | addURL.setAccessible(true);
|
---|
78 | addURL.invoke(classLoader, jar.toURI().toURL());
|
---|
79 |
|
---|
80 | JFXPanel = Class.forName("javafx.embed.swing.JFXPanel", false, classLoader);
|
---|
81 |
|
---|
82 | Platform = classLoader.loadClass("javafx.application.Platform");
|
---|
83 | PlatformRunLater = Platform.getMethod("runLater", Runnable.class);
|
---|
84 |
|
---|
85 | // Setting JFX to not exit when all panels are hidden, otherwise moving, resizing and changing frames will
|
---|
86 | // cause JFX to exit, preventing JFX elements from displaying at all
|
---|
87 | Platform.getMethod("setImplicitExit", boolean.class).invoke(null, false);
|
---|
88 |
|
---|
89 | Group = classLoader.loadClass("javafx.scene.Group");
|
---|
90 | GroupGetChildren = Group.getMethod("getChildren");
|
---|
91 |
|
---|
92 | Scene = classLoader.loadClass("javafx.scene.Scene");
|
---|
93 | SceneConstructor = Scene.getConstructor(classLoader.loadClass("javafx.scene.Parent"));
|
---|
94 |
|
---|
95 | WebView = classLoader.loadClass("javafx.scene.web.WebView");
|
---|
96 | JFXPanelSetScene = JFXPanel.getMethod("setScene", Scene);
|
---|
97 | WebViewSetPrefSize = WebView.getMethod("setPrefSize", double.class, double.class);
|
---|
98 | WebViewGetEngine = WebView.getMethod("getEngine");
|
---|
99 | WebViewSetContextMenuEnabled = WebView.getMethod("setContextMenuEnabled", boolean.class);
|
---|
100 |
|
---|
101 | WebEngine = classLoader.loadClass("javafx.scene.web.WebEngine");
|
---|
102 | WebEngineLoad = WebEngine.getMethod("load", String.class);
|
---|
103 | WebEngineGetLocation = WebEngine.getMethod("getLocation");
|
---|
104 | WebEngineGetLoadWorker = WebEngine.getMethod("getLoadWorker");
|
---|
105 | WebEngineGetHistory = WebEngine.getMethod("getHistory");
|
---|
106 | WebEngineReload = WebEngine.getMethod("reload");
|
---|
107 | WebEngineExecuteScript = WebEngine.getMethod("executeScript", String.class);
|
---|
108 |
|
---|
109 | WebHistory = classLoader.loadClass("javafx.scene.web.WebHistory");
|
---|
110 | WebHistoryGo = WebHistory.getMethod("go", int.class);
|
---|
111 |
|
---|
112 | Worker = classLoader.loadClass("javafx.concurrent.Worker");
|
---|
113 | WorkerStateProperty = Worker.getMethod("stateProperty");
|
---|
114 |
|
---|
115 | ChangeListener = classLoader.loadClass("javafx.beans.value.ChangeListener");
|
---|
116 |
|
---|
117 | ReadOnlyObjectProperty = classLoader.loadClass("javafx.beans.property.ReadOnlyObjectProperty");
|
---|
118 | ReadOnlyObjectPropertyAddListener = ReadOnlyObjectProperty.getMethod("addListener", ChangeListener);
|
---|
119 |
|
---|
120 | ObservableValue = classLoader.loadClass("javafx.beans.value.ObservableValue");
|
---|
121 |
|
---|
122 | State = classLoader.loadClass("javafx.concurrent.Worker$State");
|
---|
123 | StateConstants = Arrays.asList(State.getEnumConstants());
|
---|
124 |
|
---|
125 | EventHandler = classLoader.loadClass("javafx.event.EventHandler");
|
---|
126 |
|
---|
127 | Node = classLoader.loadClass("javafx.scene.Node");
|
---|
128 | NodeSetOnMouseClicked = Node.getMethod("setOnMouseClicked", EventHandler);
|
---|
129 |
|
---|
130 | MouseEvent = classLoader.loadClass("javafx.scene.input.MouseEvent");
|
---|
131 | MouseEventGetButton = MouseEvent.getMethod("getButton");
|
---|
132 |
|
---|
133 | MouseButton = classLoader.loadClass("javafx.scene.input.MouseButton");
|
---|
134 |
|
---|
135 | JSObject = classLoader.loadClass("netscape.javascript.JSObject");
|
---|
136 | JSObjectEval = JSObject.getMethod("eval", String.class);
|
---|
137 | JSObjectCall = JSObject.getMethod("call", String.class, Object[].class);
|
---|
138 | JSObjectGetMember = JSObject.getMethod("getMember", String.class);
|
---|
139 | JSObjectGetSlot = JSObject.getMethod("getSlot", int.class);
|
---|
140 |
|
---|
141 | } catch (Exception e) {
|
---|
142 | e.printStackTrace();
|
---|
143 | }
|
---|
144 | }
|
---|
145 | }
|
---|