From eeece5bb0118d509e8e5fc940c7a1b6ee9cb4f24 Mon Sep 17 00:00:00 2001 From: angryziber Date: Wed, 27 Dec 2006 22:56:11 +0000 Subject: [PATCH] Platform class introduced to hold OS detections. MainMenu made more compatible with Mac, all accelerator texts moved from Labels.txt to the code. git-svn-id: https://ipscan.svn.sourceforge.net/svnroot/ipscan/trunk/ipscan@87 375186e5-ef17-0410-b0b6-91563547dcda --- .classpath | 13 +-- resources/Labels.txt | 32 +++---- src/net/azib/ipscan/config/Platform.java | 19 ++++ src/net/azib/ipscan/config/Version.java | 4 +- src/net/azib/ipscan/gui/MainMenu.java | 95 ++++++++++--------- .../ipscan/gui/actions/BrowserLauncher.java | 7 +- .../ipscan/gui/actions/TerminalLauncher.java | 4 +- 7 files changed, 94 insertions(+), 80 deletions(-) create mode 100755 src/net/azib/ipscan/config/Platform.java diff --git a/.classpath b/.classpath index 0968c5dc..2de7da33 100755 --- a/.classpath +++ b/.classpath @@ -10,17 +10,10 @@ - - - - - - - - - - + + + diff --git a/resources/Labels.txt b/resources/Labels.txt index 3b87a474..1d554a36 100755 --- a/resources/Labels.txt +++ b/resources/Labels.txt @@ -1,41 +1,41 @@ icon=images/icon.gif encoding=ISO-8859-1 menu.file=&File -menu.file.saveAll=Export &results... Ctrl+S -menu.file.saveSelection=Export &selected results... +menu.file.saveAll=&Save... +menu.file.saveSelection=Save se&lection... menu.file.exportOptions=Export &options... menu.file.importOptions=&Import options... -menu.file.exit=E&xit Alt+F4 +menu.file.exit=E&xit menu.goto=&Go to -menu.goto.aliveHost=Next alive &host Ctrl+Shift+H -menu.goto.deadHost=Next d&ead host Ctrl+Shift+D -menu.goto.openPort=Next open &port Ctrl+Shift+P -menu.goto.find=Find... Ctrl+F +menu.goto.aliveHost=Next alive &host +menu.goto.deadHost=Next d&ead host +menu.goto.openPort=Next open &port +menu.goto.find=Find... menu.commands=&Commands -menu.commands.details=&Show details Dbl-Clk -menu.commands.rescan=&Rescan IP(s) Ctrl+R -menu.commands.delete=&Delete IP(s) Del -menu.commands.copy=&Copy IP Ctrl+C +menu.commands.details=&Show details +menu.commands.rescan=&Rescan IP(s) +menu.commands.delete=&Delete IP(s) +menu.commands.copy=&Copy IP menu.commands.copyDetails=Co&py details menu.commands.show=Show menu.commands.open=Open menu.commands.open.edit=Edit openers... menu.favorites=Fa&vorites -menu.favorites.add=Add current... Ctrl+D +menu.favorites.add=Add current... menu.favorites.edit=Manage favorites... menu.tools=&Tools -menu.tools.options=&Options... Ctrl+O +menu.tools.options=&Options... menu.tools.fetchers=Select &fetchers... menu.tools.delete=Delete from list -menu.tools.lastInfo=Show last scan &info Ctrl+I +menu.tools.lastInfo=Show last scan &info menu.help=&Help -menu.help.gettingStarted=Getting &Started F1 +menu.help.gettingStarted=Getting &Started menu.help.website=Official Website menu.help.forum=Forum menu.help.plugins=Download plugins menu.help.cmdLine=Command-line usage menu.help.checkVersion=Check for newer version... -menu.help.about=&About... F12 +menu.help.about=&About... menu.columns.sortBy=Sort by menu.columns.sortDirection=Change sort direction menu.columns.info=Fetcher info diff --git a/src/net/azib/ipscan/config/Platform.java b/src/net/azib/ipscan/config/Platform.java new file mode 100755 index 00000000..6f0fce5a --- /dev/null +++ b/src/net/azib/ipscan/config/Platform.java @@ -0,0 +1,19 @@ +/** + * + */ +package net.azib.ipscan.config; + +/** + * This class provides constants for distingushing between various platforms. + * However, platform-specific behaviour must be kept at minimum. + * + * @author Anton Keks + */ +public class Platform { + /** Mac OS detection :-) */ + public static final boolean MAC_OS = System.getProperty("mrj.version") != null; + + /** Any Windows version */ + public static final boolean WINDOWS = System.getProperty("os.name").startsWith("Windows"); + +} diff --git a/src/net/azib/ipscan/config/Version.java b/src/net/azib/ipscan/config/Version.java index bab7ba72..dc2a8aa0 100755 --- a/src/net/azib/ipscan/config/Version.java +++ b/src/net/azib/ipscan/config/Version.java @@ -16,7 +16,7 @@ public class Version { public static final String FULL_NAME = NAME + " " + VERSION; - public static final String COPYLEFT = "(C) 1998-2006 Anton Keks"; + public static final String COPYLEFT = "(C) 1998-2007 Anton Keks"; public static final String WEBSITE = "http://www.azib.net/ipscan/"; @@ -26,5 +26,5 @@ public class Version { public static final String PLUGINS_URL = "http://www.azib.net/ipscan/plugins/"; - public static final String LATEST_VERSION_URL = "http://www.azib.net/ipscan/IPSCAN.VERSION"; + public static final String LATEST_VERSION_URL = "http://www.azib.net/ipscan/IPSCAN.VERSION"; } diff --git a/src/net/azib/ipscan/gui/MainMenu.java b/src/net/azib/ipscan/gui/MainMenu.java index 06097fba..0d827510 100755 --- a/src/net/azib/ipscan/gui/MainMenu.java +++ b/src/net/azib/ipscan/gui/MainMenu.java @@ -4,6 +4,7 @@ package net.azib.ipscan.gui; import net.azib.ipscan.config.Labels; +import net.azib.ipscan.config.Platform; import net.azib.ipscan.gui.actions.ColumnsActions; import net.azib.ipscan.gui.actions.CommandsActions; import net.azib.ipscan.gui.actions.FavoritesActions; @@ -60,20 +61,22 @@ public class MainMenu { private void createMainMenuItems(Menu menu) { Menu subMenu = initMenu(menu, "menu.file"); - initMenuItem(subMenu, "menu.file.saveAll", new Integer(SWT.CONTROL | 'S'), initListener(FileActions.SaveAll.class)); - initMenuItem(subMenu, "menu.file.saveSelection", null, initListener(FileActions.SaveSelection.class)); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.file.exportOptions", null, null); - initMenuItem(subMenu, "menu.file.importOptions", null, null); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.file.exit", null, initListener(FileActions.Exit.class)); + initMenuItem(subMenu, "menu.file.saveAll", "Ctrl+S", new Integer(SWT.MOD1 | 'S'), initListener(FileActions.SaveAll.class)); + initMenuItem(subMenu, "menu.file.saveSelection", null, null, initListener(FileActions.SaveSelection.class)); + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.file.exportOptions", null, null, null); + initMenuItem(subMenu, "menu.file.importOptions", null, null, null); + if (!Platform.MAC_OS) { + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.file.exit", !Platform.MAC_OS ? "Alt+F4" : null, null, initListener(FileActions.Exit.class)); + } subMenu = initMenu(menu, "menu.goto"); - initMenuItem(subMenu, "menu.goto.aliveHost", new Integer(SWT.CONTROL | SWT.SHIFT | 'H'), initListener(GotoActions.NextAliveHost.class)); - initMenuItem(subMenu, "menu.goto.deadHost", new Integer(SWT.CONTROL | SWT.SHIFT | 'D'), initListener(GotoActions.NextDeadHost.class)); - initMenuItem(subMenu, "menu.goto.openPort", new Integer(SWT.CONTROL | SWT.SHIFT | 'P'), initListener(GotoActions.NextHostWithInfo.class)); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.goto.find", new Integer(SWT.CONTROL | 'F'), initListener(GotoActions.Find.class)); + initMenuItem(subMenu, "menu.goto.aliveHost", "Ctrl+Shift+H", new Integer(SWT.MOD1 | SWT.MOD2 | 'H'), initListener(GotoActions.NextAliveHost.class)); + initMenuItem(subMenu, "menu.goto.deadHost", "Ctrl+Shift+D", new Integer(SWT.MOD1 | SWT.MOD2 | 'D'), initListener(GotoActions.NextDeadHost.class)); + initMenuItem(subMenu, "menu.goto.openPort", "Ctrl+Shift+P", new Integer(SWT.MOD1 | SWT.MOD2 | 'P'), initListener(GotoActions.NextHostWithInfo.class)); + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.goto.find", "Ctrl+F", new Integer(SWT.MOD1 | 'F'), initListener(GotoActions.Find.class)); subMenu = initMenu(menu, "menu.commands"); createCommandsMenuItems(subMenu); @@ -81,35 +84,35 @@ public class MainMenu { createFavoritesMenu(menu); subMenu = initMenu(menu, "menu.tools"); - initMenuItem(subMenu, "menu.tools.options", new Integer(SWT.CONTROL | 'O'), initListener(ToolsActions.Options.class)); - initMenuItem(subMenu, "menu.tools.fetchers", null, initListener(ToolsActions.SelectFetchers.class)); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.tools.delete", null, null); - initMenuItem(subMenu, "menu.tools.lastInfo", new Integer(SWT.CONTROL | 'I'), null); + initMenuItem(subMenu, "menu.tools.options", Platform.MAC_OS ? "Ctrl+," : "Ctrl+O", new Integer(SWT.MOD1 | (Platform.MAC_OS ? ',' : 'O')), initListener(ToolsActions.Options.class)); + initMenuItem(subMenu, "menu.tools.fetchers", null, null, initListener(ToolsActions.SelectFetchers.class)); + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.tools.delete", null, null, null); + initMenuItem(subMenu, "menu.tools.lastInfo", "Ctrl+I", new Integer(SWT.MOD1 | 'I'), null); subMenu = initMenu(menu, "menu.help"); - initMenuItem(subMenu, "menu.help.gettingStarted", new Integer(SWT.F1), initListener(HelpActions.GettingStarted.class)); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.help.website", null, initListener(HelpActions.Website.class)); - initMenuItem(subMenu, "menu.help.forum", null, initListener(HelpActions.Forum.class)); - initMenuItem(subMenu, "menu.help.plugins", null, initListener(HelpActions.Plugins.class)); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.help.cmdLine", null, null); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.help.checkVersion", null, initListener(HelpActions.CheckVersion.class)); - initMenuItem(subMenu, null, null, null); - initMenuItem(subMenu, "menu.help.about", new Integer(SWT.F12), initListener(HelpActions.About.class)); + initMenuItem(subMenu, "menu.help.gettingStarted", !Platform.MAC_OS ? "F1" : null, new Integer(Platform.MAC_OS ? SWT.HELP : SWT.F1), initListener(HelpActions.GettingStarted.class)); + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.help.website", null, null, initListener(HelpActions.Website.class)); + initMenuItem(subMenu, "menu.help.forum", null, null, initListener(HelpActions.Forum.class)); + initMenuItem(subMenu, "menu.help.plugins", null, null, initListener(HelpActions.Plugins.class)); + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.help.cmdLine", null, null, null); + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.help.checkVersion", null, null, initListener(HelpActions.CheckVersion.class)); + initMenuItem(subMenu, null, null, null, null); + initMenuItem(subMenu, "menu.help.about", null, null, initListener(HelpActions.About.class)); } private void createCommandsMenuItems(Menu menu) { - initMenuItem(menu, "menu.commands.details", null, initListener(CommandsActions.Details.class)); - initMenuItem(menu, null, null, null); - initMenuItem(menu, "menu.commands.rescan", new Integer(SWT.CONTROL | 'R'), null); - initMenuItem(menu, "menu.commands.delete", new Integer(SWT.DEL), initListener(CommandsActions.Delete.class)); - initMenuItem(menu, null, null, null); - initMenuItem(menu, "menu.commands.copy", new Integer(SWT.CONTROL | 'C'), initListener(CommandsActions.CopyIP.class)); - initMenuItem(menu, "menu.commands.copyDetails", null, initListener(CommandsActions.CopyIPDetails.class)); - initMenuItem(menu, null, null, null); + initMenuItem(menu, "menu.commands.details", null, null, initListener(CommandsActions.Details.class)); + initMenuItem(menu, null, null, null, null); + initMenuItem(menu, "menu.commands.rescan", "Ctrl+R", new Integer(SWT.MOD1 | 'R'), null); + initMenuItem(menu, "menu.commands.delete", "Del", new Integer(SWT.DEL), initListener(CommandsActions.Delete.class)); + initMenuItem(menu, null, null, null, null); + initMenuItem(menu, "menu.commands.copy", "Ctrl+C", new Integer(SWT.MOD1 | 'C'), initListener(CommandsActions.CopyIP.class)); + initMenuItem(menu, "menu.commands.copyDetails", null, null, initListener(CommandsActions.CopyIPDetails.class)); + initMenuItem(menu, null, null, null, null); createOpenersMenu(menu); // initMenuItem(subMenu, "menu.commands.show", null, initListener()); } @@ -146,11 +149,11 @@ public class MainMenu { return (Listener) container.getComponentInstance(listenerClass); } - private static MenuItem initMenuItem(Menu parent, String label, Integer accelerator, Listener listener) { + private static MenuItem initMenuItem(Menu parent, String label, String acceleratorText, Integer accelerator, Listener listener) { MenuItem menuItem = new MenuItem(parent, label == null ? SWT.SEPARATOR : SWT.PUSH); if (label != null) - menuItem.setText(Labels.getLabel(label)); + menuItem.setText(Labels.getLabel(label) + (acceleratorText != null ? "\t" + acceleratorText : "")); if (accelerator != null) menuItem.setAccelerator(accelerator.intValue()); @@ -180,8 +183,8 @@ public class MainMenu { public OpenersMenu(Decorations parent, CommandsActions.EditOpeners editOpenersListener, CommandsActions.ShowOpenersMenu showOpenersMenuListener) { super(parent, SWT.DROP_DOWN); - initMenuItem(this, "menu.commands.open.edit", null, editOpenersListener); - initMenuItem(this, null, null, null); + initMenuItem(this, "menu.commands.open.edit", null, null, editOpenersListener); + initMenuItem(this, null, null, null, null); addListener(SWT.Show, showOpenersMenuListener); @@ -200,9 +203,9 @@ public class MainMenu { public FavoritesMenu(Decorations parent, FavoritesActions.Add addListener, FavoritesActions.Edit editListener, FavoritesActions.ShowMenu showFavoritesMenuListener) { super(parent, SWT.DROP_DOWN); - initMenuItem(this, "menu.favorites.add", new Integer(SWT.CONTROL | 'D'), addListener); - initMenuItem(this, "menu.favorites.edit", null, editListener); - initMenuItem(this, null, null, null); + initMenuItem(this, "menu.favorites.add", "Ctrl+D", new Integer(SWT.MOD1 | 'D'), addListener); + initMenuItem(this, "menu.favorites.edit", null, null, editListener); + initMenuItem(this, null, null, null, null); addListener(SWT.Show, showFavoritesMenuListener); } @@ -217,9 +220,9 @@ public class MainMenu { public ColumnsMenu(Decorations parent, ColumnsActions.SortBy sortByListener) { super(parent, SWT.POP_UP); - initMenuItem(this, "menu.columns.sortBy", null, sortByListener); - initMenuItem(this, "menu.columns.info", null, null); - initMenuItem(this, "menu.columns.options", null, null); + initMenuItem(this, "menu.columns.sortBy", null, null, sortByListener); + initMenuItem(this, "menu.columns.info", null, null, null); + initMenuItem(this, "menu.columns.options", null, null, null); } protected void checkSubclass() { } // allow extending of Menu class } diff --git a/src/net/azib/ipscan/gui/actions/BrowserLauncher.java b/src/net/azib/ipscan/gui/actions/BrowserLauncher.java index 157f222e..6413a576 100755 --- a/src/net/azib/ipscan/gui/actions/BrowserLauncher.java +++ b/src/net/azib/ipscan/gui/actions/BrowserLauncher.java @@ -5,6 +5,7 @@ package net.azib.ipscan.gui.actions; import java.lang.reflect.Method; +import net.azib.ipscan.config.Platform; import net.azib.ipscan.gui.UserErrorException; /** @@ -20,14 +21,12 @@ public class BrowserLauncher { * @param url */ public static void openURL(String url) { - String osName = System.getProperty("os.name"); - try { - if (osName.startsWith("Windows")) { + if (Platform.WINDOWS) { Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url); } else - if (osName.startsWith("Mac OS")) { + if (Platform.MAC_OS) { Class fileMgr = Class.forName("com.apple.eio.FileManager"); Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] { String.class }); openURL.invoke(null, new Object[] { url }); diff --git a/src/net/azib/ipscan/gui/actions/TerminalLauncher.java b/src/net/azib/ipscan/gui/actions/TerminalLauncher.java index d4bb1236..1e30e18f 100755 --- a/src/net/azib/ipscan/gui/actions/TerminalLauncher.java +++ b/src/net/azib/ipscan/gui/actions/TerminalLauncher.java @@ -8,6 +8,7 @@ import java.io.FileWriter; import java.util.logging.Level; import java.util.logging.Logger; +import net.azib.ipscan.config.Platform; import net.azib.ipscan.gui.UserErrorException; /** @@ -26,10 +27,9 @@ public class TerminalLauncher { * @param workingDir the working directory (or null) */ public static void launchInTerminal(String execString, File workingDir) { - String osName = System.getProperty("os.name"); try { - if (osName.startsWith("Windows")) { + if (Platform.WINDOWS) { // generate a command file :-) File batFile = File.createTempFile("launch", ".cmd"); batFile.deleteOnExit();