package uk.co.patrickhaston.mars;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class MarsMenuBar extends JMenuBar 
{
  private MarsFrame theFrame = null;
  JMenu menuFile = new JMenu();
  JMenuItem menuFileSave = new JMenuItem();
  JMenuItem menuFileNew = new JMenuItem();
  JMenuItem menuFileOpen = new JMenuItem();
  JMenuItem menuFileExit = new JMenuItem();
  JMenu menuHelp = new JMenu();
  JMenuItem menuHelpMarsPedia = new JMenuItem();
  JMenuItem menuHelpAbout = new JMenuItem();
  JMenu menuView = new JMenu();
  JMenuItem menuViewZoomIn = new JMenuItem();
  JMenuItem menuViewZoomOut = new JMenuItem();
  JMenuItem menuViewNorth = new JMenuItem();
  JMenuItem menuViewSouth = new JMenuItem();
  JMenuItem menuViewEast = new JMenuItem();
  JMenuItem menuViewWest = new JMenuItem();
  JMenuItem menuFileSaveAs = new JMenuItem();
  JMenuItem menuViewInfo = new JMenuItem();
  
  
  public MarsMenuBar(MarsFrame frame)
  {
    theFrame = frame;
    init();
  }
  
  private void init()
  {
    // Create Menu structure
    // File menu
    menuFile.setText("File");
    menuFileNew.setText("New");
    menuFileNew.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.fileNew_ActionPerformed(e);
      }
    });
    menuFileOpen.setText("Open");
    menuFileOpen.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.fileOpen_ActionPerformed(e);
      }
    });
    menuFileSave.setText("Save");
    menuFileSave.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.fileSave_ActionPerformed(e);
      }
    });
    menuFileSaveAs.setText("Save As");
    menuFileSaveAs.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.fileSaveAs_ActionPerformed(e);
      }
    });
    menuFileExit.setText("Exit");
    menuFileExit.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.fileExit_ActionPerformed(e);
      }
    });
    
    // Help menu
    menuHelp.setText("Help");
    menuHelpMarsPedia.setText("MarsPedia");
    menuHelpMarsPedia.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.showReport(MarsReport.MARSPEDIA_REPORT, 1);
      }
    });
    menuHelpAbout.setText("About");
    menuHelpAbout.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.helpAbout_ActionPerformed(e);
      }
    });
    menuView.setText("View");
    menuViewZoomIn.setText("Zoom In");
    menuViewZoomIn.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.viewZoomIn_ActionPerformed(e);
      }
    });
    menuViewZoomOut.setText("Zoom Out");
    menuViewZoomOut.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.viewZoomOut_ActionPerformed(e);
      }
    });
    menuFile.add(menuFileNew);
    menuFile.add(menuFileOpen);
    menuFile.add(menuFileSave);
    menuFile.add(menuFileSaveAs);
    menuFile.addSeparator();
    menuFile.add(menuFileExit);
    add(menuFile);
    add(menuView);
    menuHelp.add(menuHelpMarsPedia);
    menuHelp.add(menuHelpAbout);
    add(menuHelp);
    menuViewWest.setText("West");
    menuViewWest.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.panWest_ActionPerformed(e);
      }
    });
    menuViewEast.setText("East");
    menuViewEast.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.panEast_ActionPerformed(e);
      }
    });
    menuViewSouth.setText("South");
    menuViewSouth.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.panSouth_ActionPerformed(e);
      }
    });
    menuViewNorth.setText("North");
    menuViewNorth.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.panNorth_ActionPerformed(e);
      }
    });
    menuViewInfo.setText("Info");
    menuViewInfo.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        theFrame.viewInfo_ActionPerformed(e);
      }
    });
    
    menuView.add(menuViewZoomIn);
    menuView.add(menuViewZoomOut);
    menuView.addSeparator();
    menuView.add(menuViewNorth);
    menuView.add(menuViewEast);
    menuView.add(menuViewSouth);
    menuView.add(menuViewWest);
    menuView.addSeparator();
    menuView.add(menuViewInfo);
  }

}
