From 701cba758131d49c7d8be0df58057fa5dc429c9b Mon Sep 17 00:00:00 2001 From: Andreas Billmann Date: Wed, 30 Dec 2015 14:22:52 +0100 Subject: [PATCH] main content of about dialog changed to fxml to support hyperlinks and better layout --- build.gradle | 4 +- .../ninja/javafx/smartcsv/fx/SmartCSV.java | 4 + .../smartcsv/fx/SmartCSVController.java | 20 ++--- .../smartcsv/fx/about/AboutController.java | 68 ++++++++++++++++ .../ninja/javafx/smartcsv/fx/about/about.fxml | 77 +++++++++++++++++++ .../javafx/smartcsv/fx/application.properties | 1 + 6 files changed, 157 insertions(+), 17 deletions(-) create mode 100644 src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java create mode 100644 src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml diff --git a/build.gradle b/build.gradle index 9ae93e9..42daa28 100644 --- a/build.gradle +++ b/build.gradle @@ -19,9 +19,9 @@ dependencies { testCompile group: 'org.hamcrest', name: 'hamcrest-library', version: '1.3' testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19' compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.5' - compile group: 'org.springframework', name:'spring-context', version: '4.2.3.RELEASE' + compile group: 'org.springframework', name:'spring-context', version: '4.2.4.RELEASE' compile group: 'net.sf.supercsv', name: 'super-csv', version: '2.4.0' compile group: 'com.typesafe', name: 'config', version: '1.3.0' - compile group: 'commons-validator', name: 'commons-validator', version: '1.4.1' + compile group: 'commons-validator', name: 'commons-validator', version: '1.5.0' compile group: 'de.jensd', name: 'fontawesomefx', version: '8.7' } diff --git a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java index 080e617..19bfb12 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSV.java @@ -33,6 +33,7 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.stage.WindowEvent; +import ninja.javafx.smartcsv.fx.about.AboutController; import org.springframework.context.annotation.*; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; @@ -53,6 +54,9 @@ public class SmartCSV extends Application { Platform.setImplicitExit(false); + AboutController aboutController = appContext.getBean(AboutController.class); + aboutController.setHostServices(getHostServices()); + try { showUI(primaryStage, name, version); } catch (Exception e) { diff --git a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java index 689a80e..64dbaa3 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/SmartCSVController.java @@ -26,7 +26,6 @@ package ninja.javafx.smartcsv.fx; -import javafx.application.Platform; import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.concurrent.Service; @@ -41,6 +40,7 @@ import javafx.stage.FileChooser; import ninja.javafx.smartcsv.FileReader; import ninja.javafx.smartcsv.csv.CSVFileReader; import ninja.javafx.smartcsv.csv.CSVFileWriter; +import ninja.javafx.smartcsv.fx.about.AboutController; import ninja.javafx.smartcsv.fx.list.ValidationErrorListCell; import ninja.javafx.smartcsv.fx.table.ObservableMapValueFactory; import ninja.javafx.smartcsv.fx.table.ValidationCellFactory; @@ -81,6 +81,9 @@ public class SmartCSVController extends FXMLController { @Autowired private CSVFileWriter csvFileWriter; + @Autowired + private AboutController aboutController; + @FXML private BorderPane applicationPane; @@ -177,20 +180,7 @@ public class SmartCSVController extends FXMLController { Alert alert = new Alert(Alert.AlertType.INFORMATION); alert.setTitle("About"); alert.setHeaderText("SmartCSV.fx"); - alert.setContentText("This software is licensed under MIT license.\n" + - "written by javafx.ninja project \n\n" + - "https://github.com/frosch95/SmartCSV.fx\n\n" + - "3rd party software open source used:\n" + - "- junit\n" + - "- mockito\n" + - "- groovy\n" + - "- spring framework\n" + - "- supercsv\n" + - "- config\n" + - "- commons-validator\n" + - "- fontawesomefx"); - - + alert.getDialogPane().setContent(aboutController.getView()); alert.showAndWait(); } diff --git a/src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java b/src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java new file mode 100644 index 0000000..1b11450 --- /dev/null +++ b/src/main/java/ninja/javafx/smartcsv/fx/about/AboutController.java @@ -0,0 +1,68 @@ +/* + The MIT License (MIT) + ----------------------------------------------------------------------------- + + Copyright (c) 2015 javafx.ninja + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +package ninja.javafx.smartcsv.fx.about; + +import javafx.application.HostServices; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.Hyperlink; +import ninja.javafx.smartcsv.fx.FXMLController; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.net.URL; +import java.util.ResourceBundle; + +/** + * The about controller + */ +@Component +public class AboutController extends FXMLController { + + private HostServices hostServices; + + @Value("${fxml.smartcvs.about.view}") + @Override + public void setFxmlFilePath(String filePath) { + this.fxmlFilePath = filePath; + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + + } + + @FXML + public void openLinkInBrowser(ActionEvent actionEvent) { + Hyperlink hyperlink = (Hyperlink)actionEvent.getSource(); + hostServices.showDocument(hyperlink.getText()); + } + + public void setHostServices(HostServices hostServices) { + this.hostServices = hostServices; + } +} diff --git a/src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml b/src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml new file mode 100644 index 0000000..7f305c8 --- /dev/null +++ b/src/main/resources/ninja/javafx/smartcsv/fx/about/about.fxml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +