GNU Classpath (0.17) | ||
Frames | No Frames |
1: /* PrinterJob.java -- This job is the printer control class 2: Copyright (C) 1999, 2004, 2005 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package java.awt.print; 40: 41: import java.awt.HeadlessException; 42: 43: import javax.print.PrintService; 44: import javax.print.attribute.PrintRequestAttributeSet; 45: 46: /** 47: * This class controls printing. 48: * 49: * @author Aaron M. Renn (arenn@urbanophile.com) 50: */ 51: public abstract class PrinterJob 52: { 53: // The print service associated with this job 54: private PrintService printer = null; 55: 56: /** 57: * Creates a new print job. 58: * 59: * @return A <code>PrinterJob</code> object for the newly created print job. 60: */ 61: public static PrinterJob getPrinterJob() 62: { 63: // FIXME: Need to fix this to load a default implementation instance. 64: return null; 65: } 66: 67: /** 68: * Initializes a new instance of <code>PrinterJob</code>. 69: */ 70: public PrinterJob() 71: { 72: } 73: 74: /** 75: * Returns the number of copies to be printed. 76: * 77: * @return The number of copies to be printed. 78: */ 79: public abstract int getCopies(); 80: 81: /** 82: * Sets the number of copies to be printed. 83: * 84: * @param copies The number of copies to be printed. 85: */ 86: public abstract void setCopies(int copies); 87: 88: /** 89: * Returns the name of the print job. 90: * 91: * @return The name of the print job. 92: */ 93: public abstract String getJobName(); 94: 95: /** 96: * Sets the name of the print job. 97: * 98: * @param job_name The name of the print job. 99: */ 100: public abstract void setJobName(String job_name); 101: 102: /** 103: * Returns the printing user name. 104: * 105: * @return The printing username. 106: */ 107: public abstract String getUserName(); 108: 109: /** 110: * Cancels an in progress print job. 111: */ 112: public abstract void cancel(); 113: 114: /** 115: * Tests whether or not this job has been cancelled. 116: * 117: * @return <code>true</code> if this job has been cancelled, <code>false</code> 118: * otherwise. 119: */ 120: public abstract boolean isCancelled(); 121: 122: /** 123: * Returns an instance of the default page which will have the default 124: * paper and orientation. 125: * 126: * @return A default instance of <code>PageFormat</code>. 127: */ 128: public PageFormat defaultPage() 129: { 130: return new PageFormat(); 131: } 132: 133: /** 134: * Clones the specified <code>PageFormat</code> object then alters the 135: * clone so that it represents the default page format. 136: * 137: * @param page_format The <code>PageFormat</code> to clone. 138: * 139: * @return A new default page format. 140: */ 141: public abstract PageFormat defaultPage(PageFormat page_format); 142: 143: /** 144: * Displays a dialog box to the user which allows the page format 145: * attributes to be modified. 146: * 147: * @param page_format The <code>PageFormat</code> object to modify. 148: * 149: * @return The modified <code>PageFormat</code>. 150: */ 151: public abstract PageFormat pageDialog(PageFormat page_format) 152: throws HeadlessException; 153: 154: /** 155: * @since 1.4 156: */ 157: public PageFormat pageDialog(PrintRequestAttributeSet attributes) 158: throws HeadlessException 159: { 160: // FIXME: Implement this for real. 161: return pageDialog((PageFormat) null); 162: } 163: 164: /** 165: * Prints the pages. 166: */ 167: public abstract void print () throws PrinterException; 168: 169: /** 170: * Prints the page with given attributes. 171: */ 172: public abstract void print (PrintRequestAttributeSet attributes) 173: throws PrinterException; 174: 175: /** 176: * Displays a dialog box to the user which allows the print job 177: * attributes to be modified. 178: * 179: * @return <code>false</code> if the user cancels the dialog box, 180: * <code>true</code> otherwise. 181: */ 182: public abstract boolean printDialog() 183: throws HeadlessException; 184: 185: /** 186: * Displays a dialog box to the user which allows the print job 187: * attributes to be modified. 188: * 189: * @return <code>false</code> if the user cancels the dialog box, 190: * <code>true</code> otherwise. 191: */ 192: public boolean printDialog(PrintRequestAttributeSet attributes) 193: throws HeadlessException 194: { 195: // FIXME: Implement this for real. 196: return printDialog(); 197: } 198: 199: /** 200: * This sets the pages that are to be printed. 201: * 202: * @param pageable The pages to be printed, which may not be <code>null</code>. 203: */ 204: public abstract void setPageable(Pageable pageable); 205: 206: /** 207: * Sets this specified <code>Printable</code> as the one to use for 208: * rendering the pages on the print device. 209: * 210: * @param printable The <code>Printable</code> for the print job. 211: */ 212: public abstract void setPrintable(Printable printable); 213: 214: /** 215: * Sets the <code>Printable</code> and the page format for the pages 216: * to be printed. 217: * 218: * @param printable The <code>Printable</code> for the print job. 219: * @param page_format The <code>PageFormat</code> for the print job. 220: */ 221: public abstract void setPrintable(Printable printable, PageFormat page_format); 222: 223: /** 224: * Makes any alterations to the specified <code>PageFormat</code> 225: * necessary to make it work with the current printer. The alterations 226: * are made to a clone of the input object, which is then returned. 227: * 228: * @param page_format The <code>PageFormat</code> to validate. 229: * 230: * @return The validated <code>PageFormat</code>. 231: */ 232: public abstract PageFormat validatePage(PageFormat page_format); 233: 234: /** 235: * Find and return 2D image print services. 236: * 237: * This is the same as calling PrintServiceLookup.lookupPrintServices() 238: * with Pageable service-specified DocFlavor. 239: * @return Array of PrintService objects, could be empty. 240: * @since 1.4 241: */ 242: public static PrintService[] lookupPrintServices() 243: { 244: return new PrintService[0]; 245: // FIXME: 246: // Enable this when javax.print has this implemented. 247: // return PrintServiceLookup.lookupPrintServices( 248: // new DocFlavor("application/x-java-jvm-local-objectref", 249: // "java.awt.print.Pageable"), 250: // null); 251: } 252: 253: /** 254: * Find and return 2D image stream print services. 255: * 256: * This is the same as calling 257: * StreamPrintServiceFactory.lookupStreamPrintServices() 258: * with Pageable service-specified DocFlavor. 259: * @param mimeType The output format mime type, or null for any type. 260: * @return Array of stream print services, could be empty. 261: * @since 1.4 262: */ 263: // FIXME: 264: // Enable when javax.print has StreamPrintServiceFactory 265: // public static StreamPrintServiceFactory[] lookupStreamPrintServices(String mimeType) 266: // { 267: // return StreamPrintServiceFactory.lookupStreamServiceFactories( 268: // new DocFlavor("application/x-java-jvm-local-objectref", 269: // "java.awt.print.Pageable"), 270: // mimeType); 271: // } 272: 273: /** 274: * Return the printer for this job. If print services aren't supported by 275: * the subclass, returns null. 276: * 277: * @return The associated PrintService. 278: * @since 1.4 279: */ 280: public PrintService getPrintService() 281: { 282: return null; 283: } 284: 285: /** 286: * Change the printer for this print job to service. Subclasses that 287: * support setting the print service override this method. Throws 288: * PrinterException when the class doesn't support setting the printer, 289: * the service doesn't support Pageable or Printable interfaces for 2D 290: * print output. 291: * @param service The new printer to use. 292: * @throws PrinterException if service is not valid. 293: */ 294: public void setPrintService(PrintService service) 295: throws PrinterException 296: { 297: throw new PrinterException(); 298: } 299: }
GNU Classpath (0.17) |