import java.awt.*;
import javax.swing.*;
import com.wildcrest.j2printerworks.*;
import java.awt.event.*;

class J2PanelPrinterGraphicsTest {

    static public void main(String args[]){

      final JFrame frame = new JFrame("J2PanelPrinter test");
      frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) { System.exit(0); }});

      JPanel panel = new JPanel() {
            public Dimension getPreferredSize() {
                int width = 190, height = 150;
                try {
                    Insets in = getBorder().getBorderInsets(this);
                    width = width + in.left + in.right;
                    height = height + in.top + in.bottom;
                } catch (Exception e) { }
                return new Dimension(width, height);
            }
            public void paint(Graphics g) {
                super.paint(g);     // includes possible Border
                int left=0, top=0;
                try {
                    Insets in = getBorder().getBorderInsets(this);
                    left = in.left; top = in.top;
                } catch (Exception e) { }
                g.translate(left, top);
                g.setColor(Color.white); g.fillRect(0,0,190,150);
                g.setColor(Color.yellow); g.fillRect(50,100,25,25);
                g.setColor(Color.black); g.drawRect(50,100,25,25);
                g.setColor(Color.pink); g.fillRect(85,75,25,50);
                g.setColor(Color.black); g.drawRect(85,75,25,50);
                g.setColor(Color.orange); g.fillRect(120,50,25,75);
                g.setColor(Color.black); g.drawRect(120,50,25,75);
                g.drawLine(25,135,25,25); g.drawLine(15,125,175,125);
                g.setFont(new Font("SansSerif",Font.PLAIN,10));
                g.drawString("Graphics",40,95);
                g.drawString("in a",90,70);
                g.drawString("JPanel",115,45);
                ImageIcon icon = new ImageIcon(this.getClass().getResource("J2PrinterWorksC32.gif"));
                g.drawImage(icon.getImage(),45,30,frame);
                g.translate(-left, -top);
            }
        };


        J2Printer printer = new J2Printer();
        printer.setSeparatePrintThread(false);

        J2PanelPrinter panelPrinter = new J2PanelPrinter(panel);

        // Java-style border: panel.setBorder(new javax.swing.border.LineBorder(Color.green,20));
        // J2PW-style border: panelPrinter.setOutsideLines(true);
        // (can use either or both)

        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);

        printer.addPageable(panelPrinter);
        printer.setPrintPreviewScale(1.0);
        printer.showPrintPreviewDialog(frame);
        //printer.print();
    }
}

