/*
* @(#)PrintService.java 1.14 06/06/22
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.print;
import java.util.Locale;
import javax.print.attribute.Attribute;
import javax.print.attribute.AttributeSet;
import javax.print.attribute.PrintServiceAttribute;
import javax.print.attribute.PrintServiceAttributeSet;
import javax.print.event.PrintServiceAttributeListener;
/**
* Interface PrintService is the factory for a DocPrintJob. A PrintService
* describes the capabilities of a Printer and can be queried regarding
* a printer's supported attributes.
* <P>
* Example:
* <PRE>
* DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
* PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
* aset.add(MediaSizeName.ISO_A4);
* PrintService[] pservices =
* PrintServiceLookup.lookupPrintServices(flavor, aset);
* if (pservices.length > 0) {
* DocPrintJob pj = pservices[0].createPrintJob();
* try {
* FileInputStream fis = new FileInputStream("test.ps");
* Doc doc = new SimpleDoc(fis, flavor, null);
* pj.print(doc, aset);
* } catch (FileNotFoundException fe) {
* } catch (PrintException e) {
* }
* }
* </PRE>
*/
public interface PrintService {
/** Returns a String name for this print service which may be used
* by applications to request a particular print service.
* In a suitable context, such as a name service, this name must be
* unique.
* In some environments this unique name may be the same as the user
* friendly printer name defined as the
* {@link javax.print.attribute.standard.PrinterName PrinterName}
* attribute.
* @return name of the service.
*/
public String getName();
/**
* Creates and returns a PrintJob capable of handling data from
* any of the supported document flavors.
* @return a DocPrintJob object
*/
public DocPrintJob createPrintJob();
/**
* Registers a listener for events on this PrintService.
* @param listener a PrintServiceAttributeListener, which
* monitors the status of a print service
* @see #removePrintServiceAttributeListener
*/
public void addPrintServiceAttributeListener(
PrintServiceAttributeListener listener);
/**
* Removes the print-service listener from this print service.
* This means the listener is no longer interested in
* <code>PrintService</code> events.
* @param listener a PrintServiceAttributeListener object
* @see #addPrintServiceAttributeListener
*/
public void removePrintServiceAttributeListener(
PrintServiceAttributeListener listener);
/**
* Obtains this print service's set of printer description attributes
* giving this Print Service's status. The returned attribute set object
* is unmodifiable. The returned attribute set object is a "snapshot" of
* this Print Service's attribute set at the time of the
* <CODE>getAttributes()</CODE> method call: that is, the returned
* attribute set's contents will <I>not</I> be updated if this print
* service's attribute set's contents change in the future. To detect
* changes in attribute values, call <CODE>getAttributes()</CODE> again
* and compare the new attribute set to the previous attribute set;
* alternatively, register a listener for print service events.
*
* @return Unmodifiable snapshot of this Print Service's attribute set.
* May be empty, but not null.
*/
public PrintServiceAttributeSet getAttributes();
/**
=1= |