package de.javasoft.synthetica.democenter.examples.xmenu;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.UIManager;

import de.javasoft.swing.XMenu;
import de.javasoft.swing.XMenuBar;
import de.javasoft.swing.XMenuItem;
import de.javasoft.swing.XSubmenu;
import de.javasoft.swing.XSubmenuItem;

/**
 * Demonstrates basic usage of the XMenu components.
 */
@SuppressWarnings("serial")
public class SimpleXMenu extends JFrame
{
  public SimpleXMenu()
  {
    super("Simple XMenu Demo");

//@highlight
    //create and add the menuBar
    add(createMenuBar(), BorderLayout.NORTH);
//@/highlight
    
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(600, 400);
    //center
    setLocationRelativeTo(null);
    setVisible(true);
  }

  public JMenuBar createMenuBar()
  {
//@highlight
    //use XMenuBar for XMenus
    XMenuBar menuBar = new XMenuBar();
//@/highlight
    menuBar.add(createFileMenu());
    menuBar.add(createHelpMenu());
    return menuBar;
  }
    
  private XMenu createFileMenu()
  {
//@highlight
    XMenu xmenu = new XMenu("File");
    xmenu.setIcon(new ImageIcon(getClass().getResource("/resources/icons/file.gif")));
    
    XSubmenu xs1 = new XSubmenu("New");
    xs1.add(new XSubmenuItem("New Image..."));
    xs1.add(new XSubmenuItem("New Document..."));
    xs1.add(new XSubmenuItem("New Calculation..."));

    xmenu.add(xs1);
    xmenu.addSeparator();
//@/highlight
    
    XSubmenu xs2 = new XSubmenu("Open");
    xs2.add(new XSubmenuItem("Open Image File"));
    xs2.add(new XSubmenuItem("Open Browser"));
    xs2.add(new XSubmenuItem("Open Textdocument"));
    xs2.addSeparator();
    xs2.add(new XSubmenuItem("Import..."));
    
    xmenu.add(xs2);
    xmenu.addSeparator();

    XSubmenu xs3 = new XSubmenu("Save");
    xs3.add(new XSubmenuItem("Save open file"));
    xs3.add(new XSubmenuItem("Save as Image"));
    xs3.add(new XSubmenuItem("Save for Web"));
    xs3.addSeparator();
    xs3.add(new XSubmenuItem("Save as..."));
    xs3.addSeparator();
    xs3.add(new XSubmenuItem("Export..."));
    
    xmenu.add(xs3);
    xmenu.addSeparator();    
    xmenu.add(new XMenuItem("Exit"));
    return xmenu;
  }
  
  private XMenu createHelpMenu()
  {
    XMenu xmenu = new XMenu("Help");
    xmenu.setIcon(new ImageIcon(getClass().getResource("/resources/icons/tip.png")));
    xmenu.add(new XMenuItem("About"));
    xmenu.addSeparator();
    xmenu.add(new XMenuItem("Online Help"));
    xmenu.addSeparator();
    xmenu.add(new XMenuItem("Updates..."));
    return xmenu;
  }
    
  /**
   * Static main method for application startup. 
   */
  public static void main(String[] args)
  {
    EventQueue.invokeLater(new Runnable()
    {
      public void run()
      {
        try
        {
          UIManager.setLookAndFeel("de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel");
          new SimpleXMenu();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }  
}
