Swing JFC 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.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
public class MediumPopupMenuSample {
  public static void main(String args[]) {
    // Define ActionListener
    ActionListener aListener = new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        System.out.println("Selected: " + event.getActionCommand());
      }
    };
    // Define PopupMenuListener
    PopupMenuListener pListener = new PopupMenuListener() {
      public void popupMenuCanceled(PopupMenuEvent event) {
        System.out.println("Canceled");
      }
      public void popupMenuWillBecomeInvisible(PopupMenuEvent event) {
        System.out.println("Becoming Invisible");
      }
      public void popupMenuWillBecomeVisible(PopupMenuEvent event) {
        System.out.println("Becoming Visible");
      }
    };
    // Define
    JFrame frame = new JFrame("Popup Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPopupMenu.setDefaultLightWeightPopupEnabled(false);
    // Create popup menu, attach popup menu listener
    final JPopupMenu popupMenu = new JPopupMenu();
    popupMenu.addPopupMenuListener(pListener);
    // Cut
    JMenuItem cutItem = new JMenuItem("Cut");
    cutItem.addActionListener(aListener);
    popupMenu.add(cutItem);
    // Copy
    JMenuItem copyItem = new JMenuItem("Copy");
    copyItem.addActionListener(aListener);
    popupMenu.add(copyItem);
    // Paste
    JMenuItem pasteItem = new JMenuItem("Paste");
    pasteItem.addActionListener(aListener);
    pasteItem.setEnabled(false);
    popupMenu.add(pasteItem);
    // Separator
    popupMenu.addSeparator();
    // Find
    JMenuItem findItem = new JMenuItem("Find");
    findItem.addActionListener(aListener);
    popupMenu.add(findItem);
    // Enable showing
    MouseListener mouseListener = new JPopupMenuShower(popupMenu);
    frame.addMouseListener(mouseListener);
    Button button = new Button("Label");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.out.println(popupMenu.isLightWeightPopupEnabled());
      }
    });
    frame.getContentPane().add(button, BorderLayout.SOUTH);
    frame.setSize(350, 250);
    frame.setVisible(true);
  }
}
class JPopupMenuShower extends MouseAdapter {
  private JPopupMenu popup;
  public JPopupMenuShower(JPopupMenu popup) {
    this.popup = popup;
  }
  private void showIfPopupTrigger(MouseEvent mouseEvent) {
    if (popup.isPopupTrigger(mouseEvent)) {
      popup.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent
          .getY());
    }
  }
  public void mousePressed(MouseEvent mouseEvent) {
    showIfPopupTrigger(mouseEvent);
  }
  public void mouseReleased(MouseEvent mouseEvent) {
    showIfPopupTrigger(mouseEvent);
  }
}