123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- /* PrintService.java --
- Copyright (C) 2004, 2006 Free Software Foundation, Inc.
- This file is part of GNU Classpath.
- GNU Classpath is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- GNU Classpath is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with GNU Classpath; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA.
- Linking this library statically or dynamically with other modules is
- making a combined work based on this library. Thus, the terms and
- conditions of the GNU General Public License cover the whole
- combination.
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent
- modules, and to copy and distribute the resulting executable under
- terms of your choice, provided that you also meet, for each linked
- independent module, the terms and conditions of the license of that
- module. An independent module is a module which is not derived from
- or based on this library. If you modify this library, you may extend
- this exception to your version of the library, but you are not
- obligated to do so. If you do not wish to do so, delete this
- exception statement from your version. */
- package javax.print;
- 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;
- /**
- * A <code>PrintService</code> represents a printer available for printing.
- * <p>
- * The print service hereby may be a real physical printer device, a printer
- * group with same capabilities or a logical print service (like for example
- * a PDF writer). The print service is used to query the capabilities of the
- * represented printer instance. If a suitable print service is found it is
- * used to create a print job for the actual printing process.
- * </p>
- * @see javax.print.DocPrintJob
- *
- * @author Michael Koch (konqueror@gmx.de)
- */
- public interface PrintService
- {
- /**
- * Creates and returns a new print job which is capable to handle all
- * the document flavors supported by this print service.
- *
- * @return The created print job object.
- */
- DocPrintJob createPrintJob();
- /**
- * Determines if two services refer to the same underlying service.
- *
- * @param obj the service to check against
- *
- * @return <code>true</code> if both services refer to the same underlying
- * service, <code>false</code> otherwise.
- */
- boolean equals(Object obj);
- /**
- * Returns the value of the single specified attribute.
- *
- * @param category the category of a <code>PrintServiceAttribute</code>
- *
- * @return The value of the attribute, or <code>null</code> if the attribute
- * category is not supported by this print service implementation.
- *
- * @throws NullPointerException if category is <code>null</code>.
- * @throws IllegalArgumentException if category is not a class that
- * implements <code>PrintServiceAttribute</code>.
- */
- <T extends PrintServiceAttribute> T getAttribute(Class<T> category);
- /**
- * Returns the attributes describing this print service. The returned
- * attributes set is unmodifiable and represents the current state of
- * the print service. As some print service attributes may change
- * (depends on the print service implementation) a subsequent call to
- * this method may return a different set. To monitor changes a
- * <code>PrintServiceAttributeListener</code> may be registered.
- *
- * @return All the description attributes of this print service.
- * @see #addPrintServiceAttributeListener(PrintServiceAttributeListener)
- */
- PrintServiceAttributeSet getAttributes();
- /**
- * Determines and returns the default value for a given attribute category
- * of this print service.
- * <p>
- * A return value of <code>null</code> means either that the print service
- * does not support the attribute category or there is no default value
- * available for this category. To distinguish these two case one can test
- * with {@link #isAttributeCategorySupported(Class)} if the category is
- * supported.
- * </p>
- *
- * @param category the category of the attribute
- *
- * @return The default value, or <code>null</code>.
- *
- * @throws NullPointerException if <code>category</code> is <code>null</code>
- * @throws IllegalArgumentException if <code>category</code> is a class
- * not implementing <code>Attribute</code>
- */
- Object getDefaultAttributeValue(Class<? extends Attribute> category);
- /**
- * Returns the name of this print service.
- * This may be the value of the <code>PrinterName</code> attribute.
- *
- * @return The print service name.
- */
- String getName();
- /**
- * Returns a factory for UI components if supported by the print service.
- *
- * @return A factory for UI components or <code>null</code>.
- */
- ServiceUIFactory getServiceUIFactory();
- /**
- * Returns all supported attribute categories.
- *
- * @return The class array of all supported attribute categories.
- */
- Class<?>[] getSupportedAttributeCategories();
- /**
- * Determines and returns all supported attribute values of a given
- * attribute category a client can use when setting up a print job
- * for this print service.
- * <p>
- * The returned object may be one of the following types:
- * <ul>
- * <li>A single instance of the attribute category to indicate that any
- * value will be supported.</li>
- * <li>An array of the same type as the attribute category to test,
- * containing all the supported values for this category.</li>
- * <li>A single object (of any other type than the attribute category)
- * which indicates bounds on the supported values.</li>
- * </ul>
- * </p>
- *
- * @param category the attribute category to test
- * @param flavor the document flavor to use, or <code>null</code>
- * @param attributes set of attributes for a supposed job,
- * or <code>null</code>
- *
- * @return A object (as defined above) indicating the supported values
- * for the given attribute category, or <code>null</code> if this print
- * service doesn't support the given attribute category at all.
- *
- * @throws NullPointerException if <code>category</code> is null
- * @throws IllegalArgumentException if <code>category</code> is a class not
- * implementing <code>Attribute</code>, or if <code>flavor</code> is not
- * supported
- */
- Object getSupportedAttributeValues(Class<? extends Attribute> category,
- DocFlavor flavor,
- AttributeSet attributes);
- /**
- * Determines and returns an array of all supported document flavors which
- * can be used to supply print data to this print service.
- * <p>
- * The supported attribute categories may differ between the supported
- * document flavors. To test for supported attributes one can use the
- * {@link #getUnsupportedAttributes(DocFlavor, AttributeSet)} method with
- * the specific doc flavor and attributes set.
- * </p>
- *
- * @return the supported document flavors
- */
- DocFlavor[] getSupportedDocFlavors();
- /**
- * Identifies all the unsupported attributes of the given set of attributes
- * in the context of the specified document flavor.
- * <p>
- * The given flavor has to be supported by the print service (use
- * {@link #isDocFlavorSupported(DocFlavor)} to verify). The method will
- * return <code>null</code> if all given attributes are supported. Otherwise
- * a set of unsupported attributes are returned. The attributes in the
- * returned set may be completely unsupported or only the specific requested
- * value. If flavor is <code>null</code> the default document flavor of the
- * print service is used in the identification process.
- * </p>
- *
- * @param flavor document flavor to test, or <code>null</code>.
- * @param attributes set of printing attributes for a supposed job
- *
- * @return <code>null</code> if this print service supports all the given
- * attributes for the specified doc flavor. Otherwise the set of unsupported
- * attributes are returned.
- *
- * @throws IllegalArgumentException if <code>flavor</code> is unsupported
- */
- AttributeSet getUnsupportedAttributes(DocFlavor flavor, AttributeSet attributes);
- /**
- * Returns a hashcode for this print service.
- *
- * @return The hashcode.
- */
- int hashCode();
- /**
- * Determines a given attribute category is supported by this
- * print service implementation. This only tests for the category
- * not for any specific values of this category nor in the context
- * of a specific document flavor.
- *
- * @param category the category to check
- *
- * @return <code>true</code> if <code>category</code> is supported,
- * <code>false</code> otherwise.
- *
- * @throws NullPointerException if <code>category</code> is <code>null</code>
- * @throws IllegalArgumentException if <code>category</code> is a class not
- * implementing <code>Attribute</code>.
- */
- boolean isAttributeCategorySupported(Class<? extends Attribute> category);
- /**
- * Determines if a given attribute value is supported when creating a print
- * job for this print service.
- * <p>
- * If either the document flavor or the provided attributes are
- * <code>null</code> it is determined if the given attribute value is
- * supported in some combination of the available document flavors and
- * attributes of the print service. Otherwise it is checked for the
- * specific context of the given document flavor/attributes set.
- * </p>
- *
- * @param attrval the attribute value to check
- * @param flavor the document flavor to use, or <code>null</code>.
- * @param attributes set of attributes to use, or <code>null</code>.
- *
- * @return <code>true</code> if the attribute value is supported in the
- * requested context, <code>false</code> otherwise.
- *
- * @throws NullPointerException if <code>attrval</code> is <code>null</code>.
- * @throws IllegalArgumentException if <code>flavor</code> is not supported
- * by this print service
- */
- boolean isAttributeValueSupported(Attribute attrval, DocFlavor flavor, AttributeSet attributes);
- /**
- * Determines if a given document flavor is supported or not.
- *
- * @param flavor the document flavor to check
- *
- * @return <code>true</code> if <code>flavor</code> is supported,
- * <code>false</code> otherwise.
- *
- * @throws NullPointerException if <code>flavor</code> is null.
- */
- boolean isDocFlavorSupported(DocFlavor flavor);
- /**
- * Registers a print service attribute listener to this print service.
- *
- * @param listener the listener to add
- */
- void addPrintServiceAttributeListener(PrintServiceAttributeListener listener);
- /**
- * De-registers a print service attribute listener from this print service.
- *
- * @param listener the listener to remove
- */
- void removePrintServiceAttributeListener(PrintServiceAttributeListener listener);
- }
|