From 93f650788c5dd0a12e22bf1c8906ef93c20abf3e Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Sat, 21 May 2016 11:23:07 -0700 Subject: [PATCH 01/13] Add About window --- .../wpi/grip/ui/AboutDialogController.java | 18 ++++++ .../edu/wpi/grip/ui/MainWindowController.java | 12 ++++ .../edu/wpi/grip/ui/AboutDialog.fxml | 60 +++++++++++++++++++ .../resources/edu/wpi/grip/ui/MainWindow.fxml | 17 ++++++ 4 files changed, 107 insertions(+) create mode 100644 ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java create mode 100644 ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java new file mode 100644 index 0000000000..1ade05630b --- /dev/null +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -0,0 +1,18 @@ +package edu.wpi.grip.ui; + +import javafx.fxml.FXML; +import javafx.scene.text.Text; + +public class AboutDialogController { + + @FXML + private Text versionNumberText; + + @FXML + void initialize() { + assert versionNumberText != null : "fx:id=\"versionNumberText\" was not injected: check your FXML file 'AboutDialog.fxml'."; + + versionNumberText.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); + } +} + diff --git a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java index 81376b77dc..3d926dd675 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java @@ -16,7 +16,9 @@ import edu.wpi.grip.ui.util.DPIUtility; import javafx.application.Platform; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; import javafx.scene.Parent; +import javafx.scene.Scene; import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; import javafx.scene.control.SplitPane; @@ -26,6 +28,7 @@ import javafx.scene.layout.Region; import javafx.stage.FileChooser; import javafx.stage.FileChooser.ExtensionFilter; +import javafx.stage.Stage; import org.controlsfx.control.StatusBar; import javax.inject.Inject; @@ -209,6 +212,15 @@ public void showProjectSettingsEditor() { }); } + @FXML + public void showProjectAboutDialog() throws IOException { + Parent about = FXMLLoader.load(Main.class.getResource("AboutDialog.fxml")); + Stage aboutDialogStage = new Stage(); + aboutDialogStage.setScene(new Scene(about)); + aboutDialogStage.setAlwaysOnTop(true); + aboutDialogStage.show(); + } + @FXML public void quit() { if (showConfirmationDialogAndWait()) { diff --git a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml new file mode 100644 index 0000000000..14896a1e05 --- /dev/null +++ b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml b/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml index c11b8f9ae6..d974af7f12 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml @@ -132,6 +132,23 @@ + + + + + + + + + + + + + + + + + From bdea85f7e5ee6fb142a5fe50dcdc935e7c210d39 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Sat, 21 May 2016 17:47:43 -0700 Subject: [PATCH 02/13] Use Application Modal instead of always on top --- ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java index 3d926dd675..65208a92fb 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java @@ -28,6 +28,7 @@ import javafx.scene.layout.Region; import javafx.stage.FileChooser; import javafx.stage.FileChooser.ExtensionFilter; +import javafx.stage.Modality; import javafx.stage.Stage; import org.controlsfx.control.StatusBar; @@ -217,7 +218,7 @@ public void showProjectAboutDialog() throws IOException { Parent about = FXMLLoader.load(Main.class.getResource("AboutDialog.fxml")); Stage aboutDialogStage = new Stage(); aboutDialogStage.setScene(new Scene(about)); - aboutDialogStage.setAlwaysOnTop(true); + aboutDialogStage.initModality(Modality.APPLICATION_MODAL); aboutDialogStage.show(); } From aa2f7c1d82b403b2077a58b361115379eb936295 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Sat, 21 May 2016 17:48:58 -0700 Subject: [PATCH 03/13] Add links to Github and ScreenSteps to the about dialog --- .../edu/wpi/grip/ui/AboutDialogController.java | 16 ++++++++++++++++ .../resources/edu/wpi/grip/ui/AboutDialog.fxml | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index 1ade05630b..d20a33b5a0 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -1,13 +1,29 @@ package edu.wpi.grip.ui; +import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.text.Text; +import javax.inject.Inject; + public class AboutDialogController { + @Inject + private Main main; + @FXML private Text versionNumberText; + @FXML + void githubButtonAction(ActionEvent event) { + main.getHostServices().showDocument("https://github.com/WPIRoboticsProjects/GRIP"); + } + + @FXML + void screenstepsButtonAction(ActionEvent event) { + main.getHostServices().showDocument("http://wpilib.screenstepslive.com/s/4485/m/50711"); + } + @FXML void initialize() { assert versionNumberText != null : "fx:id=\"versionNumberText\" was not injected: check your FXML file 'AboutDialog.fxml'."; diff --git a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml index 14896a1e05..c854de82ab 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml @@ -1,6 +1,7 @@ + @@ -33,6 +34,23 @@ + + + + + + + + + From fec265558b735fadc4cc164c83b2ea847ce79cf3 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Tue, 24 May 2016 16:49:19 -0700 Subject: [PATCH 04/13] Apply @JLLeitschuh patch --- ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java | 6 +++--- ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java index 65208a92fb..841ab45e44 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java @@ -16,7 +16,6 @@ import edu.wpi.grip.ui.util.DPIUtility; import javafx.application.Platform; import javafx.fxml.FXML; -import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.ButtonType; @@ -53,6 +52,8 @@ public class MainWindowController { @FXML private Pane deployPane; @FXML + private Pane aboutPane; + @FXML private StatusBar statusBar; @Inject private EventBus eventBus; @@ -215,9 +216,8 @@ public void showProjectSettingsEditor() { @FXML public void showProjectAboutDialog() throws IOException { - Parent about = FXMLLoader.load(Main.class.getResource("AboutDialog.fxml")); Stage aboutDialogStage = new Stage(); - aboutDialogStage.setScene(new Scene(about)); + aboutDialogStage.setScene(new Scene(aboutPane)); aboutDialogStage.initModality(Modality.APPLICATION_MODAL); aboutDialogStage.show(); } diff --git a/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml b/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml index d974af7f12..edacc42d87 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml @@ -165,6 +165,7 @@ + From 643361536e9382c3fcdbcfe6a5b1732d8a8ffdc8 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Tue, 24 May 2016 16:49:47 -0700 Subject: [PATCH 05/13] New button style --- .../wpi/grip/ui/AboutDialogController.java | 53 +++++++++++++++++-- .../edu/wpi/grip/ui/AboutDialog.fxml | 40 +++++++++----- 2 files changed, 76 insertions(+), 17 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index d20a33b5a0..8a7e81630d 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -1,7 +1,9 @@ package edu.wpi.grip.ui; -import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.scene.input.MouseEvent; +import javafx.scene.paint.Color; +import javafx.scene.shape.Rectangle; import javafx.scene.text.Text; import javax.inject.Inject; @@ -15,18 +17,61 @@ public class AboutDialogController { private Text versionNumberText; @FXML - void githubButtonAction(ActionEvent event) { - main.getHostServices().showDocument("https://github.com/WPIRoboticsProjects/GRIP"); + private Rectangle githubRectangle; + + @FXML + private Text githubText; + + @FXML + private Rectangle documentationRectangle; + + @FXML + private Text documentationText; + + private static final Color CLEAR_COLOR = new Color(0.0, 0.0, 0.0, 0.0); + + @FXML + void mouseEnteredDocumentationButton(MouseEvent event) { + documentationRectangle.setFill(Color.GRAY); + documentationText.setFill(Color.WHITE); + } + + @FXML + void mouseEnteredGithubButton(MouseEvent event) { + githubRectangle.setFill(Color.GRAY); + githubText.setFill(Color.WHITE); + } + + @FXML + void mouseExitedDocumentationButton(MouseEvent event) { + documentationRectangle.setFill(CLEAR_COLOR); + documentationText.setFill(Color.BLACK); + } + + @FXML + void mouseExitedGithubButton(MouseEvent event) { + githubRectangle.setFill(CLEAR_COLOR); + githubText.setFill(Color.BLACK); } @FXML - void screenstepsButtonAction(ActionEvent event) { + void mousePressedDocumentationButton(MouseEvent event) { main.getHostServices().showDocument("http://wpilib.screenstepslive.com/s/4485/m/50711"); } + @FXML + void mousePressedGithubButton(MouseEvent event) { + main.getHostServices().showDocument("https://github.com/WPIRoboticsProjects/GRIP"); + } + @FXML void initialize() { assert versionNumberText != null : "fx:id=\"versionNumberText\" was not injected: check your FXML file 'AboutDialog.fxml'."; + assert githubRectangle != null : "fx:id=\"githubRectangle\" was not injected: check your FXML file 'AboutDialog.fxml'."; + assert githubText != null : "fx:id=\"githubText\" was not injected: check your FXML file 'AboutDialog.fxml'."; + assert documentationRectangle != null : "fx:id=\"documentationRectangle\" was not injected: check your FXML file 'AboutDialog.fxml'."; + assert documentationText != null : "fx:id=\"documentationText\" was not injected: check your FXML file 'AboutDialog.fxml'."; + versionNumberText.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); } diff --git a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml index c854de82ab..43b59de683 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml @@ -1,12 +1,13 @@ - + + @@ -37,18 +38,31 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + From 3add80ed3b88ae14acd635020790553041e8d697 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Tue, 24 May 2016 17:01:54 -0700 Subject: [PATCH 06/13] Fix open twice bug --- ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java | 1 - ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index 8a7e81630d..8d977d8ced 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -72,7 +72,6 @@ void initialize() { assert documentationRectangle != null : "fx:id=\"documentationRectangle\" was not injected: check your FXML file 'AboutDialog.fxml'."; assert documentationText != null : "fx:id=\"documentationText\" was not injected: check your FXML file 'AboutDialog.fxml'."; - versionNumberText.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); } } diff --git a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java index 841ab45e44..1aa11e9a48 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java @@ -217,7 +217,11 @@ public void showProjectSettingsEditor() { @FXML public void showProjectAboutDialog() throws IOException { Stage aboutDialogStage = new Stage(); - aboutDialogStage.setScene(new Scene(aboutPane)); + if (aboutPane.getScene() != null) { + aboutDialogStage.setScene(aboutPane.getScene()); + } else { + aboutDialogStage.setScene(new Scene(aboutPane)); + } aboutDialogStage.initModality(Modality.APPLICATION_MODAL); aboutDialogStage.show(); } From 662d1fb584ff8626876aa9333b013c40dcf4e6c4 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Tue, 24 May 2016 17:15:02 -0700 Subject: [PATCH 07/13] Change Cursor to Hand while over links --- .../main/java/edu/wpi/grip/ui/AboutDialogController.java | 9 +++++++++ ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index 8d977d8ced..5c3c948879 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -1,6 +1,8 @@ package edu.wpi.grip.ui; import javafx.fxml.FXML; +import javafx.scene.Cursor; +import javafx.scene.Parent; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; @@ -13,6 +15,9 @@ public class AboutDialogController { @Inject private Main main; + @FXML + private Parent root; + @FXML private Text versionNumberText; @@ -34,24 +39,28 @@ public class AboutDialogController { void mouseEnteredDocumentationButton(MouseEvent event) { documentationRectangle.setFill(Color.GRAY); documentationText.setFill(Color.WHITE); + root.getScene().setCursor(Cursor.HAND); } @FXML void mouseEnteredGithubButton(MouseEvent event) { githubRectangle.setFill(Color.GRAY); githubText.setFill(Color.WHITE); + root.getScene().setCursor(Cursor.HAND); } @FXML void mouseExitedDocumentationButton(MouseEvent event) { documentationRectangle.setFill(CLEAR_COLOR); documentationText.setFill(Color.BLACK); + root.getScene().setCursor(Cursor.DEFAULT); } @FXML void mouseExitedGithubButton(MouseEvent event) { githubRectangle.setFill(CLEAR_COLOR); githubText.setFill(Color.BLACK); + root.getScene().setCursor(Cursor.DEFAULT); } @FXML diff --git a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml index 43b59de683..a940a2b80d 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml @@ -11,7 +11,7 @@ - + From 5ef3bd64f5642e0c3bb1f9e24f658f264669c937 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Wed, 25 May 2016 08:49:46 -0700 Subject: [PATCH 08/13] Use CSS formating instead of Rectangle --- .../wpi/grip/ui/AboutDialogController.java | 53 ------------------- .../edu/wpi/grip/ui/AboutDialog.fxml | 30 ++++++++--- .../main/resources/edu/wpi/grip/ui/GRIP.css | 12 ++++- 3 files changed, 33 insertions(+), 62 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index 5c3c948879..c04bcca8bf 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -1,11 +1,7 @@ package edu.wpi.grip.ui; import javafx.fxml.FXML; -import javafx.scene.Cursor; -import javafx.scene.Parent; import javafx.scene.input.MouseEvent; -import javafx.scene.paint.Color; -import javafx.scene.shape.Rectangle; import javafx.scene.text.Text; import javax.inject.Inject; @@ -15,54 +11,9 @@ public class AboutDialogController { @Inject private Main main; - @FXML - private Parent root; - @FXML private Text versionNumberText; - @FXML - private Rectangle githubRectangle; - - @FXML - private Text githubText; - - @FXML - private Rectangle documentationRectangle; - - @FXML - private Text documentationText; - - private static final Color CLEAR_COLOR = new Color(0.0, 0.0, 0.0, 0.0); - - @FXML - void mouseEnteredDocumentationButton(MouseEvent event) { - documentationRectangle.setFill(Color.GRAY); - documentationText.setFill(Color.WHITE); - root.getScene().setCursor(Cursor.HAND); - } - - @FXML - void mouseEnteredGithubButton(MouseEvent event) { - githubRectangle.setFill(Color.GRAY); - githubText.setFill(Color.WHITE); - root.getScene().setCursor(Cursor.HAND); - } - - @FXML - void mouseExitedDocumentationButton(MouseEvent event) { - documentationRectangle.setFill(CLEAR_COLOR); - documentationText.setFill(Color.BLACK); - root.getScene().setCursor(Cursor.DEFAULT); - } - - @FXML - void mouseExitedGithubButton(MouseEvent event) { - githubRectangle.setFill(CLEAR_COLOR); - githubText.setFill(Color.BLACK); - root.getScene().setCursor(Cursor.DEFAULT); - } - @FXML void mousePressedDocumentationButton(MouseEvent event) { main.getHostServices().showDocument("http://wpilib.screenstepslive.com/s/4485/m/50711"); @@ -76,10 +27,6 @@ void mousePressedGithubButton(MouseEvent event) { @FXML void initialize() { assert versionNumberText != null : "fx:id=\"versionNumberText\" was not injected: check your FXML file 'AboutDialog.fxml'."; - assert githubRectangle != null : "fx:id=\"githubRectangle\" was not injected: check your FXML file 'AboutDialog.fxml'."; - assert githubText != null : "fx:id=\"githubText\" was not injected: check your FXML file 'AboutDialog.fxml'."; - assert documentationRectangle != null : "fx:id=\"documentationRectangle\" was not injected: check your FXML file 'AboutDialog.fxml'."; - assert documentationText != null : "fx:id=\"documentationText\" was not injected: check your FXML file 'AboutDialog.fxml'."; versionNumberText.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); } diff --git a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml index a940a2b80d..7e96630880 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml @@ -7,11 +7,12 @@ - - + @@ -38,30 +39,43 @@ - + - - + + + + + + + + + + - + - - + + + + + + + diff --git a/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css b/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css index 739b3767e2..a6b4c93c89 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css +++ b/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css @@ -233,4 +233,14 @@ VBox.sockets { .info-label { -fx-font-weight: bold; -} \ No newline at end of file +} + +.about-button:hover { + -fx-background-color: gray; + -fx-background-radius: 12; + -fx-cursor: hand; +} + +.about-button:hover Text { + -fx-fill: white; +} From 1e25a05f1b7f688a7c636149dd0d88c09caa1d5b Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Wed, 25 May 2016 09:21:47 -0700 Subject: [PATCH 09/13] Use utility style and autoclose --- .../edu/wpi/grip/ui/MainWindowController.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java index 1aa11e9a48..eec9fd22c7 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java @@ -27,8 +27,8 @@ import javafx.scene.layout.Region; import javafx.stage.FileChooser; import javafx.stage.FileChooser.ExtensionFilter; -import javafx.stage.Modality; import javafx.stage.Stage; +import javafx.stage.StageStyle; import org.controlsfx.control.StatusBar; import javax.inject.Inject; @@ -70,6 +70,8 @@ public class MainWindowController { @Inject private Project project; + private Stage aboutDialogStage; + public void initialize() { pipelineView.prefHeightProperty().bind(bottomPane.heightProperty()); statusBar.getLeftItems().add(startStoppableButtonFactory.create(pipelineRunner)); @@ -216,13 +218,16 @@ public void showProjectSettingsEditor() { @FXML public void showProjectAboutDialog() throws IOException { - Stage aboutDialogStage = new Stage(); - if (aboutPane.getScene() != null) { - aboutDialogStage.setScene(aboutPane.getScene()); - } else { + if (aboutDialogStage == null) { + aboutDialogStage = new Stage(); aboutDialogStage.setScene(new Scene(aboutPane)); + aboutDialogStage.initStyle(StageStyle.UTILITY); + aboutDialogStage.focusedProperty().addListener((observable, oldvalue, newvalue) -> { + if (oldvalue) { + aboutDialogStage.hide(); + } + }); } - aboutDialogStage.initModality(Modality.APPLICATION_MODAL); aboutDialogStage.show(); } From e540e5a84cd32573535a27738366d630bbcfb2d5 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Wed, 25 May 2016 10:19:45 -0700 Subject: [PATCH 10/13] Fix Windows font bug --- .../wpi/grip/ui/AboutDialogController.java | 8 ++-- .../edu/wpi/grip/ui/AboutDialog.fxml | 41 +++++++------------ .../main/resources/edu/wpi/grip/ui/GRIP.css | 8 +++- 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index c04bcca8bf..09ef24c785 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -1,8 +1,8 @@ package edu.wpi.grip.ui; import javafx.fxml.FXML; +import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; -import javafx.scene.text.Text; import javax.inject.Inject; @@ -12,7 +12,7 @@ public class AboutDialogController { private Main main; @FXML - private Text versionNumberText; + private Label versionNumberLabel; @FXML void mousePressedDocumentationButton(MouseEvent event) { @@ -26,9 +26,9 @@ void mousePressedGithubButton(MouseEvent event) { @FXML void initialize() { - assert versionNumberText != null : "fx:id=\"versionNumberText\" was not injected: check your FXML file 'AboutDialog.fxml'."; + assert versionNumberLabel != null : "fx:id=\"versionNumberText\" was not injected: check your FXML file 'AboutDialog.fxml'."; - versionNumberText.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); + versionNumberLabel.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); } } diff --git a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml index 7e96630880..97ec57459f 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml @@ -1,6 +1,8 @@ + + @@ -8,11 +10,8 @@ - - + @@ -26,26 +25,17 @@ - - - - - - - - - - + @@ -64,11 +54,7 @@ - - - - - + @@ -92,10 +78,7 @@ - - - - + @@ -103,4 +86,8 @@ + + + + diff --git a/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css b/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css index a6b4c93c89..d98ca42b23 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css +++ b/ui/src/main/resources/edu/wpi/grip/ui/GRIP.css @@ -235,12 +235,16 @@ VBox.sockets { -fx-font-weight: bold; } +.about-window Label { + -fx-font-size: 14; +} + .about-button:hover { -fx-background-color: gray; -fx-background-radius: 12; -fx-cursor: hand; } -.about-button:hover Text { - -fx-fill: white; +.about-button:hover Label { + -fx-text-fill: white; } From e393211989716e7f0f9c8392186ef3ec409a15f7 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Fri, 27 May 2016 18:47:50 -0700 Subject: [PATCH 11/13] Fix tests so a mock network module is now injected --- .../network/MockGRIPNetworkModule.java | 21 +++++++++++++++++++ .../network/MockMapNetworkPublisher.java | 13 ++++++++++-- .../network/ros/MockROSManager.java | 9 ++++++++ .../network/ros/ROSPackageSanityTest.java | 2 +- .../wpi/grip/ui/AboutDialogController.java | 1 - .../java/edu/wpi/grip/ui/MainWindowTest.java | 4 +++- 6 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 core/src/test/java/edu/wpi/grip/core/operations/network/MockGRIPNetworkModule.java create mode 100644 core/src/test/java/edu/wpi/grip/core/operations/network/ros/MockROSManager.java diff --git a/core/src/test/java/edu/wpi/grip/core/operations/network/MockGRIPNetworkModule.java b/core/src/test/java/edu/wpi/grip/core/operations/network/MockGRIPNetworkModule.java new file mode 100644 index 0000000000..fc21353c42 --- /dev/null +++ b/core/src/test/java/edu/wpi/grip/core/operations/network/MockGRIPNetworkModule.java @@ -0,0 +1,21 @@ +package edu.wpi.grip.core.operations.network; + +import com.google.inject.AbstractModule; +import com.google.inject.name.Names; +import edu.wpi.grip.core.operations.network.ros.MockROSManager; +import edu.wpi.grip.core.operations.network.ros.ROSNetworkPublisherFactory; + +/** + * A mock of {@Link GRIPNetworkModule} for testing. + */ +public final class MockGRIPNetworkModule extends AbstractModule { + @Override + protected void configure() { + bind(MapNetworkPublisherFactory.class) + .annotatedWith(Names.named("ntManager")) + .to(MockMapNetworkPublisher.class); + bind(ROSNetworkPublisherFactory.class) + .annotatedWith(Names.named("rosManager")) + .to(MockROSManager.class); + } +} diff --git a/core/src/test/java/edu/wpi/grip/core/operations/network/MockMapNetworkPublisher.java b/core/src/test/java/edu/wpi/grip/core/operations/network/MockMapNetworkPublisher.java index 34938a2093..d8cf784323 100644 --- a/core/src/test/java/edu/wpi/grip/core/operations/network/MockMapNetworkPublisher.java +++ b/core/src/test/java/edu/wpi/grip/core/operations/network/MockMapNetworkPublisher.java @@ -1,12 +1,16 @@ package edu.wpi.grip.core.operations.network; - +import java.util.Collections; import java.util.Map; import java.util.Optional; import java.util.Set; @SuppressWarnings("PMD.UncommentedEmptyMethodBody") -public class MockMapNetworkPublisher extends MapNetworkPublisher { +public class MockMapNetworkPublisher extends MapNetworkPublisher implements MapNetworkPublisherFactory { + + public MockMapNetworkPublisher() { + this(Collections.emptySet()); + } public MockMapNetworkPublisher(Set keys) { super(keys); @@ -36,4 +40,9 @@ protected void publishNameChanged(Optional oldName, String newName) { public void close() { } + + @Override + public MapNetworkPublisher create(Set keys) { + return new MockMapNetworkPublisher<>(keys); + } } diff --git a/core/src/test/java/edu/wpi/grip/core/operations/network/ros/MockROSManager.java b/core/src/test/java/edu/wpi/grip/core/operations/network/ros/MockROSManager.java new file mode 100644 index 0000000000..dc95b2263a --- /dev/null +++ b/core/src/test/java/edu/wpi/grip/core/operations/network/ros/MockROSManager.java @@ -0,0 +1,9 @@ +package edu.wpi.grip.core.operations.network.ros; + +public class MockROSManager implements ROSNetworkPublisherFactory { + + @Override + public ROSMessagePublisher create(C converter) { + return null; + } +} diff --git a/core/src/test/java/edu/wpi/grip/core/operations/network/ros/ROSPackageSanityTest.java b/core/src/test/java/edu/wpi/grip/core/operations/network/ros/ROSPackageSanityTest.java index a63f9b709a..67cfb8deca 100644 --- a/core/src/test/java/edu/wpi/grip/core/operations/network/ros/ROSPackageSanityTest.java +++ b/core/src/test/java/edu/wpi/grip/core/operations/network/ros/ROSPackageSanityTest.java @@ -6,6 +6,6 @@ public class ROSPackageSanityTest extends AbstractPackageSanityTests { public ROSPackageSanityTest() { super(); - ignoreClasses(c -> c.equals(ROSLoader.class)); + ignoreClasses(c -> c.equals(ROSLoader.class) || c.equals(MockROSManager.class)); } } diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index 09ef24c785..6500f82743 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -31,4 +31,3 @@ void initialize() { versionNumberLabel.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); } } - diff --git a/ui/src/test/java/edu/wpi/grip/ui/MainWindowTest.java b/ui/src/test/java/edu/wpi/grip/ui/MainWindowTest.java index 3e0d56c765..562ef0c163 100644 --- a/ui/src/test/java/edu/wpi/grip/ui/MainWindowTest.java +++ b/ui/src/test/java/edu/wpi/grip/ui/MainWindowTest.java @@ -7,6 +7,7 @@ import com.google.inject.util.Modules; import edu.wpi.grip.core.*; import edu.wpi.grip.core.events.OperationAddedEvent; +import edu.wpi.grip.core.operations.network.MockGRIPNetworkModule; import edu.wpi.grip.ui.util.DPIUtility; import edu.wpi.grip.ui.util.StyleClassNameUtility; import edu.wpi.grip.util.GRIPCoreTestModule; @@ -37,7 +38,8 @@ public class MainWindowTest extends ApplicationTest { public void start(Stage stage) throws Exception { testModule.setUp(); - Injector injector = Guice.createInjector(Modules.override(testModule).with(new GRIPUIModule())); + Injector injector = Guice.createInjector( + Modules.override(testModule, new MockGRIPNetworkModule()).with(new GRIPUIModule())); final Parent root = FXMLLoader.load(Main.class.getResource("MainWindow.fxml"), null, null, injector::getInstance); From ff5664714ee4edd397e39f681d9daacd1008ffd7 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Tue, 31 May 2016 22:25:18 -0700 Subject: [PATCH 12/13] Updated to use Roboto fonts not loaded with CSS (#590) --- ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml index 97ec57459f..ae3bd81ea7 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/AboutDialog.fxml @@ -87,7 +87,6 @@ - From 4547ce4ba161ff0b2492fc4d0c7c01132bdf344e Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Thu, 2 Jun 2016 16:25:01 -0700 Subject: [PATCH 13/13] Remove unused assert --- ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java index 6500f82743..afc6599faa 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/AboutDialogController.java @@ -26,8 +26,6 @@ void mousePressedGithubButton(MouseEvent event) { @FXML void initialize() { - assert versionNumberLabel != null : "fx:id=\"versionNumberText\" was not injected: check your FXML file 'AboutDialog.fxml'."; - versionNumberLabel.setText("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion()); } }