diff --git a/Java/Debugger/src/edu/umich/soar/debugger/general/StartBrowser.java b/Java/Debugger/src/edu/umich/soar/debugger/general/DesktopActions.java similarity index 54% rename from Java/Debugger/src/edu/umich/soar/debugger/general/StartBrowser.java rename to Java/Debugger/src/edu/umich/soar/debugger/general/DesktopActions.java index 788a67686c..defc0bd3da 100644 --- a/Java/Debugger/src/edu/umich/soar/debugger/general/StartBrowser.java +++ b/Java/Debugger/src/edu/umich/soar/debugger/general/DesktopActions.java @@ -13,15 +13,27 @@ ///////////////////////////////////////////////////////// import java.awt.Desktop; +import java.io.File; +import java.io.IOException; import java.net.URI; -public class StartBrowser +import java.net.URISyntaxException; + +public class DesktopActions { - public static void openURL(String url) throws Exception - { + public static void openURL(String url) throws IOException, URISyntaxException { if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { Desktop.getDesktop().browse(new URI(url)); } else { - System.err.println("Opening websites URLs is not supported on this platform or machine"); + throw new IOException("Opening websites URLs is not supported on this platform or machine"); + } + } + + public static void openFileOrDirectory(File file) throws IOException { + if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.OPEN)) { + Desktop desktop = Desktop.getDesktop(); + desktop.open(file); + } else { + throw new IOException("Opening directories is not supported on this platform or machine"); } } diff --git a/Java/Debugger/src/edu/umich/soar/debugger/menu/FileMenu.java b/Java/Debugger/src/edu/umich/soar/debugger/menu/FileMenu.java index 6b79b6deb5..da69bd8a45 100644 --- a/Java/Debugger/src/edu/umich/soar/debugger/menu/FileMenu.java +++ b/Java/Debugger/src/edu/umich/soar/debugger/menu/FileMenu.java @@ -11,6 +11,8 @@ ********************************************************************************************/ package edu.umich.soar.debugger.menu; +import edu.umich.soar.debugger.general.AppProperties; +import edu.umich.soar.debugger.general.DesktopActions; import org.eclipse.swt.widgets.Menu; import sml.ClientAnalyzedXML; @@ -19,6 +21,8 @@ import edu.umich.soar.debugger.doc.Document; import edu.umich.soar.debugger.general.SaveLoad; +import java.io.File; + /******************************************************************************************** * * The file menu @@ -107,6 +111,15 @@ public void actionPerformed(ActionEvent e) } }; + private final AbstractAction m_Open = new AbstractAction("&Browse settings files...") + { + @Override + public void actionPerformed(ActionEvent e) + { + openSettingsPerformed(e); + } + }; + private final AbstractAction m_Exit = new AbstractAction("E&xit") { @Override @@ -147,6 +160,8 @@ private BaseMenu makeMenu(Menu parent, String title) menu.add(m_Load); menu.add(m_Save); menu.addSeparator(); + menu.add(m_Open); + menu.addSeparator(); menu.add(m_Exit); return menu; @@ -333,6 +348,20 @@ public void loadPerformed(ActionEvent e) } } + public void openSettingsPerformed(ActionEvent event) { + File settingsDir = AppProperties.GetSettingsFilePath(""); + try + { + DesktopActions.openFileOrDirectory(settingsDir); + } + catch (Exception e) + { + m_Frame.ShowMessageBox("Error opening directory " + settingsDir, e + .getLocalizedMessage()); + } + } + + /** Save the current window layout */ public void savePerformed(ActionEvent e) { diff --git a/Java/Debugger/src/edu/umich/soar/debugger/menu/HelpMenu.java b/Java/Debugger/src/edu/umich/soar/debugger/menu/HelpMenu.java index 93b18c8fad..81a5ee7e30 100644 --- a/Java/Debugger/src/edu/umich/soar/debugger/menu/HelpMenu.java +++ b/Java/Debugger/src/edu/umich/soar/debugger/menu/HelpMenu.java @@ -19,7 +19,7 @@ import edu.umich.soar.debugger.MainFrame; import edu.umich.soar.debugger.doc.Document; import edu.umich.soar.debugger.general.OSName; -import edu.umich.soar.debugger.general.StartBrowser; +import edu.umich.soar.debugger.general.DesktopActions; public class HelpMenu { @@ -143,7 +143,7 @@ private void open(String url) { try { - StartBrowser.openURL(url); + DesktopActions.openURL(url); } catch (Exception e) {