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
This commit is contained in:
angryziber 2006-12-27 22:56:11 +00:00
parent 4ab9b6386b
commit eeece5bb01
7 changed files with 94 additions and 80 deletions

View File

@ -10,17 +10,10 @@
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="ipscan/ext/rocksaw/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/swt/swt-win32.jar" sourcepath="/swt/src">
<attributes>
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="swt/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/swt/swt-gtk.jar" sourcepath="/swt/src">
<attributes>
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="swt/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/swt/swt-win32.jar" sourcepath="/swt/src-win32"/>
<classpathentry kind="lib" path="/swt/swt-gtk.jar" sourcepath="/swt/src-gtk"/>
<classpathentry kind="lib" path="ext/picocontainer/picocontainer-1.0.jar" sourcepath="ext/picocontainer/src"/>
<classpathentry combineaccessrules="false" kind="src" path="/swt"/>
<classpathentry kind="lib" path="/swt/swt-mac.jar" sourcepath="/swt/src-mac"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

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

View File

@ -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");
}

View File

@ -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";
}

View File

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

View File

@ -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 });

View File

@ -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();