// Stage F: using a WindowListener to handle a window-closing event.
// Barry Cornelius, 19 June 2000
package java5;
import java5.*;
import java.awt.    BorderLayout;
import java.awt.    Container;
import java.util.   EnumSet;
import java.awt.    Font;
import javax.swing. JButton;
import javax.swing. JFrame;
import javax.swing. JTextField;
// import static java.awt. Font.*;
enum StyleFeatures{PLAIN, BOLD, ITALIC}
public class GetDateProg
{
   private static Font getFont(String pFamilyString, 
                        EnumSet<StyleFeatures> pEnumSet, int pSize)
   {
      int tStyle = 0;
      for (StyleFeatures sf : pEnumSet) {
         System.out.println(sf.ordinal());
         tStyle |= sf.ordinal();
      } 
      return new Font(pFamilyString, tStyle, pSize);
   }
   public static void main(final String[] pArgs)
   {
      final JFrame tJFrame = new JFrame("GetDateProg: Stage F");
      final JTextField tJTextField = new JTextField("hello", 35);
      final JButton tJButton = new JButton("Get Date");
      // final Font tFont = new Font("Dialog", BOLD|ITALIC, 12);
      // final Font tFont = new Font("Dialog", 20, Font.BOLD);
      final Font tFont = getFont("Dialog", 
                                    EnumSet.of(StyleFeatures.BOLD,
                                               StyleFeatures.ITALIC), 12);
      // final Font tFont = getFont("Dialog", 
      //                               EnumSet.of(StyleFeatures.PLAIN), 12);
      tJButton.setFont(tFont);
      System.out.println(tJButton.getFont());
      final JButtonListener tJButtonListener = 
                                  new JButtonListener(tJTextField);
      tJButton.addActionListener(tJButtonListener);
      final Container tContentPane = tJFrame.getContentPane();
      tContentPane.add(tJTextField, BorderLayout.NORTH);
      tContentPane.add(tJButton,    BorderLayout.SOUTH);
      final ExitWindowListener tExitWindowListener =
                                          new ExitWindowListener();
      tJFrame.addWindowListener(tExitWindowListener);
      tJFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
      tJFrame.pack();
      tJFrame.setVisible(true);
   }
}
