Butify MainMenu 2

This commit is contained in:
englishman 2015-08-18 18:08:32 -04:00 committed by Anton Keks
parent ecc07c3bed
commit 2fda94028d
12 changed files with 100 additions and 72 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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