blob: 42836e820d59ba00ffc9d9be41a250cf0d6e1f97 [file] [log] [blame]
/*
* @(#)$RCSfile: PrintContext.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:34 $
*
* (C) Copyright IBM Corp. 1998-1999. All Rights Reserved.
*
* The program is provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* IBM will not be liable for any damages suffered by you as a result
* of using the Program. In no event will IBM be liable for any
* special, indirect or consequential damages or lost profits even if
* IBM has been advised of the possibility of their occurrence. IBM
* will not be liable for any third party claims against you.
*/
// Requires Java2
package com.ibm.richtext.print;
import com.ibm.richtext.styledtext.MConstText;
import com.ibm.richtext.textlayout.attributes.AttributeMap;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.awt.print.PrinterException;
final class PrintContext implements Printable {
static final String COPYRIGHT =
"(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
private MConstTextPrintable fPrintable;
PrintContext(MConstText text, AttributeMap defaultStyles, PageFormat pf) {
int width = (int) Math.round(pf.getImageableWidth());
int height = (int) Math.round(pf.getImageableHeight());
int left = (((int)Math.round(pf.getWidth())) - width) / 2;
int top = (((int)Math.round(pf.getHeight())) - height) / 2;
Rectangle pageRect = new Rectangle(left, top, width, height);
fPrintable = new MConstTextPrintable(text, defaultStyles, pageRect);
}
public int print(Graphics graphics,
PageFormat format,
int pageIndex) throws PrinterException {
if (false)
throw new PrinterException("save trees");
if (fPrintable.print(graphics, pageIndex) == fPrintable.PAGE_EXISTS) {
return PAGE_EXISTS;
}
else {
return NO_SUCH_PAGE;
}
}
static void userPrintText(MConstText text,
AttributeMap defaultStyles,
Frame frame,
String jobTitle) {
PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName(jobTitle);
if (job.printDialog()) {
job.setPrintable(new PrintContext(text, defaultStyles, job.defaultPage()));
try {
job.print();
}
catch(PrinterException e) {
System.out.println("Printer exception: " + e);
}
}
}
}