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 @@