|
24 | 24 | import javafx.application.Platform; |
25 | 25 | import javafx.beans.value.ChangeListener; |
26 | 26 | import javafx.beans.value.ObservableValue; |
| 27 | +import javafx.concurrent.Worker; |
| 28 | +import javafx.concurrent.Worker.State; |
27 | 29 | import javafx.embed.swing.JFXPanel; |
28 | 30 | import javafx.event.EventHandler; |
29 | 31 | import javafx.scene.Scene; |
|
33 | 35 |
|
34 | 36 | import javax.swing.*; |
35 | 37 |
|
36 | | -import java.awt.*; |
| 38 | +import org.w3c.dom.Document; |
| 39 | +import org.w3c.dom.Element; |
| 40 | +import org.w3c.dom.NodeList; |
| 41 | +import org.w3c.dom.events.Event; |
| 42 | +import org.w3c.dom.events.EventListener; |
| 43 | +import org.w3c.dom.events.EventTarget; |
| 44 | + |
| 45 | +import processing.app.Base; |
| 46 | + |
| 47 | +import java.awt.BorderLayout; |
| 48 | +import java.awt.Dimension; |
| 49 | +import java.awt.EventQueue; |
| 50 | +//import java.awt.*; |
37 | 51 | import java.awt.event.*; |
38 | 52 | import java.io.File; |
39 | 53 | import java.io.IOException; |
@@ -93,9 +107,10 @@ public void actionPerformed(ActionEvent e) { |
93 | 107 |
|
94 | 108 | getContentPane().add(panel); |
95 | 109 |
|
96 | | - setPreferredSize(new Dimension(1024, 600)); |
| 110 | + setPreferredSize(new Dimension(500, 500)); |
97 | 111 | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
98 | 112 | pack(); |
| 113 | + setLocationRelativeTo(null); |
99 | 114 | } |
100 | 115 |
|
101 | 116 |
|
@@ -162,19 +177,51 @@ public void changed(ObservableValue<? extends Throwable> o, Throwable old, final |
162 | 177 | SwingUtilities.invokeLater(new Runnable() { |
163 | 178 | @Override |
164 | 179 | public void run() { |
165 | | - JOptionPane.showMessageDialog( |
166 | | - panel, |
167 | | - (value != null) |
168 | | - ? engine.getLocation() + "\n" + value.getMessage() |
169 | | - : engine.getLocation() + "\nUnexpected error.", |
170 | | - "Loading error...", |
171 | | - JOptionPane.ERROR_MESSAGE); |
| 180 | + JOptionPane.showMessageDialog(panel, |
| 181 | + (value != null) ? |
| 182 | + engine.getLocation() + "\n" + value.getMessage() : |
| 183 | + engine.getLocation() + "\nUnexpected error.", |
| 184 | + "Loading error...", |
| 185 | + JOptionPane.ERROR_MESSAGE); |
172 | 186 | } |
173 | 187 | }); |
174 | 188 | } |
175 | 189 | } |
176 | 190 | }); |
177 | 191 |
|
| 192 | + final String EVENT_TYPE_CLICK = "click"; |
| 193 | + engine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() { |
| 194 | + @Override |
| 195 | + public void changed(ObservableValue ov, State oldState, State newState) { |
| 196 | + if (newState == Worker.State.SUCCEEDED) { |
| 197 | + EventListener listener = new EventListener() { |
| 198 | + @Override |
| 199 | + public void handleEvent(final Event ev) { |
| 200 | + String domEventType = ev.getType(); |
| 201 | + //System.err.println("EventType: " + domEventType); |
| 202 | + if (domEventType.equals(EVENT_TYPE_CLICK)) { |
| 203 | + //System.out.println("href is " + href); |
| 204 | + EventQueue.invokeLater(new Runnable() { |
| 205 | + public void run() { |
| 206 | + String href = ((Element)ev.getTarget()).getAttribute("href"); |
| 207 | + Base.openURL(href); |
| 208 | + } |
| 209 | + }); |
| 210 | + } |
| 211 | + } |
| 212 | + }; |
| 213 | + |
| 214 | + Document doc = engine.getDocument(); |
| 215 | + NodeList nodeList = doc.getElementsByTagName("a"); |
| 216 | + for (int i = 0; i < nodeList.getLength(); i++) { |
| 217 | + ((EventTarget) nodeList.item(i)).addEventListener(EVENT_TYPE_CLICK, listener, false); |
| 218 | + //((EventTarget) nodeList.item(i)).addEventListener(EVENT_TYPE_MOUSEOVER, listener, false); |
| 219 | + //((EventTarget) nodeList.item(i)).addEventListener(EVENT_TYPE_MOUSEOVER, listener, false); |
| 220 | + } |
| 221 | + } |
| 222 | + } |
| 223 | + }); |
| 224 | + |
178 | 225 | jfxPanel.setScene(new Scene(view)); |
179 | 226 | } |
180 | 227 | }); |
@@ -218,6 +265,8 @@ public void run() { |
218 | 265 | Welcome browser = new Welcome(); |
219 | 266 | browser.setVisible(true); |
220 | 267 |
|
| 268 | + Base.initPlatform(); |
| 269 | + |
221 | 270 | try { |
222 | 271 | //System.out.println(System.getProperty("user.dir")); |
223 | 272 | //File indexFile = Base.getLibFile("welcome/index.html"); |
|
0 commit comments