FileDocCategorySizeDatePackage
FilePrinter.javaAPI DocExample4976Mon Apr 05 12:02:26 BST 1999None

FilePrinter.java

import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
 
import javax.swing.*;
import javax.swing.event.*;
 
public class FilePrinter
    extends JFrame {
  public static void main(String[] args) {
    new FilePrinter();
  }
  
  private PageFormat mPageFormat;
  private FilePageRenderer mPageRenderer;
  private String mTitle;
  
  public FilePrinter() {
    super("FilePrinter v1.0");
    createUI();
    PrinterJob pj = PrinterJob.getPrinterJob();
    mPageFormat = pj.defaultPage();
    setVisible(true);
  }
 
  protected void createUI() {
    setSize(350, 300);
    center();
    Container content = getContentPane();
    content.setLayout(new BorderLayout());
 
    // Add the menu bar.
    JMenuBar mb = new JMenuBar();
    JMenu file = new JMenu("File", true);
    file.add(new FileOpenAction()).setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));
    file.add(new FilePrintAction()).setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK));
    file.add(new FilePageSetupAction()).setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_P,
             Event.CTRL_MASK | Event.SHIFT_MASK));
    file.addSeparator();
    file.add(new FileQuitAction()).setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK));
    mb.add(file);
    JMenu page = new JMenu("Page", true);
    page.add(new PageNextPageAction()).setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0));
    page.add(new PagePreviousPageAction()).setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0));
    mb.add(page);
    setJMenuBar(mb);
    
    // Add the contents of the window.
    getContentPane().setLayout(new BorderLayout());

    // Exit the application when the window is closed.
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }
 
  protected void center() {
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = getSize();
    int x = (screenSize.width - frameSize.width) / 2;
    int y = (screenSize.height - frameSize.height) / 2;
    setLocation(x, y);
  }
  
  public void showTitle() {
    int currentPage = mPageRenderer.getCurrentPage() + 1;
    int numPages = mPageRenderer.getNumPages();
    setTitle(mTitle + " - page " + currentPage + " of " + numPages);
  }
  
  public class FileOpenAction
      extends AbstractAction {
    public FileOpenAction() { super("Open..."); }
    public void actionPerformed(ActionEvent ae) {
      // Pop up a file dialog.
      JFileChooser fc = new JFileChooser(".");
      int result = fc.showOpenDialog(FilePrinter.this);
      if (result != 0) { return; }
      java.io.File f = fc.getSelectedFile();
      if (f == null) { return; }
      // Load the specified file.
      try {
        mPageRenderer = new FilePageRenderer(f, mPageFormat);
        mTitle = "[" + f.getName() + "]";
        showTitle();
        JScrollPane jsp = new JScrollPane(mPageRenderer);
        getContentPane().removeAll();
        getContentPane().add(jsp, BorderLayout.CENTER);
        validate();
      }
      catch (java.io.IOException ioe) {
        System.out.println(ioe);
      }
    }
  }
 
  public class FilePrintAction
      extends AbstractAction {
    public FilePrintAction() { super("Print"); }
    public void actionPerformed(ActionEvent ae) {
      PrinterJob pj = PrinterJob.getPrinterJob();
      pj.setPrintable(mPageRenderer, mPageFormat);
      if (pj.printDialog()) {
        try { pj.print(); }
        catch (PrinterException e) {
          System.out.println(e);
        }
      }
    }
  }
 
  public class FilePageSetupAction
      extends AbstractAction {
    public FilePageSetupAction() { super("Page setup..."); }
    public void actionPerformed(ActionEvent ae) {
      PrinterJob pj = PrinterJob.getPrinterJob();
      mPageFormat = pj.pageDialog(mPageFormat);
      if (mPageRenderer != null) {
        mPageRenderer.paginate(mPageFormat);
        showTitle();
      }
    }
  }
  
  public class FileQuitAction
      extends AbstractAction {
    public FileQuitAction() { super("Quit"); }
    public void actionPerformed(ActionEvent ae) {
      System.exit(0);
    }
  }
  
  public class PageNextPageAction
      extends AbstractAction {
    public PageNextPageAction() { super("Next page"); }
    public void actionPerformed(ActionEvent ae) {
      if (mPageRenderer != null) mPageRenderer.nextPage();
      showTitle();
    }
  }
  
  public class PagePreviousPageAction
      extends AbstractAction {
    public PagePreviousPageAction() { super("Previous page"); }
    public void actionPerformed(ActionEvent ae) {
      if (mPageRenderer != null) mPageRenderer.previousPage();
      showTitle();
    }
  }
}