• R/O
  • SSH

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisãod26e81a1ae8a4cbc4c09bd89652a71ee80feb721 (tree)
Hora2021-06-04 03:27:32
Autorsebastian_bugiu
Commitersebastian_bugiu

Mensagem de Log

Now key event handling is working.

Mudança Sumário

Diff

diff -r a9c476cf088b -r d26e81a1ae8a HotshotEditor/src/com/javafx/experiments/jfx3dviewer/ContentModel.java
--- a/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/ContentModel.java Wed May 26 18:06:47 2021 +0300
+++ b/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/ContentModel.java Thu Jun 03 21:27:32 2021 +0300
@@ -44,13 +44,7 @@
4444 import javafx.beans.property.SimpleObjectProperty;
4545 import javafx.event.EventHandler;
4646 import javafx.geometry.Point3D;
47-import javafx.scene.AmbientLight;
48-import javafx.scene.Group;
49-import javafx.scene.Node;
50-import javafx.scene.Parent;
51-import javafx.scene.PerspectiveCamera;
52-import javafx.scene.PointLight;
53-import javafx.scene.SubScene;
47+import javafx.scene.*;
5448 import javafx.scene.control.Toggle;
5549 import javafx.scene.control.ToggleButton;
5650 import javafx.scene.input.*;
@@ -78,6 +72,11 @@
7872 TRANSLATION, ROTATION, SCALING;
7973 }
8074
75+ private Modifier currentModifier = Modifier.TRANSLATION;
76+ private Node currentIntersectedNode;
77+ private double currentIntersectedNodeDistance;
78+ private Point3D currentIntersectedNodeInitialPos;
79+
8180 private AmbientLight ambientLight = new AmbientLight(Color.DARKGREY);
8281 private SimpleBooleanProperty ambientLightEnabled = new SimpleBooleanProperty(false) {
8382 @Override
@@ -125,183 +124,7 @@
125124 @SuppressWarnings({ "unused" })
126125 private double dragStartX, dragStartY,
127126 dragStartRotateX, dragStartRotateY;
128- private final EventHandler<KeyEvent> keyEventHandler = event -> {
129- /*
130- if (!Double.isNaN(event.getZoomFactor()) && event.getZoomFactor() > 0.8 && event.getZoomFactor() < 1.2) {
131- double z = cameraPosition.getZ()/event.getZoomFactor();
132- z = Math.max(z,-1000);
133- z = Math.min(z,0);
134- cameraPosition.setZ(z);
135- }
136- */
137- System.out.println("KeyEvent ...");
138- Timeline timeline = getTimeline();
139- Duration currentTime;
140- double CONTROL_MULTIPLIER = 0.1;
141- double SHIFT_MULTIPLIER = 0.1;
142- double ALT_MULTIPLIER = 0.5;
143- //System.out.println("--> handleKeyboard>handle");
144-
145- // event.getEventType();
146-
147- switch (event.getCode()) {
148- case F:
149- if (event.isControlDown()) {
150- //onButtonSave();
151- }
152- break;
153- case O:
154- if (event.isControlDown()) {
155- //onButtonLoad();
156- }
157- break;
158- case Z:
159- if (event.isShiftDown()) {
160- cameraXform.ry.setAngle(0.0);
161- cameraXform.rx.setAngle(0.0);
162- camera.setTranslateZ(-300.0);
163- }
164- cameraXform2.t.setX(0.0);
165- cameraXform2.t.setY(0.0);
166- break;
167- /*
168- case SPACE:
169- if (timelinePlaying) {
170- timeline.pause();
171- timelinePlaying = false;
172- }
173- else {
174- timeline.play();
175- timelinePlaying = true;
176- }
177- break;
178- */
179- case UP:
180- if (event.isControlDown()
181- && event.isShiftDown()) {
182- cameraXform2.t.setY(cameraXform2.t.getY()
183- - 10.0
184- * CONTROL_MULTIPLIER);
185- } else if (event.isAltDown()
186- && event.isShiftDown()) {
187- cameraXform.rx.setAngle(cameraXform.rx.getAngle()
188- - 10.0
189- * ALT_MULTIPLIER);
190- } else if (event.isControlDown()) {
191- cameraXform2.t.setY(cameraXform2.t.getY()
192- - 1.0
193- * CONTROL_MULTIPLIER);
194- } else if (event.isAltDown()) {
195- cameraXform.rx.setAngle(cameraXform.rx.getAngle()
196- - 2.0
197- * ALT_MULTIPLIER);
198- } else if (event.isShiftDown()) {
199- double z = camera.getTranslateZ();
200- double newZ = z
201- + 5.0
202- * SHIFT_MULTIPLIER;
203- camera.setTranslateZ(newZ);
204- }
205- break;
206- case DOWN:
207- if (event.isControlDown()
208- && event.isShiftDown()) {
209- cameraXform2.t.setY(cameraXform2.t.getY()
210- + 10.0
211- * CONTROL_MULTIPLIER);
212- } else if (event.isAltDown()
213- && event.isShiftDown()) {
214- cameraXform.rx.setAngle(cameraXform.rx.getAngle()
215- + 10.0
216- * ALT_MULTIPLIER);
217- } else if (event.isControlDown()) {
218- cameraXform2.t.setY(cameraXform2.t.getY()
219- + 1.0
220- * CONTROL_MULTIPLIER);
221- } else if (event.isAltDown()) {
222- cameraXform.rx.setAngle(cameraXform.rx.getAngle()
223- + 2.0
224- * ALT_MULTIPLIER);
225- } else if (event.isShiftDown()) {
226- double z = camera.getTranslateZ();
227- double newZ = z
228- - 5.0
229- * SHIFT_MULTIPLIER;
230- camera.setTranslateZ(newZ);
231- }
232- break;
233- case RIGHT:
234- if (event.isControlDown()
235- && event.isShiftDown()) {
236- cameraXform2.t.setX(cameraXform2.t.getX()
237- + 10.0
238- * CONTROL_MULTIPLIER);
239- } else if (event.isAltDown()
240- && event.isShiftDown()) {
241- cameraXform.ry.setAngle(cameraXform.ry.getAngle()
242- - 10.0
243- * ALT_MULTIPLIER);
244- } else if (event.isControlDown()) {
245- cameraXform2.t.setX(cameraXform2.t.getX()
246- + 1.0
247- * CONTROL_MULTIPLIER);
248- } else if (event.isShiftDown()) {
249- currentTime = timeline.getCurrentTime();
250- timeline.jumpTo(Frame.frame(Math.round(Frame.toFrame(currentTime)
251- / 10.0)
252- * 10
253- + 10));
254- // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() + ONE_FRAME));
255- } else if (event.isAltDown()) {
256- cameraXform.ry.setAngle(cameraXform.ry.getAngle()
257- - 2.0
258- * ALT_MULTIPLIER);
259- } else {
260- currentTime = timeline.getCurrentTime();
261- timeline.jumpTo(Frame.frame(Frame.toFrame(currentTime)
262- + 1));
263- // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() + ONE_FRAME));
264- }
265- break;
266- case LEFT:
267- if (event.isControlDown()
268- && event.isShiftDown()) {
269- cameraXform2.t.setX(cameraXform2.t.getX()
270- - 10.0
271- * CONTROL_MULTIPLIER);
272- } else if (event.isAltDown()
273- && event.isShiftDown()) {
274- cameraXform.ry.setAngle(cameraXform.ry.getAngle()
275- + 10.0
276- * ALT_MULTIPLIER); // -
277- } else if (event.isControlDown()) {
278- cameraXform2.t.setX(cameraXform2.t.getX()
279- - 1.0
280- * CONTROL_MULTIPLIER);
281- } else if (event.isShiftDown()) {
282- currentTime = timeline.getCurrentTime();
283- timeline.jumpTo(Frame.frame(Math.round(Frame.toFrame(currentTime)
284- / 10.0)
285- * 10
286- - 10));
287- // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() - ONE_FRAME));
288- } else if (event.isAltDown()) {
289- cameraXform.ry.setAngle(cameraXform.ry.getAngle()
290- + 2.0
291- * ALT_MULTIPLIER); // -
292- } else {
293- currentTime = timeline.getCurrentTime();
294- timeline.jumpTo(Frame.frame(Frame.toFrame(currentTime)
295- - 1));
296- // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() - ONE_FRAME));
297- }
298- break;
299- default:
300- break;
301- }
302- //System.out.println(cameraXform.getTranslateX() + ", " + cameraXform.getTranslateY() + ", " + cameraXform.getTranslateZ());
303-
304- };
127+ private EventHandler<KeyEvent> keyEventHandler;
305128 private PointLight light1 = new PointLight(Color.WHITE);
306129 private SimpleBooleanProperty light1Enabled = new SimpleBooleanProperty(false) {
307130 @Override
@@ -450,18 +273,15 @@
450273 cameraPosition.setZ(z);
451274 }
452275 };
453- private Modifier currentModifier = Modifier.TRANSLATION;
454- private Node currentIntersectedNode;
455- private double currentIntersectedNodeDistance;
456- private Point3D currentIntersectedNodeInitialPos;
276+
457277
458278
459279 private HashMap<Node, NodeData> nodeMap = new HashMap<>();
460280
461281 {
462282 contentProperty().addListener((ov, oldContent, newContent) -> {
463- autoScalingGroup.getChildren()
464- .remove(oldContent);
283+// autoScalingGroup.getChildren()
284+// .remove(oldContent);
465285 autoScalingGroup.getChildren()
466286 .add(newContent);
467287 setWireFrame(newContent, wireframe);
@@ -472,6 +292,181 @@
472292 });
473293 }
474294 {
295+ keyEventHandler = event -> {
296+ System.out.println("KeyEvent ...");
297+ Timeline timeline = getTimeline();
298+ Duration currentTime;
299+ double CONTROL_MULTIPLIER = 0.1;
300+ double SHIFT_MULTIPLIER = 0.1;
301+ double ALT_MULTIPLIER = 0.5;
302+ //System.out.println("--> handleKeyboard>handle");
303+
304+ // event.getEventType();
305+
306+ switch (event.getCode()) {
307+ case F:
308+ if (event.isControlDown()) {
309+ //onButtonSave();
310+ }
311+ break;
312+ case O:
313+ if (event.isControlDown()) {
314+ //onButtonLoad();
315+ }
316+ break;
317+ case Z:
318+ if (event.isShiftDown()) {
319+ cameraXform.ry.setAngle(0.0);
320+ cameraXform.rx.setAngle(0.0);
321+ camera.setTranslateZ(-300.0);
322+ }
323+ cameraXform2.t.setX(0.0);
324+ cameraXform2.t.setY(0.0);
325+ break;
326+ /*
327+ case SPACE:
328+ if (timelinePlaying) {
329+ timeline.pause();
330+ timelinePlaying = false;
331+ }
332+ else {
333+ timeline.play();
334+ timelinePlaying = true;
335+ }
336+ break;
337+ */
338+ case UP:
339+ if (event.isControlDown()
340+ && event.isShiftDown()) {
341+ cameraXform2.t.setY(cameraXform2.t.getY()
342+ - 10.0
343+ * CONTROL_MULTIPLIER);
344+ } else if (event.isAltDown()
345+ && event.isShiftDown()) {
346+ cameraXform.rx.setAngle(cameraXform.rx.getAngle()
347+ - 10.0
348+ * ALT_MULTIPLIER);
349+ } else if (event.isControlDown()) {
350+ cameraXform2.t.setY(cameraXform2.t.getY()
351+ - 1.0
352+ * CONTROL_MULTIPLIER);
353+ } else if (event.isAltDown()) {
354+ cameraXform.rx.setAngle(cameraXform.rx.getAngle()
355+ - 2.0
356+ * ALT_MULTIPLIER);
357+ } else if (event.isShiftDown()) {
358+ double z = camera.getTranslateZ();
359+ double newZ = z
360+ + 5.0
361+ * SHIFT_MULTIPLIER;
362+ camera.setTranslateZ(newZ);
363+ }
364+ break;
365+ case DOWN:
366+ if (event.isControlDown()
367+ && event.isShiftDown()) {
368+ cameraXform2.t.setY(cameraXform2.t.getY()
369+ + 10.0
370+ * CONTROL_MULTIPLIER);
371+ } else if (event.isAltDown()
372+ && event.isShiftDown()) {
373+ cameraXform.rx.setAngle(cameraXform.rx.getAngle()
374+ + 10.0
375+ * ALT_MULTIPLIER);
376+ } else if (event.isControlDown()) {
377+ cameraXform2.t.setY(cameraXform2.t.getY()
378+ + 1.0
379+ * CONTROL_MULTIPLIER);
380+ } else if (event.isAltDown()) {
381+ cameraXform.rx.setAngle(cameraXform.rx.getAngle()
382+ + 2.0
383+ * ALT_MULTIPLIER);
384+ } else if (event.isShiftDown()) {
385+ double z = camera.getTranslateZ();
386+ double newZ = z
387+ - 5.0
388+ * SHIFT_MULTIPLIER;
389+ camera.setTranslateZ(newZ);
390+ }
391+ break;
392+ case RIGHT:
393+ if (event.isControlDown()
394+ && event.isShiftDown()) {
395+ cameraXform2.t.setX(cameraXform2.t.getX()
396+ + 10.0
397+ * CONTROL_MULTIPLIER);
398+ } else if (event.isAltDown()
399+ && event.isShiftDown()) {
400+ cameraXform.ry.setAngle(cameraXform.ry.getAngle()
401+ - 10.0
402+ * ALT_MULTIPLIER);
403+ } else if (event.isControlDown()) {
404+ cameraXform2.t.setX(cameraXform2.t.getX()
405+ + 1.0
406+ * CONTROL_MULTIPLIER);
407+ } else if (event.isShiftDown()) {
408+ currentTime = timeline.getCurrentTime();
409+ timeline.jumpTo(Frame.frame(Math.round(Frame.toFrame(currentTime)
410+ / 10.0)
411+ * 10
412+ + 10));
413+ // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() + ONE_FRAME));
414+ } else if (event.isAltDown()) {
415+ cameraXform.ry.setAngle(cameraXform.ry.getAngle()
416+ - 2.0
417+ * ALT_MULTIPLIER);
418+ } else {
419+ currentTime = timeline.getCurrentTime();
420+ timeline.jumpTo(Frame.frame(Frame.toFrame(currentTime)
421+ + 1));
422+ // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() + ONE_FRAME));
423+ }
424+ break;
425+ case LEFT:
426+ if (event.isControlDown()
427+ && event.isShiftDown()) {
428+ cameraXform2.t.setX(cameraXform2.t.getX()
429+ - 10.0
430+ * CONTROL_MULTIPLIER);
431+ } else if (event.isAltDown()
432+ && event.isShiftDown()) {
433+ cameraXform.ry.setAngle(cameraXform.ry.getAngle()
434+ + 10.0
435+ * ALT_MULTIPLIER); // -
436+ } else if (event.isControlDown()) {
437+ cameraXform2.t.setX(cameraXform2.t.getX()
438+ - 1.0
439+ * CONTROL_MULTIPLIER);
440+ } else if (event.isShiftDown()) {
441+ currentTime = timeline.getCurrentTime();
442+ timeline.jumpTo(Frame.frame(Math.round(Frame.toFrame(currentTime)
443+ / 10.0)
444+ * 10
445+ - 10));
446+ // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() - ONE_FRAME));
447+ } else if (event.isAltDown()) {
448+ cameraXform.ry.setAngle(cameraXform.ry.getAngle()
449+ + 2.0
450+ * ALT_MULTIPLIER); // -
451+ } else {
452+ currentTime = timeline.getCurrentTime();
453+ timeline.jumpTo(Frame.frame(Frame.toFrame(currentTime)
454+ - 1));
455+ // timeline.jumpTo(Duration.seconds(currentTime.toSeconds() - ONE_FRAME));
456+ }
457+ break;
458+ case D:
459+ if (currentIntersectedNode != null) {
460+ autoScalingGroup.getChildren().remove(currentIntersectedNode);
461+ resetCurrentIntersectedNode();
462+ }
463+ break;
464+ default:
465+ break;
466+ }
467+ //System.out.println(cameraXform.getTranslateX() + ", " + cameraXform.getTranslateY() + ", " + cameraXform.getTranslateZ());
468+
469+ };
475470 mouseEventHandler = event -> {
476471 // System.out.println("MouseEvent ...");
477472
@@ -496,9 +491,7 @@
496491
497492 PickResult pickResult = event.getPickResult();
498493 if (pickResult.getIntersectedNode() instanceof SubScene) {
499- currentIntersectedNode = null;
500- currentIntersectedNodeDistance = -1.0;
501- currentIntersectedNodeInitialPos = null;
494+ resetCurrentIntersectedNode();
502495 } else {
503496 currentIntersectedNode = pickResult.getIntersectedNode();
504497 if (currentIntersectedNode.getTransforms().size() == 0) {
@@ -623,6 +616,12 @@
623616 };
624617 }
625618
619+ private void resetCurrentIntersectedNode() {
620+ currentIntersectedNode = null;
621+ currentIntersectedNodeDistance = -1.0;
622+ currentIntersectedNodeInitialPos = null;
623+ }
624+
626625 public ContentModel() {
627626 // CAMERA
628627 camera.setNearClip(1.0); // TODO: Workaround as per RT-31255
@@ -921,7 +920,7 @@
921920 zAxis.setMaterial(blueMaterial);
922921 }
923922
924- private void rebuildSubScene() {
923+ public void rebuildSubScene() {
925924 SubScene oldSubScene = this.subScene.get();
926925 if (oldSubScene != null) {
927926 oldSubScene.setRoot(new Region());
@@ -939,13 +938,19 @@
939938 subScene.setCamera(camera);
940939 // SCENE EVENT HANDLING FOR CAMERA NAV
941940 subScene.addEventHandler(MouseEvent.ANY, mouseEventHandler);
941+// subScene.setOnKeyPressed(keyEventHandler);
942942 subScene.addEventHandler(KeyEvent.ANY, keyEventHandler);
943- // subScene.addEventFilter(KeyEvent.ANY, keyEventHandler);
943+// subScene.addEventFilter(KeyEvent.ANY, keyEventHandler);
944944 subScene.addEventHandler(ZoomEvent.ANY, zoomEventHandler);
945945 subScene.addEventHandler(ScrollEvent.ANY, scrollEventHandler);
946+ root3D.addEventHandler(KeyEvent.ANY, keyEventHandler);
947+ root3D.setFocusTraversable(true);
946948
947- // Scene scene = subScene.getScene();
948- // scene.addEventFilter(KeyEvent.ANY, keyEventHandler);
949+ subScene.setOnKeyPressed(event -> System.out.println("subScene keyPressed"));
950+ root3D.setOnKeyPressed(event -> System.out.println("root3d key pressed"));
951+
952+// Scene scene = subScene.getScene();
953+// scene.addEventHandler(KeyEvent.ANY, keyEventHandler);
949954
950955 /*
951956 subScene.sceneProperty().addListener(new ChangeListener() {
diff -r a9c476cf088b -r d26e81a1ae8a HotshotEditor/src/com/javafx/experiments/jfx3dviewer/Jfx3dViewerApp.java
--- a/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/Jfx3dViewerApp.java Wed May 26 18:06:47 2021 +0300
+++ b/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/Jfx3dViewerApp.java Thu Jun 03 21:27:32 2021 +0300
@@ -74,11 +74,16 @@
7474 }
7575 FXMLLoader loader = new FXMLLoader();
7676 loader.setLocation(getClass().getResource("/resources/com/javafx/experiments/jfx3dviewer/main.fxml"));
77- Scene scene = new Scene(loader.<Parent> load(),
77+ Parent parent = loader.<Parent>load();
78+ MainController controller = loader.getController();
79+ controller.setParent(parent);
80+ Scene scene = new Scene(parent,
7881 1024, 600);
7982 stage.setScene(scene);
8083 stage.show();
8184
85+ controller.setFocusOnSplitPane();
86+
8287 stage.setOnCloseRequest(event -> sessionManager.saveSession());
8388
8489 // org.scenicview.ScenicView.show(contentModel.getSubScene().getRoot());
diff -r a9c476cf088b -r d26e81a1ae8a HotshotEditor/src/com/javafx/experiments/jfx3dviewer/MainController.java
--- a/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/MainController.java Wed May 26 18:06:47 2021 +0300
+++ b/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/MainController.java Thu Jun 03 21:27:32 2021 +0300
@@ -64,6 +64,7 @@
6464 import javafx.scene.control.SplitPane;
6565 import javafx.scene.control.ToggleButton;
6666 import javafx.scene.input.Dragboard;
67+import javafx.scene.input.KeyEvent;
6768 import javafx.scene.input.TransferMode;
6869 import javafx.scene.layout.Region;
6970 import javafx.scene.shape.Box;
@@ -101,6 +102,8 @@
101102 private String[] supportedFormatRegex;
102103 private TimelineController timelineController;
103104 private int triangleCount = 0;
105+ private Parent parent;
106+ private Parent navigationPanel;
104107
105108 public void export(ActionEvent event) {
106109 FileChooser chooser = new FileChooser();
@@ -148,7 +151,7 @@
148151 public void initialize(URL location, ResourceBundle resources) {
149152 try {
150153 // CREATE NAVIGATOR CONTROLS
151- Parent navigationPanel = FXMLLoader.load(MainController.class.getResource("/resources/com/javafx/experiments/jfx3dviewer/navigation.fxml"));
154+ navigationPanel = FXMLLoader.load(MainController.class.getResource("/resources/com/javafx/experiments/jfx3dviewer/navigation.fxml"));
152155 // CREATE SETTINGS PANEL
153156 settingsPanel = FXMLLoader.load(MainController.class.getResource("/resources/com/javafx/experiments/jfx3dviewer/settings.fxml"));
154157 // SETUP SPLIT PANE
@@ -359,4 +362,20 @@
359362 bounds.getWidth(), bounds.getHeight(),
360363 bounds.getDepth()));
361364 }
365+
366+ public void setParent(Parent parent) {
367+ this.parent = parent;
368+ }
369+
370+ public Parent getParent() {
371+ return parent;
372+ }
373+
374+ public void setFocusOnSplitPane() {
375+ splitPane.requestFocus();
376+ contentModel.rebuildSubScene();
377+// navigationPanel.requestFocus();
378+// navigationPanel.setOnKeyPressed(event -> System.out.println("navigationPanel key pressed"));
379+ contentModel.getSubScene().requestFocus();
380+ }
362381 }
diff -r a9c476cf088b -r d26e81a1ae8a HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/main.fxml
--- a/HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/main.fxml Wed May 26 18:06:47 2021 +0300
+++ b/HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/main.fxml Thu Jun 03 21:27:32 2021 +0300
@@ -42,18 +42,18 @@
4242 <?import javafx.scene.paint.*?>
4343 <?import com.javafx.experiments.jfx3dviewer.*?>
4444
45-<VBox id="root" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml" fx:controller="com.javafx.experiments.jfx3dviewer.MainController">
45+<VBox id="root" focusTraversable="true" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/16" fx:controller="com.javafx.experiments.jfx3dviewer.MainController">
4646 <ToolBar>
4747 <items>
4848 <SplitMenuButton fx:id="openMenuBtn" mnemonicParsing="false" onAction="#open" text="Open...">
4949 <items>
50- <CheckMenuItem mnemonicParsing="false" text="Load as Polygons" fx:id="loadAsPolygonsCheckBox" />
51- <CheckMenuItem mnemonicParsing="false" text="Optimize" fx:id="optimizeCheckBox" />
50+ <CheckMenuItem fx:id="loadAsPolygonsCheckBox" mnemonicParsing="false" text="Load as Polygons" />
51+ <CheckMenuItem fx:id="optimizeCheckBox" mnemonicParsing="false" text="Optimize" />
5252 </items>
5353 </SplitMenuButton>
5454 <Button mnemonicParsing="false" onAction="#export" text="Export..." />
5555 <!--HBox.hgrow="ALWAYS"-->
56- <Pane maxWidth="1.7976931348623157E308" prefHeight="-1.0" prefWidth="-1.0" HBox.hgrow="ALWAYS"/>
56+ <Pane maxWidth="1.7976931348623157E308" prefHeight="-1.0" prefWidth="-1.0" HBox.hgrow="ALWAYS" />
5757 <TimelineDisplay fx:id="timelineDisplay" />
5858 <HBox id="playControls" prefHeight="-1.0" prefWidth="-1.0">
5959 <children>
@@ -95,7 +95,7 @@
9595 <ToggleButton fx:id="settingsBtn" mnemonicParsing="false" onAction="#toggleSettings" text="Settings" />
9696 </items>
9797 </ToolBar>
98- <SplitPane fx:id="splitPane" dividerPositions="" focusTraversable="true" prefHeight="160.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
98+ <SplitPane fx:id="splitPane" focusTraversable="true" prefHeight="160.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
9999 <ToolBar id="statusBar" styleClass="bottom">
100100 <items>
101101 <Label fx:id="status" text="Label" />