import java.awt.print.*;
import javax.swing.*;

/**
 * A utility class for controlling the printing process.
 * 
 * @author Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class PrinterController
{
    /**
     * Print the given Printable (displaying any error messages in
     * a JOptionPane).
     * 
     * @param printable  The Printable to print
     * @param parent     The parent JFrame
     */
    public static void print(Printable printable, JFrame parent)
    {
        PrinterJob job = PrinterJob.getPrinterJob();
        try
        {
            job.setPrintable(printable);
            boolean shouldPrint = job.printDialog();
            if (shouldPrint) job.print();
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(parent, 
                                          "Unable to print!",
                                          "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
}
