Skip to content

Commit 0401ace

Browse files
committed
Stop using events for label re-rerendering
That usage was based on a misunderstanding of JavaFX events; they are meant for handling user UI interactions, and the label updating action does not require any action-at-a-distance, event bubbling, or UI interaction checking, so it's simpler to just call the geometry manager method directly.
1 parent 2d5acdc commit 0401ace

4 files changed

Lines changed: 13 additions & 80 deletions

File tree

src/main/java/edu/umich/soar/svsviewer/SVSViewerEvent.java

Lines changed: 0 additions & 59 deletions
This file was deleted.

src/main/java/edu/umich/soar/svsviewer/SceneController.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void initialize() {
8989
viewerScene.setCamera(camera);
9090

9191
for (Transform t : List.of(cameraYaw, cameraPitch, cameraRoll, cameraTranslation)) {
92-
t.setOnTransformChanged(value -> requestSceneRerender());
92+
t.setOnTransformChanged(value -> geometryManager.requestSceneRerender());
9393
}
9494

9595
// Handle keyboard events
@@ -176,8 +176,6 @@ public void initialize() {
176176

177177
this.geometryManager =
178178
new GeometryManager(preferences, rootPane, shapeGroup, this::showMessage);
179-
viewerScene.addEventFilter(
180-
SVSViewerEvent.SCENE_RERENDER_REQUESTED, e -> geometryManager.updateLabelPositions());
181179

182180
Consumer<String> inputProcessor =
183181
(String line) -> {
@@ -220,15 +218,7 @@ public void initialize() {
220218
}
221219

222220
private void rerenderSceneOnChange(ObservableValue<?> observable) {
223-
observable.addListener((obs, oldValue, newValue) -> requestSceneRerender());
224-
}
225-
226-
private void requestSceneRerender() {
227-
Platform.runLater(
228-
() ->
229-
Event.fireEvent(
230-
viewerScene,
231-
new SVSViewerEvent(viewerScene, SVSViewerEvent.SCENE_RERENDER_REQUESTED)));
221+
observable.addListener((obs, oldValue, newValue) -> geometryManager.requestSceneRerender());
232222
}
233223

234224
private void initMessageStack(VBox messageStack) {

src/main/java/edu/umich/soar/svsviewer/command/UpdateGeometryCommand.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.github.quickhull3d.Point3d;
44
import com.github.quickhull3d.QuickHull3D;
5-
import edu.umich.soar.svsviewer.SVSViewerEvent;
65
import edu.umich.soar.svsviewer.SceneController;
76
import edu.umich.soar.svsviewer.scene.Geometry;
87
import edu.umich.soar.svsviewer.scene.GeometryManager;
@@ -141,13 +140,10 @@ public void interpret(GeometryManager geoManager, SceneController sceneControlle
141140
}
142141
}
143142
for (SVSScene scene : rerenderedScenes.values()) {
144-
// TODO: technically only need to update label for the geometries that were changed
145-
Node sceneRoot = scene.root();
146-
Platform.runLater(
147-
() ->
148-
Event.fireEvent(
149-
sceneRoot,
150-
new SVSViewerEvent(sceneRoot, SVSViewerEvent.SCENE_RERENDER_REQUESTED)));
143+
// TODO: technically only need to update label for the scenes/geometries that were changed
144+
// Node sceneRoot = scene.root();
145+
// geoManager.requestSceneRerender(scene);
146+
geoManager.requestSceneRerender();
151147
}
152148
}
153149

src/main/java/edu/umich/soar/svsviewer/scene/GeometryManager.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.util.List;
1515
import java.util.function.Consumer;
1616

17+
import javafx.application.Platform;
1718
import javafx.scene.Group;
1819
import javafx.scene.Node;
1920
import javafx.scene.layout.Pane;
@@ -279,8 +280,13 @@ public void addGeometry(NameMatcher sceneMatcher, String geometryName) {
279280
}
280281
}
281282

283+
public void requestSceneRerender() {
284+
Platform.runLater(this::updateLabelPositions);
285+
}
286+
282287
public void updateLabelPositions() {
283-
// System.out.println("Updating label positions...");
288+
// TODO: would be nice to manage labels in a dedicated class
289+
// System.out.println("Updating label positions...");
284290
// TODO: should be done only for the updated scene
285291
scenes
286292
.values()

0 commit comments

Comments
 (0)