Skip to content

Commit

Permalink
Bugfix/JPRO-45 Unable to Run Reasoner when running Komet with JPro (#61)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
besidev authored Sep 24, 2024
1 parent 577de7e commit 615c0aa
Showing 1 changed file with 27 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -399,35 +399,34 @@ private void setupProgressListener() {
Subscriber<ProgressEvent> progressPopupSubscriber = evt -> {
// if summon event type, load stuff and reference task to progress popup
if (evt.getEventType() == SUMMON) {
progressToggleButton.setVisible(true);
Task<Void> task = evt.getTask();
JFXNode<Pane, ProgressController> 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<Void> task = evt.getTask();
JFXNode<Pane, ProgressController> 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<Pane, ProgressController> 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<Pane, ProgressController> 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);
Expand Down

0 comments on commit 615c0aa

Please sign in to comment.