import java.awt.*;         // basic awt classes
import java.awt.event.*;   // event classes
import javax.swing.*;      // swing classes

/**
 * CSE 331 12au-16sp. Very simple demo of Swing event handling.  
 * Create a window with a single button that prints a message when it's clicked.
 * Version 1 with named inner class to handle button events.
 * 
 * @author Hal Perkins
 */ 
public class ButtonDemo1 {
  
  // inner class to handle button events
  private static class ButtonListener implements ActionListener {
    private int nEvents = 0;
    
    /**
     * Respond to events generated by the button by printing the
     * command and number of times the event has been triggered.
     * @param e the event created by the button when it was clicked.
     */
    public void actionPerformed(ActionEvent e) {
      nEvents++;
      System.out.println(e.getActionCommand() + " " + nEvents);
    }
  }
  
  /** Program that displays a message each time a button is pressed. */
  public static void main(String[] args) {
    // Create a new button with label "Hit me" and string "OUCH!" to be
    // returned as part of each action event.
    JButton button = new JButton("Hit me");
    button.setActionCommand("OUCH!");
    button.addActionListener(new ButtonListener());

    // Display this button in a new window.
    showButton(button);
  }

  /** Creates a frame that displays the given button. (IGNORE FOR NOW) */
  private static void showButton(JButton button) {
    JFrame frame = new JFrame("Button Demo");
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    panel.add(button);
    
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
  }
}