From 2fda94028d76e8cf9c8e0ff4681c250cd91aeadd Mon Sep 17 00:00:00 2001 From: englishman Date: Tue, 18 Aug 2015 18:08:32 -0400 Subject: [PATCH] Butify MainMenu 2 --- src/net/azib/ipscan/gui/MainMenu.java | 17 ++++---- .../azib/ipscan/gui/menu/AbstractMenu.java | 38 ++-------------- src/net/azib/ipscan/gui/menu/ColumnsMenu.java | 2 +- .../azib/ipscan/gui/menu/CommandsMenu.java | 9 +++- .../azib/ipscan/gui/menu/ExtendableMenu.java | 43 +++++++++++++++++++ .../azib/ipscan/gui/menu/FavoritesMenu.java | 9 ++-- src/net/azib/ipscan/gui/menu/GotoMenu.java | 10 +++-- src/net/azib/ipscan/gui/menu/HelpMenu.java | 15 +++---- src/net/azib/ipscan/gui/menu/OpenersMenu.java | 7 ++- .../ipscan/gui/menu/ResultsContextMenu.java | 2 +- src/net/azib/ipscan/gui/menu/ScanMenu.java | 10 +++-- src/net/azib/ipscan/gui/menu/ToolsMenu.java | 10 +++-- 12 files changed, 100 insertions(+), 72 deletions(-) create mode 100644 src/net/azib/ipscan/gui/menu/ExtendableMenu.java diff --git a/src/net/azib/ipscan/gui/MainMenu.java b/src/net/azib/ipscan/gui/MainMenu.java index e8e2b29b..060800d4 100644 --- a/src/net/azib/ipscan/gui/MainMenu.java +++ b/src/net/azib/ipscan/gui/MainMenu.java @@ -40,21 +40,20 @@ public class MainMenu { parent.setMenuBar(mainMenu); - addMenuItem(mainMenu, scanMenu, "menu.scan"); - addMenuItem(mainMenu, gotoMenu, "menu.goto"); - addMenuItem(mainMenu, commandsMenu, "menu.commands"); - addMenuItem(mainMenu, favoritesMenu, "menu.favorites"); - addMenuItem(mainMenu, toolsMenu, "menu.tools"); - addMenuItem(mainMenu, helpMenu, "menu.help"); + addMenuItem(mainMenu, scanMenu); + addMenuItem(mainMenu, gotoMenu); + addMenuItem(mainMenu, commandsMenu); + addMenuItem(mainMenu, favoritesMenu); + addMenuItem(mainMenu, toolsMenu); + addMenuItem(mainMenu, helpMenu); stateMachine.addTransitionListener(new MenuEnablerDisabler(mainMenu)); stateMachine.addTransitionListener(new MenuEnablerDisabler(resultsContextMenu)); } - private void addMenuItem(Menu mainMenu, Menu menu, String name) { + private void addMenuItem(Menu mainMenu, AbstractMenu menu) { MenuItem menuItem = new MenuItem(mainMenu, SWT.CASCADE); - menuItem.setText(Labels.getLabel(name)); - + menuItem.setText(Labels.getLabel(menu.getId())); menuItem.setMenu(menu); } diff --git a/src/net/azib/ipscan/gui/menu/AbstractMenu.java b/src/net/azib/ipscan/gui/menu/AbstractMenu.java index 01c19c07..58279a58 100644 --- a/src/net/azib/ipscan/gui/menu/AbstractMenu.java +++ b/src/net/azib/ipscan/gui/menu/AbstractMenu.java @@ -1,43 +1,13 @@ package net.azib.ipscan.gui.menu; -import net.azib.ipscan.config.Labels; import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; -abstract class AbstractMenu extends Menu { +public abstract class AbstractMenu extends ExtendableMenu { - public AbstractMenu(Shell parent, int style) { - super(parent, style); + public AbstractMenu(Shell parent) { + super(parent, SWT.DROP_DOWN); } - static MenuItem initMenuItem(Menu parent, String label, String acceleratorText, Integer accelerator, Listener listener) { - return initMenuItem(parent, label, acceleratorText, accelerator, listener, false); - } - - static MenuItem initMenuItem(Menu parent, String label, String acceleratorText, Integer accelerator, Listener listener, boolean disableDuringScanning) { - MenuItem menuItem = new MenuItem(parent, label == null ? SWT.SEPARATOR : SWT.PUSH); - - if (label != null) - menuItem.setText(Labels.getLabel(label) + (acceleratorText != null ? "\t" + acceleratorText : "")); - - if (accelerator != null) - menuItem.setAccelerator(accelerator); - - if (listener != null) - menuItem.addListener(SWT.Selection, listener); - else - menuItem.setEnabled(false); - - if (disableDuringScanning) { - menuItem.setData("disableDuringScanning", true); - } - - return menuItem; - } - - @Override - protected void checkSubclass() { } // allow extending of Menu class + public abstract String getId(); } diff --git a/src/net/azib/ipscan/gui/menu/ColumnsMenu.java b/src/net/azib/ipscan/gui/menu/ColumnsMenu.java index e685529a..15a72ce0 100644 --- a/src/net/azib/ipscan/gui/menu/ColumnsMenu.java +++ b/src/net/azib/ipscan/gui/menu/ColumnsMenu.java @@ -12,7 +12,7 @@ import javax.inject.Singleton; * This is the menu when clicking on a column header. */ @Singleton -public class ColumnsMenu extends AbstractMenu { +public class ColumnsMenu extends ExtendableMenu { @Inject public ColumnsMenu(Shell parent, diff --git a/src/net/azib/ipscan/gui/menu/CommandsMenu.java b/src/net/azib/ipscan/gui/menu/CommandsMenu.java index 3b39bd50..1f6fed97 100644 --- a/src/net/azib/ipscan/gui/menu/CommandsMenu.java +++ b/src/net/azib/ipscan/gui/menu/CommandsMenu.java @@ -22,7 +22,7 @@ public class CommandsMenu extends AbstractMenu { CommandsMenuActions.CopyIPDetails copyIPDetails, OpenersMenu openersMenu) { - super(parent, SWT.DROP_DOWN); + super(parent); initMenuItem(this, "menu.commands.details", null, null, details); initMenuItem(this, null, null, null, null); @@ -34,9 +34,14 @@ public class CommandsMenu extends AbstractMenu { initMenuItem(this, null, null, null, null); MenuItem openersMenuItem = new MenuItem(this, SWT.CASCADE); - openersMenuItem.setText(Labels.getLabel("menu.commands.open")); + openersMenuItem.setText(Labels.getLabel(openersMenu.getId())); openersMenuItem.setMenu(openersMenu); // initMenuItem(subMenu, "menu.commands.show", null, initListener()); } + + @Override + public String getId() { + return "menu.commands"; + } } diff --git a/src/net/azib/ipscan/gui/menu/ExtendableMenu.java b/src/net/azib/ipscan/gui/menu/ExtendableMenu.java new file mode 100644 index 00000000..3048d1da --- /dev/null +++ b/src/net/azib/ipscan/gui/menu/ExtendableMenu.java @@ -0,0 +1,43 @@ +package net.azib.ipscan.gui.menu; + +import net.azib.ipscan.config.Labels; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.MenuItem; +import org.eclipse.swt.widgets.Shell; + +class ExtendableMenu extends Menu { + + public ExtendableMenu(Shell parent, int style) { + super(parent, style); + } + + static MenuItem initMenuItem(Menu parent, String label, String acceleratorText, Integer accelerator, Listener listener) { + return initMenuItem(parent, label, acceleratorText, accelerator, listener, false); + } + + static MenuItem initMenuItem(Menu parent, String label, String acceleratorText, Integer accelerator, Listener listener, boolean disableDuringScanning) { + MenuItem menuItem = new MenuItem(parent, label == null ? SWT.SEPARATOR : SWT.PUSH); + + if (label != null) + menuItem.setText(Labels.getLabel(label) + (acceleratorText != null ? "\t" + acceleratorText : "")); + + if (accelerator != null) + menuItem.setAccelerator(accelerator); + + if (listener != null) + menuItem.addListener(SWT.Selection, listener); + else + menuItem.setEnabled(false); + + if (disableDuringScanning) { + menuItem.setData("disableDuringScanning", true); + } + + return menuItem; + } + + @Override + protected void checkSubclass() { } // allow extending of Menu class +} diff --git a/src/net/azib/ipscan/gui/menu/FavoritesMenu.java b/src/net/azib/ipscan/gui/menu/FavoritesMenu.java index 3e0869c9..431ef15e 100644 --- a/src/net/azib/ipscan/gui/menu/FavoritesMenu.java +++ b/src/net/azib/ipscan/gui/menu/FavoritesMenu.java @@ -9,8 +9,6 @@ import javax.inject.Singleton; /** * FavoritesMenu wrapper for type-safety - * - * @author Andriy Kryvtsun */ @Singleton public class FavoritesMenu extends AbstractMenu { @@ -21,7 +19,7 @@ public class FavoritesMenu extends AbstractMenu { FavoritesMenuActions.Edit editListener, FavoritesMenuActions.ShowMenu showFavoritesMenuListener) { - super(parent, SWT.DROP_DOWN); + super(parent); initMenuItem(this, "menu.favorites.add", "Ctrl+D", SWT.MOD1 | 'D', addListener); initMenuItem(this, "menu.favorites.edit", null, null, editListener); @@ -29,4 +27,9 @@ public class FavoritesMenu extends AbstractMenu { addListener(SWT.Show, showFavoritesMenuListener); } + + @Override + public String getId() { + return "menu.favorites"; + } } diff --git a/src/net/azib/ipscan/gui/menu/GotoMenu.java b/src/net/azib/ipscan/gui/menu/GotoMenu.java index db899407..6c6e0acc 100644 --- a/src/net/azib/ipscan/gui/menu/GotoMenu.java +++ b/src/net/azib/ipscan/gui/menu/GotoMenu.java @@ -7,9 +7,6 @@ import org.eclipse.swt.widgets.Shell; import javax.inject.Inject; import javax.inject.Singleton; -/** - * @author Andriy Kryvtsun - */ @Singleton public class GotoMenu extends AbstractMenu { @@ -23,7 +20,7 @@ public class GotoMenu extends AbstractMenu { GotoMenuActions.PrevDeadHost prevDeadHost, GotoMenuActions.Find find) { - super(parent, SWT.DROP_DOWN); + super(parent); initMenuItem(this, "menu.goto.next.aliveHost", "Ctrl+H", SWT.MOD1 | 'H', nextAliveHost); initMenuItem(this, "menu.goto.next.openPort", "Ctrl+J", SWT.MOD1 | 'J', nextHostWithInfo); @@ -35,4 +32,9 @@ public class GotoMenu extends AbstractMenu { initMenuItem(this, null, null, null, null); initMenuItem(this, "menu.goto.find", "Ctrl+F", SWT.MOD1 | 'F', find); } + + @Override + public String getId() { + return "menu.goto"; + } } diff --git a/src/net/azib/ipscan/gui/menu/HelpMenu.java b/src/net/azib/ipscan/gui/menu/HelpMenu.java index 10ffde6b..ac9e12f9 100644 --- a/src/net/azib/ipscan/gui/menu/HelpMenu.java +++ b/src/net/azib/ipscan/gui/menu/HelpMenu.java @@ -1,21 +1,13 @@ package net.azib.ipscan.gui.menu; -import dagger.Module; -import dagger.Provides; import net.azib.ipscan.config.Platform; import net.azib.ipscan.gui.actions.HelpMenuActions; import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Decorations; -import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Shell; import javax.inject.Inject; -import javax.inject.Named; import javax.inject.Singleton; -/** - * @author Andriy Kryvtsun - */ @Singleton public class HelpMenu extends AbstractMenu { @@ -29,7 +21,7 @@ public class HelpMenu extends AbstractMenu { HelpMenuActions.CheckVersion checkVersion, HelpMenuActions.About about) { - super(parent, SWT.DROP_DOWN); + super(parent); initMenuItem(this, "menu.help.gettingStarted", !Platform.MAC_OS ? "F1" : null, Platform.MAC_OS ? SWT.HELP : SWT.F1, gettingStarted); initMenuItem(this, null, null, null, null); @@ -47,4 +39,9 @@ public class HelpMenu extends AbstractMenu { initMenuItem(this, "menu.help.about", null, null, about); } } + + @Override + public String getId() { + return "menu.help"; + } } diff --git a/src/net/azib/ipscan/gui/menu/OpenersMenu.java b/src/net/azib/ipscan/gui/menu/OpenersMenu.java index e448072b..135c6640 100644 --- a/src/net/azib/ipscan/gui/menu/OpenersMenu.java +++ b/src/net/azib/ipscan/gui/menu/OpenersMenu.java @@ -19,7 +19,7 @@ public class OpenersMenu extends AbstractMenu { CommandsMenuActions.EditOpeners editOpenersListener, CommandsMenuActions.ShowOpenersMenu showOpenersMenuListener) { - super(parent, SWT.DROP_DOWN); + super(parent); initMenuItem(this, "menu.commands.open.edit", null, null, editOpenersListener); initMenuItem(this, null, null, null, null); @@ -31,4 +31,9 @@ public class OpenersMenu extends AbstractMenu { e.widget = this; showOpenersMenuListener.handleEvent(e); } + + @Override + public String getId() { + return "menu.commands.open"; + } } diff --git a/src/net/azib/ipscan/gui/menu/ResultsContextMenu.java b/src/net/azib/ipscan/gui/menu/ResultsContextMenu.java index 0c38ade3..88a95976 100644 --- a/src/net/azib/ipscan/gui/menu/ResultsContextMenu.java +++ b/src/net/azib/ipscan/gui/menu/ResultsContextMenu.java @@ -10,7 +10,7 @@ import javax.inject.Singleton; * CommandsMenu wrapper for type-safety */ @Singleton -public class ResultsContextMenu extends AbstractMenu { +public class ResultsContextMenu extends ExtendableMenu { @Inject public ResultsContextMenu(Shell parent) { diff --git a/src/net/azib/ipscan/gui/menu/ScanMenu.java b/src/net/azib/ipscan/gui/menu/ScanMenu.java index 85b36d08..fa5e85ff 100644 --- a/src/net/azib/ipscan/gui/menu/ScanMenu.java +++ b/src/net/azib/ipscan/gui/menu/ScanMenu.java @@ -8,9 +8,6 @@ import org.eclipse.swt.widgets.Shell; import javax.inject.Inject; import javax.inject.Singleton; -/** - * @author Andriy Kryvtsun - */ @Singleton public class ScanMenu extends AbstractMenu { @@ -21,7 +18,7 @@ public class ScanMenu extends AbstractMenu { ScanMenuActions.SaveSelection saveSelection, ScanMenuActions.Quit quit) { - super(parent, SWT.DROP_DOWN); + super(parent); // initMenuItem(subMenu, "menu.scan.newWindow", "Ctrl+N", new Integer(SWT.MOD1 | 'N'), initListener(FileActions.NewWindow.class)); // initMenuItem(subMenu, null, null, null, null); @@ -36,4 +33,9 @@ public class ScanMenu extends AbstractMenu { initMenuItem(this, "menu.scan.quit", "Ctrl+Q", SWT.MOD1 | 'Q', quit); } } + + @Override + public String getId() { + return "menu.scan"; + } } diff --git a/src/net/azib/ipscan/gui/menu/ToolsMenu.java b/src/net/azib/ipscan/gui/menu/ToolsMenu.java index 2580a3c4..3939ff25 100644 --- a/src/net/azib/ipscan/gui/menu/ToolsMenu.java +++ b/src/net/azib/ipscan/gui/menu/ToolsMenu.java @@ -11,9 +11,6 @@ import org.eclipse.swt.widgets.Shell; import javax.inject.Inject; import javax.inject.Singleton; -/** - * @author Andriy Kryvtsun - */ @Singleton public class ToolsMenu extends AbstractMenu { @@ -28,7 +25,7 @@ public class ToolsMenu extends AbstractMenu { ToolsActions.SelectWithoutPorts selectWithoutPorts, ToolsActions.SelectInvert selectInvert) { - super(parent, SWT.DROP_DOWN); + super(parent); initMenuItem(this, "menu.tools.preferences", "Ctrl+Shift+P", SWT.MOD1 | (Platform.MAC_OS ? ',' : SWT.MOD2 | 'P'), preferences, true); initMenuItem(this, "menu.tools.fetchers", "Ctrl+Shift+O", SWT.MOD1 | SWT.MOD2 | (Platform.MAC_OS ? ',' : 'O'), chooseFetchers, true); @@ -53,4 +50,9 @@ public class ToolsMenu extends AbstractMenu { return subMenu; } + + @Override + public String getId() { + return "menu.tools"; + } }