/*
* @(#)DocPrintJob.java 1.12 06/04/07
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.print;
import javax.print.attribute.AttributeSet;
import javax.print.attribute.PrintJobAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.event.PrintJobAttributeListener;
import javax.print.event.PrintJobListener;
import javax.print.PrintException;
/**
*
* This interface represents a print job that can print a specified
* document with a set of job attributes. An object implementing
* this interface is obtained from a print service.
*
*/
public interface DocPrintJob {
/**
* Determines the {@link PrintService} object to which this print job
* object is bound.
*
* @return <code>PrintService</code> object.
*
*/
public PrintService getPrintService();
/**
* Obtains this Print Job's set of printing attributes.
* The returned attribute set object is unmodifiable.
* The returned attribute set object is a "snapshot" of this Print Job's
* attribute set at the time of the {@link #getAttributes()} method
* call; that is, the returned attribute set's object's contents will
* not be updated if this Print Job'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 job events.
* The returned value may be an empty set but should not be null.
* @return the print job attributes
*/
public PrintJobAttributeSet getAttributes();
/**
* Registers a listener for event occurring during this print job.
* If listener is null, no exception is thrown and no action is
* performed.
* If listener is already registered, it will be registered again.
* @see #removePrintJobListener
*
* @param listener The object implementing the listener interface
*
*/
public void addPrintJobListener(PrintJobListener listener);
/**
* Removes a listener from this print job.
* This method performs no function, nor does it throw an exception,
* if the listener specified by the argument was not previously added
* to this component. If listener is null, no exception is thrown and
* no action is performed. If a listener was registered more than once
* only one of the registrations will be removed.
* @see #addPrintJobListener
*
* @param listener The object implementing the listener interface
*/
public void removePrintJobListener(PrintJobListener listener);
/**
* Registers a listener for changes in the specified attributes.
* If listener is null, no exception is thrown and no action is
* performed.
* To determine the attribute updates that may be reported by this job,
* a client can call <code>getAttributes()</code> and identify the
* subset that are interesting and likely to be reported to the
* listener. Clients expecting to be updated about changes in a
* specific job attribute should verify it is in that set, but
* updates about an attribute will be made only if it changes and this
* is detected by the job. Also updates may be subject to batching
* by the job. To minimise overhead in print job processing it is
* recommended to listen on only that subset of attributes which
* are likely to change.
* If the specified set is empty no attribute updates will be reported
* to the listener.
* If the attribute set is null, then this means to listen on all
* dynamic attributes that the job supports. This may result in no
* update notifications if a job can not report any attribute updates.
*
* If listener is already registered, it will be registered again.
* @see #removePrintJobAttributeListener
*
* @param listener The object implementing the listener interface
=1= |