/*  J2PrinterWorks Test Application
    (C) Copyright 2007
    Wildcrest Associates
    http://www.wildcrest.com
This source code may be freely used, modified, incorporated, and
distributed without restriction as part of any software that uses
J2PrinterWorks by Wildcrest Associates.
*/

import java.awt.*;
import javax.swing.*;
import com.wildcrest.j2printerworks.*;

public class J2PrinterWorksPageSetupDialog extends javax.swing.JDialog {
   J2Printer j2printer = null;
   int rememberOrientationAtStart;
   static int whichPagesComboIndex;

   public J2PrinterWorksPageSetupDialog(Frame parent) {
      super(parent);

      setTitle("Page Setup");
      setResizable(false);
      setModal(true);
      getContentPane().setLayout(null);
      setSize(619, 350);
      setVisible(false);
      JPanelAll.setLayout(null);
      getContentPane().add(JPanelAll);
      JPanelAll.setBackground(new java.awt.Color(223, 223, 223));
      JPanelAll.setBounds(0, 0, 620, 350);
      JPanelHeaders.setOpaque(false);
      JPanelHeaders.setLayout(new GridLayout(1, 3, 0, 0));
      JPanelAll.add(JPanelHeaders);
      JPanelHeaders.setBounds(6, 6, 610, 34);
      JPanelLeftHeader.setAlignmentY(0.473684F);
      JPanelLeftHeader.setLayout(new BorderLayout(0, 0));
      JPanelHeaders.add(JPanelLeftHeader);
      JPanelLeftHeader.setBackground(new java.awt.Color(223, 223, 223));
      JLabelLeftHeader.setText("Left header");
      JPanelLeftHeader.add(BorderLayout.NORTH, JLabelLeftHeader);
      JLabelLeftHeader.setForeground(java.awt.Color.black);
      JLabelLeftHeader.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelLeftHeader.add(BorderLayout.SOUTH, JTextFieldLeftHeader);
      JTextFieldLeftHeader.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelCenterHeader.setAlignmentY(0.473684F);
      JPanelCenterHeader.setLayout(new BorderLayout(0, 0));
      JPanelHeaders.add(JPanelCenterHeader);
      JPanelCenterHeader.setBackground(new java.awt.Color(223, 223, 223));
      JLabelCenterHeader.setText("Center header");
      JPanelCenterHeader.add(BorderLayout.NORTH, JLabelCenterHeader);
      JLabelCenterHeader.setForeground(java.awt.Color.black);
      JLabelCenterHeader.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelCenterHeader.add(BorderLayout.SOUTH, JTextFieldCenterHeader);
      JTextFieldCenterHeader.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelRightHeader.setAlignmentY(0.473684F);
      JPanelRightHeader.setLayout(new BorderLayout(0, 0));
      JPanelHeaders.add(JPanelRightHeader);
      JPanelRightHeader.setBackground(new java.awt.Color(223, 223, 223));
      JLabelRightHeader.setText("Right header");
      JPanelRightHeader.add(BorderLayout.NORTH, JLabelRightHeader);
      JLabelRightHeader.setForeground(java.awt.Color.black);
      JLabelRightHeader.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelRightHeader.add(BorderLayout.SOUTH, JTextFieldRightHeader);
      JTextFieldRightHeader.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelFooters.setOpaque(false);
      JPanelFooters.setLayout(new GridLayout(1, 3, 0, 0));
      JPanelAll.add(JPanelFooters);
      JPanelFooters.setBounds(6, 42, 610, 34);
      JPanelLeftFooter.setAlignmentY(0.473684F);
      JPanelLeftFooter.setLayout(new BorderLayout(0, 0));
      JPanelFooters.add(JPanelLeftFooter);
      JPanelLeftFooter.setBackground(new java.awt.Color(223, 223, 223));
      JLabelLeftFooter.setText("Left footer");
      JPanelLeftFooter.add(BorderLayout.NORTH, JLabelLeftFooter);
      JLabelLeftFooter.setForeground(java.awt.Color.black);
      JLabelLeftFooter.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelLeftFooter.add(BorderLayout.SOUTH, JTextFieldLeftFooter);
      JTextFieldLeftFooter.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelCenterFooter.setAlignmentY(0.473684F);
      JPanelCenterFooter.setLayout(new BorderLayout(0, 0));
      JPanelFooters.add(JPanelCenterFooter);
      JPanelCenterFooter.setBackground(new java.awt.Color(223, 223, 223));
      JLabelCenterFooter.setText("Center footer");
      JPanelCenterFooter.add(BorderLayout.NORTH, JLabelCenterFooter);
      JLabelCenterFooter.setForeground(java.awt.Color.black);
      JLabelCenterFooter.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelCenterFooter.add(BorderLayout.SOUTH, JTextFieldCenterFooter);
      JTextFieldCenterFooter.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelRightFooter.setAlignmentY(0.473684F);
      JPanelRightFooter.setLayout(new BorderLayout(0, 0));
      JPanelFooters.add(JPanelRightFooter);
      JPanelRightFooter.setBackground(new java.awt.Color(223, 223, 223));
      JLabelRightFooter.setText("Right footer");
      JPanelRightFooter.add(BorderLayout.NORTH, JLabelRightFooter);
      JLabelRightFooter.setForeground(java.awt.Color.black);
      JLabelRightFooter.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelRightFooter.add(BorderLayout.SOUTH, JTextFieldRightFooter);
      JTextFieldRightFooter.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelMisc1.setOpaque(false);
      JPanelMisc1.setLayout(new GridLayout(1, 3, 0, 0));
      JPanelAll.add(JPanelMisc1);
      JPanelMisc1.setBounds(6, 90, 610, 36);
      JPanelHeaderFooterFont.setAlignmentY(0.473684F);
      JPanelHeaderFooterFont.setLayout(new BorderLayout(0, 0));
      JPanelMisc1.add(JPanelHeaderFooterFont);
      JPanelHeaderFooterFont.setBackground(new java.awt.Color(223, 223, 223));
      JLabelHeaderFooterFont.setText("Header/footer font");
      JPanelHeaderFooterFont.add(BorderLayout.NORTH, JLabelHeaderFooterFont);
      JLabelHeaderFooterFont.setForeground(java.awt.Color.black);
      JLabelHeaderFooterFont.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelHeaderFooterFont.add(BorderLayout.SOUTH, JTextFieldHeaderFooterFont);
      JTextFieldHeaderFooterFont.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelHeaderStyle.setAlignmentY(0.473684F);
      JPanelHeaderStyle.setLayout(new BorderLayout(0, 0));
      JPanelMisc1.add(JPanelHeaderStyle);
      JPanelHeaderStyle.setBackground(new java.awt.Color(223, 223, 223));
      JLabelHeaderStyle.setText("Header style");
      JPanelHeaderStyle.add(BorderLayout.NORTH, JLabelHeaderStyle);
      JLabelHeaderStyle.setForeground(java.awt.Color.black);
      JLabelHeaderStyle.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelHeaderStyle.add(BorderLayout.CENTER, JComboBoxHeaderStyle);
      JComboBoxHeaderStyle.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelFooterStyle.setAlignmentY(0.473684F);
      JPanelFooterStyle.setLayout(new BorderLayout(0, 0));
      JPanelMisc1.add(JPanelFooterStyle);
      JPanelFooterStyle.setBackground(new java.awt.Color(223, 223, 223));
      JLabelFooterStyle.setText("Footer style");
      JPanelFooterStyle.add(BorderLayout.NORTH, JLabelFooterStyle);
      JLabelFooterStyle.setForeground(java.awt.Color.black);
      JLabelFooterStyle.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelFooterStyle.add(BorderLayout.CENTER, JComboBoxFooterStyle);
      JComboBoxFooterStyle.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelWhichPages.setAlignmentY(0.473684F);
      JPanelWhichPages.setLayout(new BorderLayout(0, 0));
      JPanelMisc1.add(JPanelWhichPages);
      JPanelWhichPages.setBackground(new java.awt.Color(223, 223, 223));
      JLabelWhichPages.setText("Which pages");
      JPanelWhichPages.add(BorderLayout.NORTH, JLabelWhichPages);
      JLabelWhichPages.setForeground(java.awt.Color.black);
      JLabelWhichPages.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelWhichPages.add(BorderLayout.CENTER, JComboBoxWhichPages);
      JComboBoxWhichPages.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelMargins.setOpaque(false);
      JPanelMargins.setLayout(new GridLayout(1, 4, 0, 0));
      JPanelAll.add(JPanelMargins);
      JPanelMargins.setBounds(6, 174, 610, 34);
      JPanelLeftMargin.setAlignmentY(0.473684F);
      JPanelLeftMargin.setLayout(new BorderLayout(0, 0));
      JPanelMargins.add(JPanelLeftMargin);
      JPanelLeftMargin.setBackground(new java.awt.Color(223, 223, 223));
      JLabelLeftMargin.setText("Left margin");
      JPanelLeftMargin.add(BorderLayout.NORTH, JLabelLeftMargin);
      JLabelLeftMargin.setForeground(java.awt.Color.black);
      JLabelLeftMargin.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelLeftMargin.add(BorderLayout.SOUTH, JTextFieldLeftMargin);
      JTextFieldLeftMargin.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelRightMargin.setAlignmentY(0.473684F);
      JPanelRightMargin.setLayout(new BorderLayout(0, 0));
      JPanelMargins.add(JPanelRightMargin);
      JPanelRightMargin.setBackground(new java.awt.Color(223, 223, 223));
      JLabelRightMargin.setText("Right margin");
      JPanelRightMargin.add(BorderLayout.NORTH, JLabelRightMargin);
      JLabelRightMargin.setForeground(java.awt.Color.black);
      JLabelRightMargin.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelRightMargin.add(BorderLayout.SOUTH, JTextFieldRightMargin);
      JTextFieldRightMargin.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelTopMargin.setAlignmentY(0.473684F);
      JPanelTopMargin.setLayout(new BorderLayout(0, 0));
      JPanelMargins.add(JPanelTopMargin);
      JPanelTopMargin.setBackground(new java.awt.Color(223, 223, 223));
      JLabelTopMargin.setText("Top margin");
      JPanelTopMargin.add(BorderLayout.NORTH, JLabelTopMargin);
      JLabelTopMargin.setForeground(java.awt.Color.black);
      JLabelTopMargin.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelTopMargin.add(BorderLayout.SOUTH, JTextFieldTopMargin);
      JTextFieldTopMargin.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelBottomMargin.setAlignmentY(0.473684F);
      JPanelBottomMargin.setLayout(new BorderLayout(0, 0));
      JPanelMargins.add(JPanelBottomMargin);
      JPanelBottomMargin.setBackground(new java.awt.Color(223, 223, 223));
      JLabelBottomMargin.setText("Bottom margin");
      JPanelBottomMargin.add(BorderLayout.NORTH, JLabelBottomMargin);
      JLabelBottomMargin.setForeground(java.awt.Color.black);
      JLabelBottomMargin.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelBottomMargin.add(BorderLayout.SOUTH, JTextFieldBottomMargin);
      JTextFieldBottomMargin.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelGaps.setOpaque(false);
      JPanelGaps.setLayout(new GridLayout(1, 4, 0, 0));
      JPanelAll.add(JPanelGaps);
      JPanelGaps.setBounds(6, 216, 610, 34);
      JPanelGapBelowHeader.setAlignmentY(0.473684F);
      JPanelGapBelowHeader.setLayout(new BorderLayout(0, 0));
      JPanelGaps.add(JPanelGapBelowHeader);
      JPanelGapBelowHeader.setBackground(new java.awt.Color(223, 223, 223));
      JLabelGapBelowHeader.setText("Gap below header");
      JPanelGapBelowHeader.add(BorderLayout.NORTH, JLabelGapBelowHeader);
      JLabelGapBelowHeader.setForeground(java.awt.Color.black);
      JLabelGapBelowHeader.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelGapBelowHeader.add(BorderLayout.SOUTH, JTextFieldGapBelowHeader);
      JTextFieldGapBelowHeader.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelGapAboveFooter.setAlignmentY(0.473684F);
      JPanelGapAboveFooter.setLayout(new BorderLayout(0, 0));
      JPanelGaps.add(JPanelGapAboveFooter);
      JPanelGapAboveFooter.setBackground(new java.awt.Color(223, 223, 223));
      JLabelGapAboveFooter.setText("Gap above footer");
      JPanelGapAboveFooter.add(BorderLayout.NORTH, JLabelGapAboveFooter);
      JLabelGapAboveFooter.setForeground(java.awt.Color.black);
      JLabelGapAboveFooter.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelGapAboveFooter.add(BorderLayout.SOUTH, JTextFieldGapAboveFooter);
      JTextFieldGapAboveFooter.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelNumberOfCopies.setAlignmentY(0.473684F);
      JPanelNumberOfCopies.setLayout(new BorderLayout(0, 0));
      JPanelGaps.add(JPanelNumberOfCopies);
      JPanelNumberOfCopies.setBackground(new java.awt.Color(223, 223, 223));
      JLabelNumberOfCopies.setText("Number of copies  ");
      JPanelNumberOfCopies.add(BorderLayout.NORTH, JLabelNumberOfCopies);
      JLabelNumberOfCopies.setBackground(new java.awt.Color(223, 223, 223));
      JLabelNumberOfCopies.setForeground(java.awt.Color.black);
      JLabelNumberOfCopies.setFont(new Font("Dialog", Font.BOLD, 11));
      JTextFieldNumberOfCopies.setColumns(5);
      JPanelNumberOfCopies.add(BorderLayout.SOUTH, JTextFieldNumberOfCopies);
      JTextFieldNumberOfCopies.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelCheckBoxes.setAlignmentY(0.473684F);
      JPanelCheckBoxes.setLayout(new GridLayout(2, 1, 0, 0));
      JPanelGaps.add(JPanelCheckBoxes);
      JPanelCheckBoxes.setBackground(new java.awt.Color(223, 223, 223));
      JCheckBoxPrintDialogUsed.setText("Use print dialog");
      JCheckBoxPrintDialogUsed.setActionCommand("Box around footer");
      JPanelCheckBoxes.add(JCheckBoxPrintDialogUsed);
      JCheckBoxPrintDialogUsed.setBackground(new java.awt.Color(223, 223, 223));
      JCheckBoxPrintDialogUsed.setForeground(java.awt.Color.black);
      JCheckBoxPrintDialogUsed.setFont(new Font("Dialog", Font.BOLD, 11));
      JCheckBoxSeparatePrintThread.setText("Separate print thread");
      JCheckBoxSeparatePrintThread.setActionCommand("Box around footer");
      JPanelCheckBoxes.add(JCheckBoxSeparatePrintThread);
      JCheckBoxSeparatePrintThread.setBackground(new java.awt.Color(223, 223,
          223));
      JCheckBoxSeparatePrintThread.setForeground(java.awt.Color.black);
      JCheckBoxSeparatePrintThread.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelMisc2.setOpaque(false);
      JPanelMisc2.setLayout(new GridLayout(1, 3, 0, 0));
      JPanelAll.add(JPanelMisc2);
      JPanelMisc2.setBounds(6, 258, 610, 36);
      JPanelScale.setAlignmentY(0.473684F);
      JPanelScale.setLayout(new BorderLayout(0, 0));
      JPanelMisc2.add(JPanelScale);
      JPanelScale.setBackground(new java.awt.Color(223, 223, 223));
      JLabelScale.setText("Scale");
      JPanelScale.add(BorderLayout.NORTH, JLabelScale);
      JLabelScale.setBackground(new java.awt.Color(223, 223, 223));
      JLabelScale.setForeground(java.awt.Color.black);
      JLabelScale.setFont(new Font("Dialog", Font.BOLD, 11));
      JTextFieldScale.setColumns(4);
      JPanelScale.add(BorderLayout.SOUTH, JTextFieldScale);
      JTextFieldScale.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelPrintJobName.setAlignmentY(0.473684F);
      JPanelPrintJobName.setLayout(new BorderLayout(0, 0));
      JPanelMisc2.add(JPanelPrintJobName);
      JPanelPrintJobName.setBackground(new java.awt.Color(223, 223, 223));
      JLabelPrintJobName.setText("Print job name");
      JPanelPrintJobName.add(BorderLayout.NORTH, JLabelPrintJobName);
      JLabelPrintJobName.setBackground(new java.awt.Color(223, 223, 223));
      JLabelPrintJobName.setForeground(java.awt.Color.black);
      JLabelPrintJobName.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelPrintJobName.add(BorderLayout.SOUTH, JTextFieldPrintJobName);
      JTextFieldPrintJobName.setFont(new Font("Dialog", Font.PLAIN, 11));
      JPanelNup.setAlignmentY(0.473684F);
      JPanelNup.setLayout(new BorderLayout(0, 0));
      JPanelMisc2.add(JPanelNup);
      JPanelNup.setBackground(new java.awt.Color(223, 223, 223));
      JLabelNup.setText("N-up printing");
      JPanelNup.add(BorderLayout.NORTH, JLabelNup);
      JLabelNup.setBackground(new java.awt.Color(223, 223, 223));
      JLabelNup.setForeground(java.awt.Color.black);
      JLabelNup.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelNup.add(BorderLayout.CENTER, JComboBoxNup);
      JComboBoxNup.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelOrientation.setAlignmentY(0.473684F);
      JPanelOrientation.setLayout(new BorderLayout(0, 0));
      JPanelMisc2.add(JPanelOrientation);
      JPanelOrientation.setBackground(new java.awt.Color(223, 223, 223));
      JLabelOrientation.setText("Orientation");
      JPanelOrientation.add(BorderLayout.NORTH, JLabelOrientation);
      JLabelOrientation.setForeground(java.awt.Color.black);
      JLabelOrientation.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelOrientation.add(BorderLayout.CENTER, JComboBoxOrientation);
      JComboBoxOrientation.setFont(new Font("Dialog", Font.BOLD, 11));
      JPanelOKCancel.setOpaque(false);
      JPanelOKCancel.setLayout(null);
      JPanelAll.add(JPanelOKCancel);
      JPanelOKCancel.setBackground(new java.awt.Color(223, 223, 223));
      JPanelOKCancel.setForeground(java.awt.Color.black);
      JPanelOKCancel.setBounds(108, 315, 372, 24);
      JButtonOK.setText("OK");
      JButtonOK.setActionCommand("OK");
      JPanelOKCancel.add(JButtonOK);
      JButtonOK.setBackground(java.awt.Color.lightGray);
      JButtonOK.setBounds(96, 0, 51, 23);
      JButtonCancel.setText("Cancel");
      JButtonCancel.setActionCommand("Cancel");
      JPanelOKCancel.add(JButtonCancel);
      JButtonCancel.setBackground(java.awt.Color.lightGray);
      JButtonCancel.setBounds(252, 0, 73, 23);

      JComboBoxOrientation.addItem("PORTRAIT");
      JComboBoxOrientation.addItem("LANDSCAPE");
      JComboBoxOrientation.addItem("REVERSE LANDSCAPE");

      JComboBoxHeaderStyle.addItem("BOX");
      JComboBoxHeaderStyle.addItem("LINE");
      JComboBoxHeaderStyle.addItem("NONE");

      JComboBoxFooterStyle.addItem("BOX");
      JComboBoxFooterStyle.addItem("LINE");
      JComboBoxFooterStyle.addItem("NONE");

      JComboBoxWhichPages.addItem("ALL");
      JComboBoxWhichPages.addItem("FIRST");
      JComboBoxWhichPages.addItem("REST");
      JComboBoxWhichPages.setSelectedIndex(whichPagesComboIndex);

      JComboBoxNup.addItem("1");
      JComboBoxNup.addItem("2");
      JComboBoxNup.addItem("4");
      JComboBoxNup.addItem("6");
      JComboBoxNup.addItem("9");
      JComboBoxNup.addItem("16");

      SymAction lSymAction = new SymAction();
      JButtonCancel.addActionListener(lSymAction);
      JButtonOK.addActionListener(lSymAction);
      SymItem lSymItem = new SymItem();
      JComboBoxOrientation.addItemListener(lSymItem);
      JComboBoxWhichPages.addItemListener(lSymItem);

      JPanelAll.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
   }

   public J2PrinterWorksPageSetupDialog() {
      this( (Frame)null);
   }

   public J2PrinterWorksPageSetupDialog(String sTitle) {
      this();
      setTitle(sTitle);
   }

   public J2PrinterWorksPageSetupDialog(Frame frame, J2Printer j2printer) {
      this(frame);
      this.j2printer = j2printer;
      updatePageSetupDialog();
   }

   private void updatePageSetupDialog() {
      if (j2printer == null)
         return;

      JTextFieldGapBelowHeader.setText(Double.toString(j2printer.
          getGapBelowHeader()));
      JTextFieldGapAboveFooter.setText(Double.toString(j2printer.
          getGapAboveFooter()));
      JTextFieldLeftMargin.setText(Double.toString(j2printer.getLeftMargin()));
      JTextFieldRightMargin.setText(Double.toString(j2printer.getRightMargin()));
      JTextFieldTopMargin.setText(Double.toString(j2printer.getTopMargin()));
      JTextFieldBottomMargin.setText(Double.toString(j2printer.getBottomMargin()));
      if (j2printer.getOrientation() == j2printer.PORTRAIT)
         JComboBoxOrientation.setSelectedIndex(0);
      if (j2printer.getOrientation() == j2printer.LANDSCAPE)
         JComboBoxOrientation.setSelectedIndex(1);
      if (j2printer.getOrientation() == j2printer.REVERSE_LANDSCAPE)
         JComboBoxOrientation.setSelectedIndex(2);
      rememberOrientationAtStart = JComboBoxOrientation.getSelectedIndex();
      JTextFieldPrintJobName.setText(j2printer.getPrintJobName());
      JCheckBoxSeparatePrintThread.setSelected(j2printer.isSeparatePrintThread());
      JTextFieldNumberOfCopies.setText(Integer.toString(j2printer.
          getNumberOfCopies()));
      JCheckBoxPrintDialogUsed.setSelected(j2printer.isPrintDialogUsed());
      JTextFieldScale.setText(Double.toString(j2printer.getScale()));
      if (j2printer.getNup() == 1) JComboBoxNup.setSelectedIndex(0);
      if (j2printer.getNup() == 2) JComboBoxNup.setSelectedIndex(1);
      if (j2printer.getNup() == 4) JComboBoxNup.setSelectedIndex(2);
      if (j2printer.getNup() == 6) JComboBoxNup.setSelectedIndex(3);
      if (j2printer.getNup() == 9) JComboBoxNup.setSelectedIndex(4);
      if (j2printer.getNup() == 16) JComboBoxNup.setSelectedIndex(5);

      if (JComboBoxWhichPages.getSelectedIndex() == 0) { // ALL pages
         if (j2printer.getHeaderStyle() == j2printer.BOX)
            JComboBoxHeaderStyle.setSelectedIndex(0);
         if (j2printer.getHeaderStyle() == j2printer.LINE)
            JComboBoxHeaderStyle.setSelectedIndex(1);
         if (j2printer.getHeaderStyle() == j2printer.NONE)
            JComboBoxHeaderStyle.setSelectedIndex(2);
         if (j2printer.getFooterStyle() == j2printer.BOX)
            JComboBoxFooterStyle.setSelectedIndex(0);
         if (j2printer.getFooterStyle() == j2printer.LINE)
            JComboBoxFooterStyle.setSelectedIndex(1);
         if (j2printer.getFooterStyle() == j2printer.NONE)
            JComboBoxFooterStyle.setSelectedIndex(2);
         JTextFieldHeaderFooterFont.setText(font2String(j2printer.getHeaderFont()));
         JTextFieldLeftHeader.setText(getObjectString(j2printer.getLeftHeader()));
         JTextFieldCenterHeader.setText(getObjectString(j2printer.
             getCenterHeader()));
         JTextFieldRightHeader.setText(getObjectString(j2printer.getRightHeader()));
         JTextFieldLeftFooter.setText(getObjectString(j2printer.getLeftFooter()));
         JTextFieldCenterFooter.setText(getObjectString(j2printer.
             getCenterFooter()));
         JTextFieldRightFooter.setText(getObjectString(j2printer.getRightFooter()));
      }
      else { // else FIRST or REST of pages
         int which = J2Printer.FIRST;
         if (JComboBoxWhichPages.getSelectedIndex() == 2)
            which = J2Printer.REST;
         if (j2printer.getHeaderStyle(which) == j2printer.BOX)
            JComboBoxHeaderStyle.setSelectedIndex(0);
         if (j2printer.getHeaderStyle(which) == j2printer.LINE)
            JComboBoxHeaderStyle.setSelectedIndex(1);
         if (j2printer.getHeaderStyle(which) == j2printer.NONE)
            JComboBoxHeaderStyle.setSelectedIndex(2);
         if (j2printer.getFooterStyle(which) == j2printer.BOX)
            JComboBoxFooterStyle.setSelectedIndex(0);
         if (j2printer.getFooterStyle(which) == j2printer.LINE)
            JComboBoxFooterStyle.setSelectedIndex(1);
         if (j2printer.getFooterStyle(which) == j2printer.NONE)
            JComboBoxFooterStyle.setSelectedIndex(2);
         JTextFieldHeaderFooterFont.setText(font2String(j2printer.getHeaderFont()));
         JTextFieldLeftHeader.setText(getObjectString(j2printer.getLeftHeader(which)));
         JTextFieldCenterHeader.setText(getObjectString(j2printer.getCenterHeader(which)));
         JTextFieldRightHeader.setText(getObjectString(j2printer.getRightHeader(which)));
         JTextFieldLeftFooter.setText(getObjectString(j2printer.getLeftFooter(which)));
         JTextFieldCenterFooter.setText(getObjectString(j2printer.getCenterFooter(which)));
         JTextFieldRightFooter.setText(getObjectString(j2printer.getRightFooter(which)));
      }
      repaint();
   }

   private String getObjectString(Object obj) {
      if (obj instanceof JLabel) return ( (JLabel) obj).getText();
      else if (obj instanceof String) return (String) obj;
      else return obj.toString();
   }

   private Object setObjectString(Object obj, String str) {
      if (obj instanceof JLabel) {
         ( (JLabel) obj).setText(str);
         return obj;
      }
      else if (obj instanceof String) return str;
      else return obj;
   }

   private String font2String(Font f) {
      int style = f.getStyle();
      String styleName = "PLAIN";
      if (style == Font.BOLD) styleName = "BOLD";
      if (style == Font.ITALIC) styleName = "ITALIC";
      return f.getFamily() + "," + styleName + "," + f.getSize();
   }

   public void setVisible(boolean b) {
      updatePageSetupDialog();
      if (b) this.setLocation(75, 75);
      super.setVisible(b);
   }

   static public void main(String args[]) {
      (new J2PrinterWorksPageSetupDialog()).setVisible(true);
   }

   public void addNotify() {
      // Record the size of the window prior to calling parents addNotify.
      Dimension size = getSize();

      super.addNotify();

      if (frameSizeAdjusted) return;
      frameSizeAdjusted = true;

      // Adjust size of frame according to the insets
      Insets insets = getInsets();
      setSize(insets.left + insets.right + size.width,
              insets.top + insets.bottom + size.height);
   }

   // Used by addNotify
   boolean frameSizeAdjusted = false;

   javax.swing.JPanel JPanelAll = new javax.swing.JPanel();
   javax.swing.JPanel JPanelHeaders = new javax.swing.JPanel();
   javax.swing.JPanel JPanelLeftHeader = new javax.swing.JPanel();
   javax.swing.JLabel JLabelLeftHeader = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldLeftHeader = new javax.swing.JTextField();
   javax.swing.JPanel JPanelCenterHeader = new javax.swing.JPanel();
   javax.swing.JLabel JLabelCenterHeader = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldCenterHeader = new javax.swing.JTextField();
   javax.swing.JPanel JPanelRightHeader = new javax.swing.JPanel();
   javax.swing.JLabel JLabelRightHeader = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldRightHeader = new javax.swing.JTextField();
   javax.swing.JPanel JPanelFooters = new javax.swing.JPanel();
   javax.swing.JPanel JPanelLeftFooter = new javax.swing.JPanel();
   javax.swing.JLabel JLabelLeftFooter = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldLeftFooter = new javax.swing.JTextField();
   javax.swing.JPanel JPanelCenterFooter = new javax.swing.JPanel();
   javax.swing.JLabel JLabelCenterFooter = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldCenterFooter = new javax.swing.JTextField();
   javax.swing.JPanel JPanelRightFooter = new javax.swing.JPanel();
   javax.swing.JLabel JLabelRightFooter = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldRightFooter = new javax.swing.JTextField();
   javax.swing.JPanel JPanelMisc1 = new javax.swing.JPanel();
   javax.swing.JPanel JPanelHeaderFooterFont = new javax.swing.JPanel();
   javax.swing.JLabel JLabelHeaderFooterFont = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldHeaderFooterFont = new javax.swing.JTextField();
   javax.swing.JPanel JPanelHeaderStyle = new javax.swing.JPanel();
   javax.swing.JLabel JLabelHeaderStyle = new javax.swing.JLabel();
   javax.swing.JComboBox JComboBoxHeaderStyle = new javax.swing.JComboBox();
   javax.swing.JPanel JPanelFooterStyle = new javax.swing.JPanel();
   javax.swing.JLabel JLabelFooterStyle = new javax.swing.JLabel();
   javax.swing.JComboBox JComboBoxFooterStyle = new javax.swing.JComboBox();
   javax.swing.JPanel JPanelWhichPages = new javax.swing.JPanel();
   javax.swing.JLabel JLabelWhichPages = new javax.swing.JLabel();
   javax.swing.JComboBox JComboBoxWhichPages = new javax.swing.JComboBox();
   javax.swing.JPanel JPanelMargins = new javax.swing.JPanel();
   javax.swing.JPanel JPanelLeftMargin = new javax.swing.JPanel();
   javax.swing.JLabel JLabelLeftMargin = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldLeftMargin = new javax.swing.JTextField();
   javax.swing.JPanel JPanelRightMargin = new javax.swing.JPanel();
   javax.swing.JLabel JLabelRightMargin = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldRightMargin = new javax.swing.JTextField();
   javax.swing.JPanel JPanelTopMargin = new javax.swing.JPanel();
   javax.swing.JLabel JLabelTopMargin = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldTopMargin = new javax.swing.JTextField();
   javax.swing.JPanel JPanelBottomMargin = new javax.swing.JPanel();
   javax.swing.JLabel JLabelBottomMargin = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldBottomMargin = new javax.swing.JTextField();
   javax.swing.JPanel JPanelGaps = new javax.swing.JPanel();
   javax.swing.JPanel JPanelGapBelowHeader = new javax.swing.JPanel();
   javax.swing.JLabel JLabelGapBelowHeader = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldGapBelowHeader = new javax.swing.JTextField();
   javax.swing.JPanel JPanelGapAboveFooter = new javax.swing.JPanel();
   javax.swing.JLabel JLabelGapAboveFooter = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldGapAboveFooter = new javax.swing.JTextField();
   javax.swing.JPanel JPanelNumberOfCopies = new javax.swing.JPanel();
   javax.swing.JLabel JLabelNumberOfCopies = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldNumberOfCopies = new javax.swing.JTextField();
   javax.swing.JPanel JPanelCheckBoxes = new javax.swing.JPanel();
   javax.swing.JCheckBox JCheckBoxPrintDialogUsed = new javax.swing.JCheckBox();
   javax.swing.JCheckBox JCheckBoxSeparatePrintThread = new javax.swing.JCheckBox();
   javax.swing.JPanel JPanelMisc2 = new javax.swing.JPanel();
   javax.swing.JPanel JPanelScale = new javax.swing.JPanel();
   javax.swing.JLabel JLabelScale = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldScale = new javax.swing.JTextField();
   javax.swing.JPanel JPanelNup = new javax.swing.JPanel();
   javax.swing.JLabel JLabelNup = new javax.swing.JLabel();
   javax.swing.JComboBox JComboBoxNup = new javax.swing.JComboBox();
   javax.swing.JPanel JPanelPrintJobName = new javax.swing.JPanel();
   javax.swing.JLabel JLabelPrintJobName = new javax.swing.JLabel();
   javax.swing.JTextField JTextFieldPrintJobName = new javax.swing.JTextField();
   javax.swing.JPanel JPanelOrientation = new javax.swing.JPanel();
   javax.swing.JLabel JLabelOrientation = new javax.swing.JLabel();
   javax.swing.JComboBox JComboBoxOrientation = new javax.swing.JComboBox();
   javax.swing.JPanel JPanelOKCancel = new javax.swing.JPanel();
   javax.swing.JButton JButtonOK = new javax.swing.JButton();
   javax.swing.JButton JButtonCancel = new javax.swing.JButton();

   class SymAction implements java.awt.event.ActionListener {
      public void actionPerformed(java.awt.event.ActionEvent event) {
         Object object = event.getSource();
         if (object == JButtonCancel)
            JButtonCancel_actionPerformed(event);
         else if (object == JButtonOK)
            JButtonOK_actionPerformed(event);
      }
   }

   void JButtonCancel_actionPerformed(java.awt.event.ActionEvent event) {
      try {
         // JPageSetupDialog Hide the JPageSetupDialog
         JComboBoxOrientation.setSelectedIndex(rememberOrientationAtStart); // restore orientation if cancelled
         if (rememberOrientationAtStart == 0) j2printer.setOrientation(J2Printer.PORTRAIT);
         if (rememberOrientationAtStart == 1) j2printer.setOrientation(J2Printer.LANDSCAPE);
         if (rememberOrientationAtStart == 2) j2printer.setOrientation(J2Printer.REVERSE_LANDSCAPE);
         this.setVisible(false);
      } catch (Exception e) {
      }
   }

   void JButtonOK_actionPerformed(java.awt.event.ActionEvent event) {
      whichPagesComboIndex = JComboBoxWhichPages.getSelectedIndex();
      updateJ2Printer();
      try {
         // JPageSetupDialog Hide the JPageSetupDialog
         this.setVisible(false);
      } catch (Exception e) {
      }
   }

   private void updateJ2Printer() {
      if (j2printer == null) return;

      j2printer.setGapBelowHeader(Double.valueOf(JTextFieldGapBelowHeader.getText()).doubleValue());
      j2printer.setGapAboveFooter(Double.valueOf(JTextFieldGapAboveFooter.getText()).doubleValue());
      j2printer.setLeftMargin(Double.valueOf(JTextFieldLeftMargin.getText()).doubleValue());
      j2printer.setRightMargin(Double.valueOf(JTextFieldRightMargin.getText()).doubleValue());
      j2printer.setTopMargin(Double.valueOf(JTextFieldTopMargin.getText()).doubleValue());
      j2printer.setBottomMargin(Double.valueOf(JTextFieldBottomMargin.getText()).doubleValue());
      if (JComboBoxOrientation.getSelectedIndex() == 0) j2printer.setOrientation(J2Printer.PORTRAIT);
      if (JComboBoxOrientation.getSelectedIndex() == 1) j2printer.setOrientation(J2Printer.LANDSCAPE);
      if (JComboBoxOrientation.getSelectedIndex() == 2) j2printer.setOrientation(J2Printer.REVERSE_LANDSCAPE);
      j2printer.setPrintJobName(JTextFieldPrintJobName.getText());
      j2printer.setSeparatePrintThread(JCheckBoxSeparatePrintThread.isSelected());
      j2printer.setNumberOfCopies(Integer.valueOf(JTextFieldNumberOfCopies.getText()).intValue());
      j2printer.setPrintDialogUsed(JCheckBoxPrintDialogUsed.isSelected());
      j2printer.setScale(Double.valueOf(JTextFieldScale.getText()).doubleValue());
      j2printer.setNup(1);
      if (JComboBoxNup.getSelectedIndex() == 1) j2printer.setNup(2);
      if (JComboBoxNup.getSelectedIndex() == 2) j2printer.setNup(4);
      if (JComboBoxNup.getSelectedIndex() == 3) j2printer.setNup(6);
      if (JComboBoxNup.getSelectedIndex() == 4) j2printer.setNup(9);
      if (JComboBoxNup.getSelectedIndex() == 5) j2printer.setNup(16);

      if (JComboBoxWhichPages.getSelectedIndex() == 0) { // ALL pages
         if (JComboBoxHeaderStyle.getSelectedIndex() == 0) j2printer.setHeaderStyle(J2Printer.BOX);
         if (JComboBoxHeaderStyle.getSelectedIndex() == 1) j2printer.setHeaderStyle(J2Printer.LINE);
         if (JComboBoxHeaderStyle.getSelectedIndex() == 2) j2printer.setHeaderStyle(J2Printer.NONE);
         if (JComboBoxFooterStyle.getSelectedIndex() == 0) j2printer.setFooterStyle(J2Printer.BOX);
         if (JComboBoxFooterStyle.getSelectedIndex() == 1) j2printer.setFooterStyle(J2Printer.LINE);
         if (JComboBoxFooterStyle.getSelectedIndex() == 2) j2printer.setFooterStyle(J2Printer.NONE);
         j2printer.setHeaderFont(string2Font(JTextFieldHeaderFooterFont.getText()));
         j2printer.setFooterFont(string2Font(JTextFieldHeaderFooterFont.getText()));
         j2printer.setLeftHeader(setObjectString(j2printer.getLeftHeader(), JTextFieldLeftHeader.getText()));
         j2printer.setCenterHeader(setObjectString(j2printer.getCenterHeader(), JTextFieldCenterHeader.getText()));
         j2printer.setRightHeader(setObjectString(j2printer.getRightHeader(), JTextFieldRightHeader.getText()));
         j2printer.setLeftFooter(setObjectString(j2printer.getLeftFooter(), JTextFieldLeftFooter.getText()));
         j2printer.setCenterFooter(setObjectString(j2printer.getCenterFooter(), JTextFieldCenterFooter.getText()));
         j2printer.setRightFooter(setObjectString(j2printer.getRightFooter(), JTextFieldRightFooter.getText()));
      }
      else { // else FIRST or REST of pages
         int which = J2Printer.FIRST;
         if (JComboBoxWhichPages.getSelectedIndex() == 2) which = J2Printer.REST;

         if (JComboBoxHeaderStyle.getSelectedIndex() == 0) j2printer.setHeaderStyle(which, J2Printer.BOX);
         if (JComboBoxHeaderStyle.getSelectedIndex() == 1) j2printer.setHeaderStyle(which, J2Printer.LINE);
         if (JComboBoxHeaderStyle.getSelectedIndex() == 2) j2printer.setHeaderStyle(which, J2Printer.NONE);
         if (JComboBoxFooterStyle.getSelectedIndex() == 0) j2printer.setFooterStyle(which, J2Printer.BOX);
         if (JComboBoxFooterStyle.getSelectedIndex() == 1) j2printer.setFooterStyle(which, J2Printer.LINE);
         if (JComboBoxFooterStyle.getSelectedIndex() == 2) j2printer.setFooterStyle(which, J2Printer.NONE);
         j2printer.setHeaderFont(string2Font(JTextFieldHeaderFooterFont.getText()));
         j2printer.setFooterFont(string2Font(JTextFieldHeaderFooterFont.getText()));
         j2printer.setLeftHeader(which, setObjectString(j2printer.getLeftHeader(), JTextFieldLeftHeader.getText()));
         j2printer.setCenterHeader(which, setObjectString(j2printer.getCenterHeader(), JTextFieldCenterHeader.getText()));
         j2printer.setRightHeader(which, setObjectString(j2printer.getRightHeader(), JTextFieldRightHeader.getText()));
         j2printer.setLeftFooter(which, setObjectString(j2printer.getLeftFooter(), JTextFieldLeftFooter.getText()));
         j2printer.setCenterFooter(which, setObjectString(j2printer.getCenterFooter(), JTextFieldCenterFooter.getText()));
         j2printer.setRightFooter(which, setObjectString(j2printer.getRightFooter(), JTextFieldRightFooter.getText()));
      }

   }

   private Font string2Font(String s) {
      int firstcomma = s.indexOf(",");
      int lastcomma = s.lastIndexOf(",");
      String font = s.substring(0, firstcomma);
      String stylename = s.substring(firstcomma + 1, lastcomma);
      int style = Font.PLAIN;
      if (stylename.equals("BOLD")) style = Font.BOLD;
      if (stylename.equals("ITALIC")) style = Font.ITALIC;
      int size = Integer.valueOf(s.substring(lastcomma + 1)).intValue();
      return new Font(font, style, size);
   }

   class SymItem implements java.awt.event.ItemListener {
      public void itemStateChanged(java.awt.event.ItemEvent event) {
         Object object = event.getSource();
         if (object == JComboBoxOrientation) JComboBoxOrientation_itemStateChanged(event);
         else if (object == JComboBoxWhichPages) JComboBoxWhichPages_itemStateChanged(event);
      }
   }

   void JComboBoxOrientation_itemStateChanged(java.awt.event.ItemEvent event) {
      // change of orientation causes change in unprintable margins
      if (JComboBoxOrientation.getSelectedIndex() == 0) j2printer.setOrientation(J2Printer.PORTRAIT);
      if (JComboBoxOrientation.getSelectedIndex() == 1) j2printer.setOrientation(J2Printer.LANDSCAPE);
      if (JComboBoxOrientation.getSelectedIndex() == 2) j2printer.setOrientation(J2Printer.REVERSE_LANDSCAPE);
      repaint();
   }

   void JComboBoxWhichPages_itemStateChanged(java.awt.event.ItemEvent event) {
      updatePageSetupDialog();
   }
}
