import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
import com.wildcrest.j2printerworks.*;

class J2Printer14CrossPlatformTest{
    static J2Printer14 printer;
    static PrintRequestAttributeSet aset;
    static JFrame frame;

    static public void main(String args[]){
        printer = new J2Printer14(); // need serial number arg to eliminate header

        JTextPane pane = new JTextPane();
        pane.setContentType("text/html");
        String path = new java.io.File(".").getAbsolutePath();
        pane.setText("<html><table>"
                     + "<tr><td width=350>"
                     + "<table valign=top><tr><td width=110><img src=\"file:///"+path+"/WAlogo.gif\"></td>"
                     + "<td><font color=#4090B0 size=+2>W</font>"
                     + "<font color=#4090B0 size=+0>ildcrest </font>"
                     + "<font color=#4090B0 size=+1>A</font>"
                     + "<font color=#4090B0 size=-1>ssociates</font>"
                     + "<br>&nbsp;13320 Wildcrest Drive<br>&nbsp;Los Altos Hills, CA 94022</td></tr></table>"
                     + "<td></td></tr>"
                     + "<td></td><td><br><br><font size=+1><b>John Q. Customer</b></font><br>National Software Company<br>"
                     + "1234 S. Commercial Avenue<br>Enterprise, CA 90273</td>"
                     + "</table></html>");
        //simpler test: pane.setText("<html>Here are two lines of <b>HTML text</b>"
        //                         + "<br>that <i>will</i> be printed</html>");
        J2TextPrinter textPrinter = new J2TextPrinter(pane);

        //printer.setPrinter("LaserWriter Select 360");     // use to select specific printer
        //printer.setPrinter("Acrobat Distiller");          // use to select specific printer
        //test: printer.setPrintPreviewCloseOnPrint(false);
        printer.addPageable(textPrinter);
        printer.setLeftMargin(0.0); printer.setRightMargin(0.0);
        printer.setTopMargin(0.0); printer.setBottomMargin(0.0);
        printer.setHeaderStyle(J2Printer.NONE); printer.setFooterStyle(J2Printer.NONE);
        printer.clearHeaders(); printer.clearFooters();

        // test specifying particular printer: printer.setPrinter("Apple LaserWriter Select 360");

        aset = new HashPrintRequestAttributeSet();
        aset.add(OrientationRequested.LANDSCAPE);
        aset.add(MediaSizeName.NA_NUMBER_10_ENVELOPE);  // or MediaSizeName.ISO_A4, etc.
        //other examples:
        //aset.add(new Copies(2));
        //aset.add(new JobName("My print job name", null));
        //aset.add(new PageRanges(2,printer.getPageable().getNumberOfPages()));
        //aset.add(PrintQuality.DRAFT);
        //aset.add(Chromaticity.MONOCHROME);
        printer.setPrintRequestAttributeSet(aset);

        // alternatively, use these to test the pre-JDK 1.4 APIs
        //printer.setNumberOfCopies(2);
        //printer.setPrintJobName("This is my print job");
        //printer.setOrientation(printer.LANDSCAPE);
        //printer.setPaperSize(595.2755737304688, 841.8897705078125); // = A4

        frame = new JFrame("J2Printer14 test");
        printer.setParentFrame(frame);
        frame.getContentPane().setLayout(new BorderLayout());
        frame.getContentPane().add(new JScrollPane(pane), "Center");

        JPanel buttonPanel = new JPanel();
        JButton settings = new JButton("Settings");
        JButton printpreview = new JButton("Print Preview");
        JButton pagesetup = new JButton("Page Setup");
        JButton print = new JButton("Print");
        buttonPanel.add(settings); buttonPanel.add(printpreview);
        buttonPanel.add(pagesetup); buttonPanel.add(print); print.grabFocus();
        frame.getContentPane().add(buttonPanel, "South");

        JCheckBox box = new JCheckBox("Use cross-platform dialogs",true);
        JPanel boxPanel = new JPanel();
        boxPanel.add(box);
        frame.getContentPane().add(boxPanel, "North");
        box.setFocusPainted(false);    // turn off "has focus" display

        frame.setBounds(25,25,650,350);
        frame.setVisible(true);

        box.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                 printer.setCrossPlatformDialogs(((JCheckBox)e.getSource()).isSelected());
        }});
        settings.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) { new J2PrinterSettingsDialog(frame, printer).setVisible(true); }});
        printpreview.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) { printer.showPrintPreviewDialog(frame); }});
        pagesetup.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               printer.showPageSetupDialog();
            }});
        print.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               printer.print();
            }});
        frame.addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {
              System.exit(0);
           }
        });

        /* test
         printer.addPropertyChangeListener(new PrintingEventHandler() {
           public void pageSetupDialogOK() { System.out.println("Page setup dialog OK"); }
           public void pageSetupDialogCanceled() { System.out.println("Page setup dialog canceled"); }
        });
        */

    }

}


