package eu.telecom.sudparis.dpwsim.view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import eu.telecom.sudparis.dpwsim.upgrade.MediatorComponent;
import eu.telecom.sudparis.dpwsim.view.tools.SwingUtilities;
/**
* Main Menu
*
* @author Son Han
* @date 2013/09/20
* @version 2.0
*/
@SuppressWarnings("serial")
public class MainMenu extends JMenuBar {
public final static String MENU_NEW = "New";
public final static String MENU_NEW_SPACE = "Space";
public final static String MENU_NEW_STANDALONE_DEVICE = "Standalone Device";
public final static String MENU_OPEN = "Open";
public final static String MENU_SAVE = "Save";
public final static String MENU_CLEAR = "Remove All";
public final static String MENU_START_ALL = "Start All";
public final static String MENU_STOP_ALL = "Stop All";
public final static String MENU_EXIT = "Quit";
public final static String MENU_HELP = "Help Contents";
public final static String MENU_ABOUT = "About";
public final static String MENU_ADD_DEVICE = "Add New";
public final static String MENU_ADD_FILE = "Add From File";
public static final String MENU_ADD_PHYSICAL = "Generate from Physical Device";
public final static String MENU_ADD_PREDEFINED = "Add Predefined";
public final static String MENU_ADD_LIGHTBULB = "Light Bulb";
public final static String MENU_ADD_COFFEE_MAKER = "Coffee Maker";
private JMenu fileMenu = new JMenu("File");
private JMenu deviceMenu = new JMenu("Device");
private JMenu helpMenu = new JMenu("Help");
public MainMenu(ActionListener actionListener){
MediatorComponent.getInstance().setMainMenu(this);
JMenu subMenu;
JMenuItem menuItem;
ImageIcon icon;
/* File Menu: New, Open, Save, Clear Devices, |, Quit */
fileMenu = new JMenu("File");
// New submenu: New Space, New Device
icon = SwingUtilities.createImageIcon("/res/icon_new.png", 24);
subMenu = new JMenu(MENU_NEW);
subMenu.setIcon(icon);
menuItem = new JMenuItem(MENU_NEW_SPACE);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
subMenu.add(menuItem);
menuItem = new JMenuItem(MENU_NEW_STANDALONE_DEVICE);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
subMenu.add(menuItem);
fileMenu.add(subMenu);
// Open menu item
icon = SwingUtilities.createImageIcon("/res/icon_open.png", 24);
menuItem = new JMenuItem(MENU_OPEN, icon);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
fileMenu.add(menuItem);
// Save menu item
icon = SwingUtilities.createImageIcon("/res/icon_save.png", 24);
menuItem = new JMenuItem(MENU_SAVE, icon);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
fileMenu.add(menuItem);
fileMenu.addSeparator();
// Quit menu item
icon = SwingUtilities.createImageIcon("/res/icon_exit.png", 24);
menuItem = new JMenuItem(MENU_EXIT, icon);
menuItem.addActionListener(actionListener);
fileMenu.add(menuItem);
this.add(fileMenu);
/* Device menu: Add New, Add Predefined: */
// Add new device
icon = SwingUtilities.createImageIcon("/res/icon_add.png", 24);
menuItem = new JMenuItem(MENU_ADD_DEVICE, icon);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
deviceMenu.add(menuItem);
// Add predefined device
subMenu = new JMenu(MENU_ADD_PREDEFINED);
icon = SwingUtilities.createImageIcon("/res/icon_light_bulb.png", 24);
menuItem = new JMenuItem(MENU_ADD_LIGHTBULB, icon);
menuItem.addActionListener(actionListener);
subMenu.add(menuItem);
icon = SwingUtilities.createImageIcon("/res/icon_coffee_maker.png", 24);
menuItem = new JMenuItem(MENU_ADD_COFFEE_MAKER, icon);
menuItem.addActionListener(actionListener);
subMenu.add(menuItem);
deviceMenu.add(subMenu);
// Add from file
icon = SwingUtilities.createImageIcon("/res/icon_open.png", 24);
menuItem = new JMenuItem(MENU_ADD_FILE, icon);
menuItem.addActionListener(actionListener);
deviceMenu.add(menuItem);
// Generate from physical device
icon = SwingUtilities.createImageIcon("/res/icon_physical.png", 24);
menuItem = new JMenuItem(MENU_ADD_PHYSICAL, icon);
menuItem.addActionListener(actionListener);
deviceMenu.add(menuItem);
deviceMenu.addSeparator();
// Clear devices menu item
icon = SwingUtilities.createImageIcon("/res/icon_clear.png", 24);
menuItem = new JMenuItem(MENU_CLEAR, icon);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
deviceMenu.add(menuItem);
icon = SwingUtilities.createImageIcon("/res/icon_start_all.png", 24);
menuItem = new JMenuItem(MENU_START_ALL, icon);
//menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
deviceMenu.add(menuItem);
icon = SwingUtilities.createImageIcon("/res/icon_stop_all.png", 24);
menuItem = new JMenuItem(MENU_STOP_ALL, icon);
//menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
menuItem.addActionListener(actionListener);
deviceMenu.add(menuItem);
this.add(deviceMenu);
/* Help menu: Help contents, About */
icon = SwingUtilities.createImageIcon("/res/icon_help.png", 24);
menuItem = new JMenuItem(MENU_HELP, icon);
menuItem.addActionListener(actionListener);
helpMenu.add(menuItem);
icon = SwingUtilities.createImageIcon("/res/icon_about.png", 24);
menuItem = new JMenuItem(MENU_ABOUT);
menuItem.addActionListener(actionListener);
helpMenu.add(menuItem);
this.add(helpMenu);
}
public void setMode(int status){
if (status == DPWSimMainWindow.MODE_START){
fileMenu.getItem(0).setEnabled(true);
fileMenu.getItem(1).setEnabled(true);
fileMenu.getItem(2).setEnabled(false);
fileMenu.getItem(3).setEnabled(true);
deviceMenu.setEnabled(false);
} else if (status == DPWSimMainWindow.MODE_SPACE_NEW){
fileMenu.getItem(0).setEnabled(true);
fileMenu.getItem(1).setEnabled(true);
fileMenu.getItem(2).setEnabled(false);
fileMenu.getItem(4).setEnabled(true);
deviceMenu.setEnabled(false);
} else if (status == DPWSimMainWindow.MODE_DEVICE_CREATED){
fileMenu.getItem(2).setEnabled(true);
deviceMenu.setEnabled(false);
} else if (status == DPWSimMainWindow.MODE_SPACE_CREATED){
fileMenu.getItem(2).setEnabled(true);
deviceMenu.setEnabled(true);
}
}
}