package jas.plot.java1; import jas.plot.PrintHelper; import java.awt.Component; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.PrintJob; import javax.swing.RepaintManager; import javax.swing.SwingUtilities; public class PrintHelper11 extends PrintHelper { public void printTarget(Component target) throws Exception { if (debugPrinting) System.out.println("PrintHelper11 printing "+target.getClass().getName()); Frame f = (Frame) SwingUtilities.getAncestorOfClass(Frame.class,target); PrintJob pj = target.getToolkit().getPrintJob(f,"JAS Print Job",null); if (pj != null) { RepaintManager pm = RepaintManager.currentManager(target); boolean save = pm.isDoubleBufferingEnabled(); try { pm.setDoubleBufferingEnabled(false); Graphics g = pj.getGraphics(); // Lets try to center the image on the page (if possible) // We are rather limited in what we can do with JDK1.1 since there // is no easy way to scale the image. We can do much better with // JDK 1.2 Dimension page = pj.getPageDimension(); Dimension size = target.getSize(); boolean trouble = page.width<size.width || page.height<size.height; if (!trouble) g.translate((page.width-size.width)/2,(page.height-size.height)/2); setPrintingThread(Thread.currentThread()); target.print(g); g.dispose(); if (trouble) throw new PrintWarning("Warning - page was too big for printer"); } catch (Exception t) { if (debugPrinting) System.out.println("Exception during printing "+t); throw t; } finally { pj.end(); pm.setDoubleBufferingEnabled(save); setPrintingThread(null); } } } class PrintWarning extends Exception { PrintWarning(String s) { super(s); } } // Unimplemented methods public void setOrientation(int orientation){} public void setScaleUp(boolean scaleUp){} }