From 615c0aa7e20a7ff656e4f7373974e08bc31d33ca Mon Sep 17 00:00:00 2001 From: Besmir Beqiri Date: Tue, 24 Sep 2024 22:57:24 +0200 Subject: [PATCH] =?UTF-8?q?Bugfix/JPRO-45=C2=A0Unable=20to=20Run=20Reasone?= =?UTF-8?q?r=20when=20running=20Komet=20with=20JPro=20(#61)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change `progressToggleButton` visibility on the `JavaFX Application Thread` * Remove `Platform.runLater` wrapper assuming this code is already being called on the `JavaFX Application Thread` * Some final cleanup * Wrap JavaFX progress popup listener code inside `Platform.runLater` to ensure proper execution on the JavaFX Application Thread --- .../mvvm/view/journal/JournalController.java | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/kview/src/main/java/dev/ikm/komet/kview/mvvm/view/journal/JournalController.java b/kview/src/main/java/dev/ikm/komet/kview/mvvm/view/journal/JournalController.java index 5e12971f5..dec79980f 100644 --- a/kview/src/main/java/dev/ikm/komet/kview/mvvm/view/journal/JournalController.java +++ b/kview/src/main/java/dev/ikm/komet/kview/mvvm/view/journal/JournalController.java @@ -399,35 +399,34 @@ private void setupProgressListener() { Subscriber progressPopupSubscriber = evt -> { // if summon event type, load stuff and reference task to progress popup if (evt.getEventType() == SUMMON) { - progressToggleButton.setVisible(true); - Task task = evt.getTask(); - JFXNode progressJFXNode = createProgressBox(task, evt.getCancelButtonText()); - ProgressController progressController = progressJFXNode.controller(); - Pane progressPane = progressJFXNode.node(); - PopOver popOver = new PopOver(progressPane); - - // setup close button - progressController.getCloseProgressButton().setOnAction(actionEvent -> { - popOver.hide(); - progressController.cleanup(); + Platform.runLater(() -> { + progressToggleButton.setVisible(true); + Task task = evt.getTask(); + JFXNode progressJFXNode = createProgressBox(task, evt.getCancelButtonText()); + ProgressController progressController = progressJFXNode.controller(); + Pane progressPane = progressJFXNode.node(); + PopOver popOver = new PopOver(progressPane); + + // setup close button + progressController.getCloseProgressButton().setOnAction(actionEvent -> { + popOver.hide(); + progressController.cleanup(); + }); + + popOver.setOnHidden(windowEvent -> progressController.cleanup()); + popOver.setArrowLocation(PopOver.ArrowLocation.LEFT_TOP); + popOver.show(progressToggleButton); + + // Create one inside the list for bump out + JFXNode progressJFXNode2 = createProgressBox(task, evt.getCancelButtonText()); + ProgressController progressController2 = progressJFXNode2.controller(); + Pane progressBox2 = progressJFXNode2.node(); + progressController2.getCloseProgressButton().setOnAction(actionEvent -> { + progressController2.cleanup(); + progressListVBox.getChildren().remove(progressBox2); + }); + progressListVBox.getChildren().addFirst(progressBox2); }); - - popOver.setOnHidden(windowEvent -> { - progressController.cleanup(); - }); - - popOver.setArrowLocation(PopOver.ArrowLocation.LEFT_TOP); - Platform.runLater(() -> popOver.show(progressToggleButton)); - - // Create one inside the list for bump out - JFXNode progressJFXNode2 = createProgressBox(task, evt.getCancelButtonText()); - ProgressController progressController2 = progressJFXNode2.controller(); - Pane progressBox2 = progressJFXNode2.node(); - progressController2.getCloseProgressButton().setOnAction(actionEvent -> { - progressController2.cleanup(); - Platform.runLater(()-> progressListVBox.getChildren().remove(progressBox2)); - }); - Platform.runLater(()-> progressListVBox.getChildren().add(0, progressBox2)); } }; journalEventBus.subscribe(PROGRESS_TOPIC, ProgressEvent.class, progressPopupSubscriber);