diff --git a/corefx/src/main/java/com/core/Controller.java b/corefx/src/main/java/com/core/Controller.java index 471b9648..3c8e4c82 100644 --- a/corefx/src/main/java/com/core/Controller.java +++ b/corefx/src/main/java/com/core/Controller.java @@ -13,6 +13,7 @@ import com.core.ui.*; import com.core.ui.dialogs.*; import com.core.utils.ConfigUtils; import com.core.websocket.CoreWebSocket; +import com.jfoenix.controls.JFXProgressBar; import javafx.application.Application; import javafx.application.Platform; import javafx.embed.swing.SwingNode; @@ -47,6 +48,7 @@ public class Controller implements Initializable { @FXML private BorderPane borderPane; @FXML private SwingNode swingNode; @FXML private MenuItem saveXmlMenuItem; + @FXML private JFXProgressBar progressBar; private Application application; private Stage window; diff --git a/corefx/src/main/java/com/core/ui/GraphToolbar.java b/corefx/src/main/java/com/core/ui/GraphToolbar.java index 003e0211..70b88f70 100644 --- a/corefx/src/main/java/com/core/ui/GraphToolbar.java +++ b/corefx/src/main/java/com/core/ui/GraphToolbar.java @@ -15,7 +15,6 @@ import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; -import javafx.scene.control.ProgressBar; import javafx.scene.control.Tooltip; import javafx.scene.image.ImageView; import javafx.scene.layout.VBox; @@ -237,33 +236,37 @@ public class GraphToolbar extends VBox { } private void startSession() { - try { - ProgressBar progressBar = new ProgressBar(); - progressBar.setPrefWidth(Double.MAX_VALUE); - controller.getBorderPane().setBottom(progressBar); - - boolean result = controller.getCoreClient().start(); - if (result) { - Toast.success("Session Started"); - setRunButton(true); + controller.getProgressBar().setVisible(true); + runButton.setDisable(true); + new Thread(() -> { + try { + boolean result = controller.getCoreClient().start(); + if (result) { + Toast.success("Session Started"); + setRunButton(true); + } + } catch (IOException ex) { + logger.error("failure starting session", ex); } - - controller.getBorderPane().setBottom(null); - } catch (IOException ex) { - logger.error("failure starting session", ex); - } + controller.getProgressBar().setVisible(false); + }).start(); } private void stopSession() { - try { - boolean result = controller.getCoreClient().stop(); - if (result) { - Toast.success("Session Stopped"); - setRunButton(false); + controller.getProgressBar().setVisible(true); + runButton.setDisable(true); + new Thread(() -> { + try { + boolean result = controller.getCoreClient().stop(); + if (result) { + Toast.success("Session Stopped"); + setRunButton(false); + } + } catch (IOException ex) { + logger.error("failure to stopSession session", ex); } - } catch (IOException ex) { - logger.error("failure to stopSession session", ex); - } + controller.getProgressBar().setVisible(false); + }).start(); } public void setRunButton(boolean isRunning) { @@ -277,6 +280,7 @@ public class GraphToolbar extends VBox { if (runButton.getGraphic() != stopIcon) { runButton.setGraphic(stopIcon); } + runButton.setDisable(false); }); } else { Platform.runLater(() -> { @@ -287,6 +291,7 @@ public class GraphToolbar extends VBox { if (runButton.getGraphic() != startIcon) { runButton.setGraphic(startIcon); } + runButton.setDisable(false); }); } } diff --git a/corefx/src/main/resources/fxml/main.fxml b/corefx/src/main/resources/fxml/main.fxml index c65917ba..27eed7e9 100644 --- a/corefx/src/main/resources/fxml/main.fxml +++ b/corefx/src/main/resources/fxml/main.fxml @@ -1,5 +1,6 @@ + @@ -57,6 +58,7 @@ +