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

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

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

import de.javasoft.swing.SimpleDropDownButton;

/**
 * A simple SimpleDropDownButton application to demonstrate and explain  
 * basic functionality.
 */
@SuppressWarnings("serial")
public class SimpleSimpleDropDownButton extends JFrame
{
  public SimpleSimpleDropDownButton()
  {
    super("Simple SimpleDropDownButton");

    //create and add the toolbar
    JToolBar toolBar = new JToolBar();
    createAndAddButtons(toolBar);
    add(toolBar, BorderLayout.NORTH);
    
    //create and add the buttonpanel
    JPanel panel = new JPanel();
    createAndAddButtons(panel);
    add(panel);
    
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    pack();
    //center
    setLocationRelativeTo(null);
    setVisible(true);
  }

  /**
   * Creates components and adds them to the container.
   */
  private void createAndAddButtons(Container container)
  {
    Icon icon = new ImageIcon(getClass().getResource("/de/javasoft/synthetica/democenter/examples/dropdownbutton/jyloo.png"));

//@highlight
    //create a DropDownButton with icon
    SimpleDropDownButton button1 = new SimpleDropDownButton("Small arrow");
    button1.setIcon(icon);
    addMenuItems(button1.getPopupMenu());

    //create a DropDownButton with icon and a large arrow icon
    SimpleDropDownButton button2 = new SimpleDropDownButton("Bigger arrow");
    button2.setIcon(icon);    
    addMenuItems(button2.getPopupMenu());
    button2.setUseSmallArrowIcon(false);
    button2.setArrowIconSpace(0);
    button2.setHorizontalTextPosition(SwingConstants.CENTER);
    button2.setVerticalTextPosition(SwingConstants.BOTTOM);

    //create a DropDownButton with custom arrow icon and additional arrow icon space 
    SimpleDropDownButton button3 = new SimpleDropDownButton("Custom");
    button3.setIcon(icon);    
    addMenuItems(button3.getPopupMenu());
    Icon arrowIcon = new ImageIcon(getClass().getResource("/resources/icons/arrowDown.png"));
    button3.setArrowIcon(arrowIcon);
    button3.setArrowIconSpace(15);

    SimpleDropDownButton button4 = new SimpleDropDownButton("Bottom arrow");
    button4.setIcon(icon);
    button4.setHorizontalArrowPosition(SwingConstants.CENTER);
    button4.setVerticalArrowPosition(SwingConstants.BOTTOM);
    addMenuItems(button4.getPopupMenu());    
//@/highlight
    
    container.add(button1);
    container.add(button2);
    container.add(button3);
    container.add(button4);
  }
  
  /**
   * Add menuItems to the specified popup menu. 
   */
  private void addMenuItems(JPopupMenu popupMenu)
  { 
    popupMenu.add(new JMenuItem("My first popup menu entry"));
    popupMenu.add(new JMenuItem("Second menu item"));
    popupMenu.add(new JMenuItem("MenuItem 3"));
  }
  
  /**
   * 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 SimpleSimpleDropDownButton();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }  
}
