diff --git a/src/main/java/name/nathanmcrae/numbersstation/AboutController.java b/src/main/java/name/nathanmcrae/numbersstation/AboutController.java
new file mode 100644
index 0000000..e5d6732
--- /dev/null
+++ b/src/main/java/name/nathanmcrae/numbersstation/AboutController.java
@@ -0,0 +1,71 @@
+package name.nathanmcrae.numbersstation;
+
+import java.awt.datatransfer.StringSelection;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+import java.util.Properties;
+import javafx.fxml.FXML;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Alert.AlertType;
+import javafx.scene.control.Hyperlink;
+import javafx.scene.control.TextField;
+
+public class AboutController {
+ private static final Logger logger = Logger.getLogger(Main.class.getName());
+
+ @FXML
+ private TextField directoryTextField;
+
+ @FXML
+ private TextField executableTextField;
+
+ @FXML
+ private TextField homepageURLTextField;
+
+ @FXML
+ private TextField logPathTextField;
+
+ @FXML
+ private TextField versionTextField;
+
+ @FXML
+ private void initialize() {
+ directoryTextField.setText(Main.getConfigPath().toString());
+
+ String processName = ManagementFactory.getRuntimeMXBean().getName();
+ long pid = Long.parseLong(processName.split("@")[0]);
+ ProcessHandle currentProcess = ProcessHandle.of(pid).orElseThrow();
+ Path executablePath = currentProcess.info().command().map(Paths::get).orElseThrow();
+ executableTextField.setText(executablePath.toString());
+
+ Properties properties = new Properties();
+ try {
+ properties.load(getClass().getClassLoader().getResourceAsStream("git.properties"));
+ } catch (IOException e) {
+ logger.log(Level.SEVERE, "Failed to load main view", e);
+ }
+ versionTextField.setText(String.valueOf(properties.get("git.commit.id.full")));
+
+ homepageURLTextField.setText("https://git.nathanmcrae.name/nathanmcrae/numbers-station");
+
+ logPathTextField.setText(Main.getStatePath().resolve("main.log").toString());
+ }
+
+ public void handleAppExecutableButtonPress() {
+
+ }
+
+ public void handleConfigDirectoryButtonPress() {
+
+ }
+
+ public void handleLogFilePathButtonPress() {
+
+ }
+}
diff --git a/src/main/java/name/nathanmcrae/numbersstation/MainController.java b/src/main/java/name/nathanmcrae/numbersstation/MainController.java
index 86e9e3a..d12c008 100644
--- a/src/main/java/name/nathanmcrae/numbersstation/MainController.java
+++ b/src/main/java/name/nathanmcrae/numbersstation/MainController.java
@@ -41,6 +41,7 @@ import javafx.stage.Stage;
public class MainController implements Initializable {
private static final Logger logger = Logger.getLogger(Main.class.getName());
+ private Stage aboutStage;
private Stage helpStage;
private Stage settingsStage;
private Stage selectStationStage;
@@ -396,6 +397,27 @@ public class MainController implements Initializable {
return true;
}
+ public void handleAboutButtonPress() {
+ try {
+ if (aboutStage == null) {
+ FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/AboutView.fxml"));
+ Parent root = fxmlLoader.load();
+ aboutStage = new Stage();
+ aboutStage.setTitle("About Numbers Station");
+ aboutStage.getIcons().add(new Image(getClass().getResourceAsStream("/icon.png")));
+ aboutStage.setScene(new Scene(root));
+ }
+
+ if (aboutStage.isShowing()) {
+ aboutStage.toFront();
+ } else {
+ aboutStage.show();
+ }
+ } catch (IOException e) {
+ logger.log(Level.SEVERE, "Exception while opening application about screen", e);
+ }
+ }
+
public void handleHelpButtonPress() {
try {
if (helpStage == null) {
diff --git a/src/main/resources/AboutView.fxml b/src/main/resources/AboutView.fxml
new file mode 100644
index 0000000..bb62d8e
--- /dev/null
+++ b/src/main/resources/AboutView.fxml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/MainView.fxml b/src/main/resources/MainView.fxml
index 39bb446..6526a7f 100644
--- a/src/main/resources/MainView.fxml
+++ b/src/main/resources/MainView.fxml
@@ -67,7 +67,7 @@
-
+