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

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

import javax.swing.Box;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

import de.javasoft.swing.SimpleDropDownButton;
import de.javasoft.swing.ToolBar;

/**
 * Toolbar application to demonstrate and explain basic functionality.
 */
@SuppressWarnings("serial")
public class CustomArrowToolBar extends JFrame
{
  public CustomArrowToolBar()
  {
    super("ToolBar with custom popup button");

    Icon arrowIcon = new ImageIcon(getClass().getResource("/resources/icons/arrowDown.png"));

//@highlight
    //create and add the toolbar
    ToolBar toolBar = new ToolBar();
    //customize arrow icon of popup button
    toolBar.getPopupButton().setIcon(arrowIcon);
//@/highlight
    createAndAddButtons(toolBar);
    add(toolBar, BorderLayout.NORTH);
    
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(400, 300);
    //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/toolbar/jyloo.png"));

    SimpleDropDownButton button1 = new SimpleDropDownButton("First button");
    button1.setIcon(icon);
    addMenuItems(button1.getPopupMenu());

    SimpleDropDownButton button2 = new SimpleDropDownButton("Second button");
    button2.setIcon(icon);    
    addMenuItems(button2.getPopupMenu());

    JButton button3 = new JButton("JButton");
    button3.setIcon(icon);    

    SimpleDropDownButton button4 = new SimpleDropDownButton("Last button");
    button4.setIcon(icon);
    button4.setHorizontalArrowPosition(SwingConstants.CENTER);
    button4.setVerticalArrowPosition(SwingConstants.BOTTOM);
    addMenuItems(button4.getPopupMenu());    
    
    container.add(button1);
    container.add(Box.createHorizontalStrut(10));
    container.add(button2);
    container.add(Box.createHorizontalStrut(10));
    container.add(button3);
    container.add(Box.createHorizontalStrut(10));
    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");
          UIManager.put("Synthetica.rootPane.minimumWindowSize", new Dimension(150,150));          
          new CustomArrowToolBar();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }  
}
