Package ch.rakudave.jnetmap.view.components

Source Code of ch.rakudave.jnetmap.view.components.MenuBar

package ch.rakudave.jnetmap.view.components;

import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileNameExtensionFilter;

import ch.rakudave.jnetmap.controller.Actions;
import ch.rakudave.jnetmap.controller.Controller;
import ch.rakudave.jnetmap.util.IO;
import ch.rakudave.jnetmap.util.Icons;
import ch.rakudave.jnetmap.util.Lang;
import ch.rakudave.jnetmap.util.SwingHelper;
import ch.rakudave.jnetmap.view.ISidebar;
import ch.rakudave.jnetmap.view.IView;
import ch.rakudave.jnetmap.view.properties.MapProperties;

/**
* @author rakudave
*/
public class MenuBar extends JMenuBar {
  private static final long serialVersionUID = -1861842226695622060L;
  private IView parent;
  private JMenuItem i;

  public MenuBar(IView parent) {
    super();
    this.parent = parent;
    add(createFileMenu());
    add(createEditMenu());
    add(createViewMenu());
    add(createToolMenu());
    add(createHelpMenu());
  }

  @SuppressWarnings("serial")
  private JMenu createFileMenu() {
    JMenu menu = new JMenu(Lang.getNoHTML("menu.file"));
    // New
      i = new JMenuItem(Actions.newMap(Lang.getNoHTML("menu.file.new"))); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK));
    // Open
      i = new JMenuItem(Actions.open(Lang.getNoHTML("menu.file.open"))); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
    menu.add(new JSeparator());
    // Save
      i = new JMenuItem(Actions.save()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));
    // Save As
      i = new JMenuItem(Actions.saveAs()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
    // Export
      i = new JMenuItem(new AbstractAction(Lang.getNoHTML("menu.file.exportimg"), Icons.get("export-img")) {
        @Override
        public void actionPerformed(ActionEvent e) {
          File f = SwingHelper.saveDialog(null, new FileNameExtensionFilter("Portable Network Graphics", "png"));
          if (f == null || TabPanel.getCurrentTab() == null) return;
          IO.exportImage(TabPanel.getCurrentTab().vv, f);
        }
      }); menu.add(i);
    // Properties
    menu.add(new JSeparator());
      i = new JMenuItem(new AbstractAction(Lang.getNoHTML("menu.file.properties"), Icons.get("properties")) {
        @Override
        public void actionPerformed(ActionEvent e) {
          if (Controller.getCurrentMap() == null) return;
          new MapProperties((Frame) Controller.getView(), Controller.getCurrentMap());
        }
      }); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
    menu.add(new JSeparator());
    // Quit
      i = new JMenuItem(Actions.quit(Lang.getNoHTML("menu.file.quit"))); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_DOWN_MASK));
    return menu;
  }

  private JMenu createEditMenu() {
    JMenu menu = new JMenu(Lang.getNoHTML("menu.edit"));
    // Undo/Redo
      i = new JMenuItem(Actions.undo()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK));
      i = new JMenuItem(Actions.redo()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_DOWN_MASK));
    menu.add(new JSeparator());
    // GraphMouse mode selection
      i = new JMenuItem(TabPanel.getPickingModeSetter()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK));
      i = new JMenuItem(TabPanel.getEditingModeSetter()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK));
      i = new JMenuItem(TabPanel.getTransformingModeSetter()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK));
    menu.add(new JSeparator());
    // Preferences
      i = new JMenuItem(Actions.preferences(Lang.getNoHTML("menu.edit.preferences"))); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK));
    return menu;
  }

  private JMenu createViewMenu() {
    JMenu menu = new JMenu(Lang.getNoHTML("menu.view"));
    // Refresh
      i = new JMenuItem(Actions.refresh()); menu.add(i);
      i.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK));
    // Layouts
      JMenu sub = new JMenu(Lang.get("menu.view.layout"));
        for (Action a : TabPanel.getLayoutTransformers()) {
          sub.add(a);
        }
      menu.add(sub);
    menu.add(new JSeparator());
    // Toggle Sidebar
      if (parent instanceof ISidebar) {
        final JMenuItem toggleSidebar = new JCheckBoxMenuItem(Lang.getNoHTML("menu.view.sidebar"), ((ISidebar)parent).isSidebarVisible());
        toggleSidebar.addActionListener(new ActionListener() {
          @Override public void actionPerformed(ActionEvent e) {((ISidebar)parent).setSidebarVisible(toggleSidebar.isSelected());}
        });  menu.add(toggleSidebar);
      }
    // Toggle Toolbar
      final JMenuItem toggleToolbar = new JCheckBoxMenuItem(Lang.getNoHTML("menu.view.toolbar"), ToolBar.getInstance().isVisible());
      toggleToolbar.addActionListener(new ActionListener() {
        @Override public void actionPerformed(ActionEvent e) {ToolBar.getInstance().setVisible(toggleToolbar.isSelected());}
      });  menu.add(toggleToolbar);
    return menu;
  }

  @SuppressWarnings("serial")
  private JMenu createToolMenu() {
    JMenu menu = new JMenu(Lang.getNoHTML("menu.tools"));
      menu.add(new JMenuItem(new AbstractAction(Lang.getNoHTML("port.scanner"), Icons.get("find")) {
        @Override
        public void actionPerformed(ActionEvent e) {new PortScanner((Frame) parent, "127.0.0.1");}
      }));
      menu.add(new JMenuItem(new AbstractAction(Lang.getNoHTML("network.scanner"), Icons.get("net")) {
        @Override
        public void actionPerformed(ActionEvent e) {
          if (Controller.getCurrentMap() == null) Actions.newMap("").actionPerformed(null);
          new NetworkScanner((Frame) parent, Controller.getCurrentMap());
        }
      }));
    return menu;
  }

  @SuppressWarnings("serial")
  private JMenu createHelpMenu() {
    JMenu menu = new JMenu(Lang.getNoHTML("menu.help"));
      menu.add(new JMenuItem(Actions.viewDoc(Lang.getNoHTML("menu.help.doc"))));
      menu.add(new JSeparator());
      menu.add(new JMenuItem(Actions.viewWebsite()));
      menu.add(new JMenuItem(Actions.reportBug()));
      menu.add(new JMenuItem(Actions.requestFeature()));
      menu.add(new JMenuItem(Actions.contactDeveloper()));
      menu.add(new JSeparator());
      menu.add(new JMenuItem(new AbstractAction(Lang.getNoHTML("about"), Icons.get("info")) {
        @Override
        public void actionPerformed(ActionEvent e) {
          new AboutDialog((Frame) Controller.getView());
        }
      }));
    return menu;
  }
}
TOP

Related Classes of ch.rakudave.jnetmap.view.components.MenuBar

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.