diff --git a/client/src/main/java/ctbrec/ui/tabs/HelpTab.java b/client/src/main/java/ctbrec/ui/tabs/HelpTab.java index 846b36fd..933cbac8 100644 --- a/client/src/main/java/ctbrec/ui/tabs/HelpTab.java +++ b/client/src/main/java/ctbrec/ui/tabs/HelpTab.java @@ -1,5 +1,7 @@ package ctbrec.ui.tabs; +import ctbrec.Config; +import ctbrec.OS; import ctbrec.docs.DocServer; import ctbrec.ui.DesktopIntegration; import javafx.application.Platform; @@ -27,14 +29,20 @@ public class HelpTab extends Tab { Button openHelp = new Button("Open Help"); Button openLog = new Button("Open Log File"); + Button openCfg = new Button("Open config dir"); openHelp.setPadding(new Insets(20)); openLog.setPadding(new Insets(20)); Label logFilePathLabel = new Label("Log: " + new File("ctbrec.log").getAbsolutePath()); + openCfg.setPadding(new Insets(20)); + Label logFilePathLabel = new Label("Log file: " + new File("ctbrec.log").getAbsolutePath()); + File cfgDir = Config.getInstance().getConfigDir(); + String path = (cfgDir != null) ? cfgDir.getAbsolutePath() : "Unknown"; + Label configPathLabel = new Label("Config dir: " + path); VBox vbox = new VBox(); vbox.setAlignment(Pos.CENTER); // Center align the buttons vbox.setSpacing(20); // Set a 20 pixel gap between the buttons - vbox.getChildren().addAll(openHelp, openLog, logFilePathLabel); + vbox.getChildren().addAll(openHelp, openCfg, configPathLabel, openLog, logFilePathLabel); BorderPane layout = new BorderPane(); @@ -75,6 +83,29 @@ public class HelpTab extends Tab { }); } + openCfg.setOnAction(e -> { + File configDir = Config.getInstance().getConfigDir(); + if (configDir.exists()) { + try { + // Use Runtime.getRuntime().exec() to open the file in a separate process + String osName = System.getProperty("os.name").toLowerCase(); + ProcessBuilder pb = null; + if (osName.contains("mac")) { + pb = new ProcessBuilder("open", configDir.getAbsolutePath()); + } else if (osName.contains("win")) { + pb = new ProcessBuilder("explorer.exe", configDir.getAbsolutePath()); + } else { // Assume it's a Unix/Linux system + pb = new ProcessBuilder("xdg-open", configDir.getAbsolutePath()); + } + pb.start(); + } catch (IOException ex) { + log.error("Couldn't open config dir", ex); + } + } else { + log.warn("Config dir doesn't exist: {}", configDir.getAbsolutePath()); + } + }); + private void startDocumentationServer() { new Thread(() -> { try {