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

import java.awt.EventQueue;
import java.awt.Insets;

import javax.swing.AbstractButton;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JToggleButton;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

import de.javasoft.swing.ButtonBar;
import de.javasoft.swing.SimpleDropDownButton;

/**
 * Simple ButtonBar application demonstrates and explains  
 * basic functionality.
 */
@SuppressWarnings("serial")
public class SimpleButtonBar extends JFrame
{
  /**
   * Constructor for the main application.  
   */
  public SimpleButtonBar()
  {
    super("Simple ButtonBar Demo");    
    
    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
    
//@highlight
    ButtonBar bb = new ButtonBar();
       
    AbstractButton b1 = createButton("Button1", true, true);
    bb.add(b1);
    
    AbstractButton b2 = createButton("Button2", true, true);
    bb.add(b2);
    
    //do not allow simultaneous selection of b1/b2
    ButtonGroup group = new ButtonGroup();
    group.add(b1);
    group.add(b2);
        
    AbstractButton b4 = createButton("Button3", true, false); 
    b4.setIcon(new ImageIcon(getClass().getResource("/de/javasoft/synthetica/democenter/examples/buttonbar/jyloo.png")));
    bb.add(b4);
    
    SimpleDropDownButton b5 = new SimpleDropDownButton("Button5");
    JPopupMenu popupMenu = b5.getPopupMenu(); 
    popupMenu.add(new JMenuItem("MenuItem 1"));
    popupMenu.add(new JMenuItem("MenuItem 2"));
    popupMenu.add(new JMenuItem("MenuItem 3"));
    bb.add(b5);
//@/highlight
    panel.add(bb);
    
    panel.setBorder(new EmptyBorder(10, 10, 10, 10));        
    add(panel);
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(440, 180);
    setLocationRelativeTo(null);        //center
    setVisible(true);    
  }

  private AbstractButton createButton(String text, boolean enabled, boolean toggleButton)
  {
    AbstractButton b = null;
    if (toggleButton)
      b = new JToggleButton(text)
      {
        @Override
        public Insets getMargin() 
        {
          if (super.getMargin() != null)
            return new Insets(super.getMargin().top, 10, super.getMargin().bottom, 10);
          return null;
        }
      };    
    else
      b = new JButton(text)
      {
        @Override
        public Insets getMargin() 
        {
          if (super.getMargin() != null)
            return new Insets(super.getMargin().top, 10, super.getMargin().bottom, 10);
          return null;
        }
      };    
    b.setEnabled(enabled);
    Insets margin = b.getMargin();
    b.setMargin(new Insets(margin.top, 10, margin.bottom, 10));
    return b;
  }  
  
  /**
   * 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 SimpleButtonBar();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }

}
