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

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

import org.jdesktop.swingx.JXTitledSeparator;

import de.javasoft.swing.JYCheckBox;

/**
 * Simple JYCheckBox demo.  
 */
@SuppressWarnings("serial")
public class SimpleJYCheckBox extends JFrame
{
  public SimpleJYCheckBox()
  {
    super("Simple JYCheckBox Demo");
    
    JPanel p = new JPanel();
    p.setLayout(new BoxLayout(p, BoxLayout.PAGE_AXIS));
    p.setBorder(new EmptyBorder(20,20,20,20));
    
//@highlight
    JYCheckBox checkBox = new JYCheckBox("JYCheckBox");
    checkBox.setState(JYCheckBox.State.SELECTED);
    //checkBox.setState(JYCheckBox.State.HALF_SELECTED);
    //checkBox.setState(JYCheckBox.State.DESELECTED);
//@/highlight
    checkBox.setFocusPainted(false);
    p.add(checkBox);
    
    p.add(new JXTitledSeparator("CheckBox state"));

    final JTextArea ta = new JTextArea(3, 28);
    ta.setEditable(false);
    ta.setFocusable(false);
    p.add(new JScrollPane(ta));
    
    add(p, BorderLayout.NORTH);

//@highlight
    checkBox.addItemListener(new ItemListener(){
      public void itemStateChanged(ItemEvent evt)
      {
        String text = evt.getStateChange() + ", " + ((JYCheckBox)evt.getSource()).getState();
        ta.setText(text);
      }      
    });    
//@/highlight

    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(400, 300);
    setLocationRelativeTo(null);        //center
    setVisible(true);
  }

  /**
   * 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 SimpleJYCheckBox();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }  
}
