Event Java

/*
Definitive Guide to Swing for Java 2, Second Edition
By John Zukowski     
ISBN: 1-893115-78-X
Publisher: APress
*/
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.Vector;
import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.border.Border;
import javax.swing.event.ChangeListener;
import javax.swing.text.JTextComponent;
public class ListActions {
  public static void main(String args[]) {
    JFrame frame = new JFrame("TextAction List");
    Container contentPane = frame.getContentPane();
    String components[] = { "JTextField", "JPasswordField", "JTextArea",
        "JTextPane", "JEditorPane" };
    final JTextArea textArea = new JTextArea();
    textArea.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(textArea);
    contentPane.add(scrollPane, BorderLayout.CENTER);
    ActionListener actionListener = new ActionListener() {
      public void actionPerformed(ActionEvent actionEvent) {
        // Determine which component selected
        String command = actionEvent.getActionCommand();
        JTextComponent component = null;
        if (command.equals("JTextField")) {
          component = new JTextField();
        } else if (command.equals("JPasswordField")) {
          component = new JPasswordField();
        } else if (command.equals("JTextArea")) {
          component = new JTextArea();
        } else if (command.equals("JTextPane")) {
          component = new JTextPane();
        } else {
          component = new JEditorPane();
        }
        // Process action list
        Action actions[] = component.getActions();
        // Java 2 specific code to sort
        Comparator comparator = new Comparator() {
          public int compare(Object a1, Object a2) {
            int returnValue = 0;
            if ((a1 instanceof Action) && (a2 instanceof Action)) {
              String firstName = (String) ((Action) a1)
                  .getValue(Action.NAME);
              String secondName = (String) ((Action) a2)
                  .getValue(Action.NAME);
              returnValue = firstName.compareTo(secondName);
            }
            return returnValue;
          }
        };
        Arrays.sort(actions, comparator);
        // end Java 2 specific code
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw, true);
        int count = actions.length;
        pw.println("Count: " + count);
        for (int i = 0; i < count; i++) {
          pw.print(actions[i].getValue(Action.NAME));
          pw.print(" : ");
          pw.println(actions[i].getClass().getName());
        }
        pw.close();
        textArea.setText(sw.toString());
        textArea.setCaretPosition(0);
      }
    };
    final Container componentsContainer = RadioButtonUtils
        .createRadioButtonGrouping(components, "Pick to List Actions",
            actionListener);
    contentPane.add(componentsContainer, BorderLayout.WEST);
    frame.setSize(400, 250);
    frame.setVisible(true);
  }
}
class RadioButtonUtils {
  private RadioButtonUtils() {
    // private constructor so you can't create instances
  }
  public static Enumeration getSelectedElements(Container container) {
    Vector selections = new Vector();
    Component components[] = container.getComponents();
    for (int i = 0, n = components.length; i < n; i++) {
      if (components[i] instanceof AbstractButton) {
        AbstractButton button = (AbstractButton) components[i];
        if (button.isSelected()) {
          selections.addElement(button.getText());
        }
      }
    }
    return selections.elements();
  }
  public static Container createRadioButtonGrouping(String elements[]) {
    return createRadioButtonGrouping(elements, null, null, null, null);
  }
  public static Container createRadioButtonGrouping(String elements[],
      String title) {
    return createRadioButtonGrouping(elements, title, null, null, null);
  }
  public static Container createRadioButtonGrouping(String elements[],
      String title, ItemListener itemListener) {
    return createRadioButtonGrouping(elements, title, null, itemListener,
        null);
  }
  public static Container createRadioButtonGrouping(String elements[],
      String title, ActionListener actionListener) {
    return createRadioButtonGrouping(elements, title, actionListener, null,
        null);
  }
  public static Container createRadioButtonGrouping(String elements[],
      String title, ActionListener actionListener,
      ItemListener itemListener) {
    return createRadioButtonGrouping(elements, title, actionListener,
        itemListener, null);
  }
  public static Container createRadioButtonGrouping(String elements[],
      String title, ActionListener actionListener,
      ItemListener itemListener, ChangeListener changeListener) {
    JPanel panel = new JPanel(new GridLayout(0, 1));
    //   If title set, create titled border
    if (title != null) {
      Border border = BorderFactory.createTitledBorder(title);
      panel.setBorder(border);
    }
    //   Create group
    ButtonGroup group = new ButtonGroup();
    JRadioButton aRadioButton;
    //   For each String passed in:
    //   Create button, add to panel, and add to group
    for (int i = 0, n = elements.length; i < n; i++) {
      aRadioButton = new JRadioButton(elements[i]);
      panel.add(aRadioButton);
      group.add(aRadioButton);
      if (actionListener != null) {
        aRadioButton.addActionListener(actionListener);
      }
      if (itemListener != null) {
        aRadioButton.addItemListener(itemListener);
      }
      if (changeListener != null) {
        aRadioButton.addChangeListener(changeListener);
      }
    }
    return panel;
  }
}