JobAttributespublic final class JobAttributes extends Object implements CloneableA set of attributes which control a print job.
Instances of this class control the number of copies, default selection,
destination, print dialog, file and printer names, page ranges, multiple
document handling (including collation), and multi-page imposition (such
as duplex) of every print job which uses the instance. Attribute names are
compliant with the Internet Printing Protocol (IPP) 1.1 where possible.
Attribute values are partially compliant where possible.
To use a method which takes an inner class type, pass a reference to
one of the constant fields of the inner class. Client code cannot create
new instances of the inner class types because none of those classes
has a public constructor. For example, to set the print dialog type to
the cross-platform, pure Java print dialog, use the following code:
import java.awt.JobAttributes;
public class PureJavaPrintDialogExample {
public void setPureJavaPrintDialog(JobAttributes jobAttributes) {
jobAttributes.setDialog(JobAttributes.DialogType.COMMON);
}
}
Every IPP attribute which supports an attributeName-default value
has a corresponding setattributeNameToDefault method.
Default value fields are not provided. |
Fields Summary |
---|
private int | copies | private DefaultSelectionType | defaultSelection | private DestinationType | destination | private DialogType | dialog | private String | fileName | private int | fromPage | private int | maxPage | private int | minPage | private MultipleDocumentHandlingType | multipleDocumentHandling | private int[] | pageRanges | private int | prFirst | private int | prLast | private String | printer | private SidesType | sides | private int | toPage |
Constructors Summary |
---|
public JobAttributes()Constructs a JobAttributes instance with default
values for every attribute. The dialog defaults to
DialogType.NATIVE . Min page defaults to
1 . Max page defaults to Integer.MAX_VALUE .
Destination defaults to DestinationType.PRINTER .
Selection defaults to DefaultSelectionType.ALL .
Number of copies defaults to 1 . Multiple document handling defaults
to MultipleDocumentHandlingType.SEPARATE_DOCUMENTS_UNCOLLATED_COPIES .
Sides defaults to SidesType.ONE_SIDED . File name defaults
to null .
setCopiesToDefault();
setDefaultSelection(DefaultSelectionType.ALL);
setDestination(DestinationType.PRINTER);
setDialog(DialogType.NATIVE);
setMaxPage(Integer.MAX_VALUE);
setMinPage(1);
setMultipleDocumentHandlingToDefault();
setSidesToDefault();
| public JobAttributes(JobAttributes obj)Constructs a JobAttributes instance which is a copy
of the supplied JobAttributes .
set(obj);
| public JobAttributes(int copies, DefaultSelectionType defaultSelection, DestinationType destination, DialogType dialog, String fileName, int maxPage, int minPage, MultipleDocumentHandlingType multipleDocumentHandling, int[] pageRanges, String printer, SidesType sides)Constructs a JobAttributes instance with the
specified values for every attribute.
setCopies(copies);
setDefaultSelection(defaultSelection);
setDestination(destination);
setDialog(dialog);
setFileName(fileName);
setMaxPage(maxPage);
setMinPage(minPage);
setMultipleDocumentHandling(multipleDocumentHandling);
setPageRanges(pageRanges);
setPrinter(printer);
setSides(sides);
|
Methods Summary |
---|
public java.lang.Object | clone()Creates and returns a copy of this JobAttributes .
try {
return super.clone();
} catch (CloneNotSupportedException e) {
// Since we implement Cloneable, this should never happen
throw new InternalError();
}
| public boolean | equals(java.lang.Object obj)Determines whether two JobAttributes are equal to each other.
Two JobAttributes are equal if and only if each of their attributes are
equal. Attributes of enumeration type are equal if and only if the
fields refer to the same unique enumeration object. A set of page
ranges is equal if and only if the sets are of equal length, each range
enumerates the same pages, and the ranges are in the same order.
if (!(obj instanceof JobAttributes)) {
return false;
}
JobAttributes rhs = (JobAttributes)obj;
if (fileName == null) {
if (rhs.fileName != null) {
return false;
}
} else {
if (!fileName.equals(rhs.fileName)) {
return false;
}
}
if (pageRanges == null) {
if (rhs.pageRanges != null) {
return false;
}
} else {
if (rhs.pageRanges == null ||
pageRanges.length != rhs.pageRanges.length) {
return false;
}
for (int i = 0; i < pageRanges.length; i++) {
if (pageRanges[i][0] != rhs.pageRanges[i][0] ||
pageRanges[i][1] != rhs.pageRanges[i][1]) {
return false;
}
}
}
if (printer == null) {
if (rhs.printer != null) {
return false;
}
} else {
if (!printer.equals(rhs.printer)) {
return false;
}
}
return (copies == rhs.copies &&
defaultSelection == rhs.defaultSelection &&
destination == rhs.destination &&
dialog == rhs.dialog &&
fromPage == rhs.fromPage &&
maxPage == rhs.maxPage &&
minPage == rhs.minPage &&
multipleDocumentHandling == rhs.multipleDocumentHandling &&
prFirst == rhs.prFirst &&
prLast == rhs.prLast &&
sides == rhs.sides &&
toPage == rhs.toPage);
| public int | getCopies()Returns the number of copies the application should render for jobs
using these attributes. This attribute is updated to the value chosen
by the user.
return copies;
| public java.awt.JobAttributes$DefaultSelectionType | getDefaultSelection()Specifies whether, for jobs using these attributes, the application
should print all pages, the range specified by the return value of
getPageRanges , or the current selection. This attribute
is updated to the value chosen by the user.
return defaultSelection;
| public java.awt.JobAttributes$DestinationType | getDestination()Specifies whether output will be to a printer or a file for jobs using
these attributes. This attribute is updated to the value chosen by the
user.
return destination;
| public java.awt.JobAttributes$DialogType | getDialog()Returns whether, for jobs using these attributes, the user should see
a print dialog in which to modify the print settings, and which type of
print dialog should be displayed. DialogType.COMMON denotes a cross-
platform, pure Java print dialog. DialogType.NATIVE denotes the
platform's native print dialog. If a platform does not support a native
print dialog, the pure Java print dialog is displayed instead.
DialogType.NONE specifies no print dialog (i.e., background printing).
This attribute cannot be modified by, and is not subject to any
limitations of, the implementation or the target printer.
return dialog;
| public java.lang.String | getFileName()Specifies the file name for the output file for jobs using these
attributes. This attribute is updated to the value chosen by the user.
return fileName;
| public int | getFromPage()Returns, for jobs using these attributes, the first page to be
printed, if a range of pages is to be printed. This attribute is
updated to the value chosen by the user. An application should ignore
this attribute on output, unless the return value of the
getDefaultSelection method is DefaultSelectionType.RANGE. An
application should honor the return value of getPageRanges
over the return value of this method, if possible.
if (fromPage != 0) {
return fromPage;
} else if (toPage != 0) {
return getMinPage();
} else if (pageRanges != null) {
return prFirst;
} else {
return getMinPage();
}
| public int | getMaxPage()Specifies the maximum value the user can specify as the last page to
be printed for jobs using these attributes. This attribute cannot be
modified by, and is not subject to any limitations of, the
implementation or the target printer.
return maxPage;
| public int | getMinPage()Specifies the minimum value the user can specify as the first page to
be printed for jobs using these attributes. This attribute cannot be
modified by, and is not subject to any limitations of, the
implementation or the target printer.
return minPage;
| public java.awt.JobAttributes$MultipleDocumentHandlingType | getMultipleDocumentHandling()Specifies the handling of multiple copies, including collation, for
jobs using these attributes. This attribute is updated to the value
chosen by the user.
return multipleDocumentHandling;
| public int[][] | getPageRanges()Specifies, for jobs using these attributes, the ranges of pages to be
printed, if a range of pages is to be printed. All range numbers are
inclusive. This attribute is updated to the value chosen by the user.
An application should ignore this attribute on output, unless the
return value of the getDefaultSelection method is
DefaultSelectionType.RANGE.
if (pageRanges != null) {
// Return a copy because otherwise client code could circumvent the
// the checks made in setPageRanges by modifying the returned
// array.
int[][] copy = new int[pageRanges.length][2];
for (int i = 0; i < pageRanges.length; i++) {
copy[i][0] = pageRanges[i][0];
copy[i][1] = pageRanges[i][1];
}
return copy;
} else if (fromPage != 0 || toPage != 0) {
int fromPage = getFromPage();
int toPage = getToPage();
return new int[][] { new int[] { fromPage, toPage } };
} else {
int minPage = getMinPage();
return new int[][] { new int[] { minPage, minPage } };
}
| public java.lang.String | getPrinter()Returns the destination printer for jobs using these attributes. This
attribute is updated to the value chosen by the user.
return printer;
| public java.awt.JobAttributes$SidesType | getSides()Returns how consecutive pages should be imposed upon the sides of the
print medium for jobs using these attributes. SidesType.ONE_SIDED
imposes each consecutive page upon the same side of consecutive media
sheets. This imposition is sometimes called simplex.
SidesType.TWO_SIDED_LONG_EDGE imposes each consecutive pair of pages
upon front and back sides of consecutive media sheets, such that the
orientation of each pair of pages on the medium would be correct for
the reader as if for binding on the long edge. This imposition is
sometimes called duplex. SidesType.TWO_SIDED_SHORT_EDGE imposes
each consecutive pair of pages upon front and back sides of consecutive
media sheets, such that the orientation of each pair of pages on the
medium would be correct for the reader as if for binding on the short
edge. This imposition is sometimes called tumble. This attribute
is updated to the value chosen by the user.
return sides;
| public int | getToPage()Returns, for jobs using these attributes, the last page (inclusive)
to be printed, if a range of pages is to be printed. This attribute is
updated to the value chosen by the user. An application should ignore
this attribute on output, unless the return value of the
getDefaultSelection method is DefaultSelectionType.RANGE. An
application should honor the return value of getPageRanges
over the return value of this method, if possible.
if (toPage != 0) {
return toPage;
} else if (fromPage != 0) {
return fromPage;
} else if (pageRanges != null) {
return prLast;
} else {
return getMinPage();
}
| public int | hashCode()Returns a hash code value for this JobAttributes.
int rest = ((copies + fromPage + maxPage + minPage + prFirst + prLast +
toPage) * 31) << 21;
if (pageRanges != null) {
int sum = 0;
for (int i = 0; i < pageRanges.length; i++) {
sum += pageRanges[i][0] + pageRanges[i][1];
}
rest ^= (sum * 31) << 11;
}
if (fileName != null) {
rest ^= fileName.hashCode();
}
if (printer != null) {
rest ^= printer.hashCode();
}
return (defaultSelection.hashCode() << 6 ^
destination.hashCode() << 5 ^
dialog.hashCode() << 3 ^
multipleDocumentHandling.hashCode() << 2 ^
sides.hashCode() ^
rest);
| public void | set(java.awt.JobAttributes obj)Sets all of the attributes of this JobAttributes to
the same values as the attributes of obj.
copies = obj.copies;
defaultSelection = obj.defaultSelection;
destination = obj.destination;
dialog = obj.dialog;
fileName = obj.fileName;
fromPage = obj.fromPage;
maxPage = obj.maxPage;
minPage = obj.minPage;
multipleDocumentHandling = obj.multipleDocumentHandling;
// okay because we never modify the contents of pageRanges
pageRanges = obj.pageRanges;
prFirst = obj.prFirst;
prLast = obj.prLast;
printer = obj.printer;
sides = obj.sides;
toPage = obj.toPage;
| public void | setCopies(int copies)Specifies the number of copies the application should render for jobs
using these attributes. Not specifying this attribute is equivalent to
specifying 1 .
if (copies <= 0) {
throw new IllegalArgumentException("Invalid value for attribute "+
"copies");
}
this.copies = copies;
| public void | setCopiesToDefault()Sets the number of copies the application should render for jobs using
these attributes to the default. The default number of copies is 1.
setCopies(1);
| public void | setDefaultSelection(java.awt.JobAttributes$DefaultSelectionType defaultSelection)Specifies whether, for jobs using these attributes, the application
should print all pages, the range specified by the return value of
getPageRanges , or the current selection. Not specifying
this attribute is equivalent to specifying DefaultSelectionType.ALL.
if (defaultSelection == null) {
throw new IllegalArgumentException("Invalid value for attribute "+
"defaultSelection");
}
this.defaultSelection = defaultSelection;
| public void | setDestination(java.awt.JobAttributes$DestinationType destination)Specifies whether output will be to a printer or a file for jobs using
these attributes. Not specifying this attribute is equivalent to
specifying DesintationType.PRINTER.
if (destination == null) {
throw new IllegalArgumentException("Invalid value for attribute "+
"destination");
}
this.destination = destination;
| public void | setDialog(java.awt.JobAttributes$DialogType dialog)Specifies whether, for jobs using these attributes, the user should see
a print dialog in which to modify the print settings, and which type of
print dialog should be displayed. DialogType.COMMON denotes a cross-
platform, pure Java print dialog. DialogType.NATIVE denotes the
platform's native print dialog. If a platform does not support a native
print dialog, the pure Java print dialog is displayed instead.
DialogType.NONE specifies no print dialog (i.e., background printing).
Not specifying this attribute is equivalent to specifying
DialogType.NATIVE.
if (dialog == null) {
throw new IllegalArgumentException("Invalid value for attribute "+
"dialog");
}
this.dialog = dialog;
| public void | setFileName(java.lang.String fileName)Specifies the file name for the output file for jobs using these
attributes. Default is platform-dependent and implementation-defined.
this.fileName = fileName;
| public void | setFromPage(int fromPage)Specifies, for jobs using these attributes, the first page to be
printed, if a range of pages is to be printed. If this attribute is not
specified, then the values from the pageRanges attribute are used. If
pageRanges and either or both of fromPage and toPage are specified,
pageRanges takes precedence. Specifying none of pageRanges, fromPage,
or toPage is equivalent to calling
setPageRanges(new int[][] { new int[] { minPage } });
if (fromPage <= 0 ||
(toPage != 0 && fromPage > toPage) ||
fromPage < minPage ||
fromPage > maxPage) {
throw new IllegalArgumentException("Invalid value for attribute "+
"fromPage");
}
this.fromPage = fromPage;
| public void | setMaxPage(int maxPage)Specifies the maximum value the user can specify as the last page to
be printed for jobs using these attributes. Not specifying this
attribute is equivalent to specifying Integer.MAX_VALUE .
if (maxPage <= 0 || maxPage < minPage) {
throw new IllegalArgumentException("Invalid value for attribute "+
"maxPage");
}
this.maxPage = maxPage;
| public void | setMinPage(int minPage)Specifies the minimum value the user can specify as the first page to
be printed for jobs using these attributes. Not specifying this
attribute is equivalent to specifying 1 .
if (minPage <= 0 || minPage > maxPage) {
throw new IllegalArgumentException("Invalid value for attribute "+
"minPage");
}
this.minPage = minPage;
| public void | setMultipleDocumentHandling(java.awt.JobAttributes$MultipleDocumentHandlingType multipleDocumentHandling)Specifies the handling of multiple copies, including collation, for
jobs using these attributes. Not specifying this attribute is equivalent
to specifying
MultipleDocumentHandlingType.SEPARATE_DOCUMENTS_UNCOLLATED_COPIES.
if (multipleDocumentHandling == null) {
throw new IllegalArgumentException("Invalid value for attribute "+
"multipleDocumentHandling");
}
this.multipleDocumentHandling = multipleDocumentHandling;
| public void | setMultipleDocumentHandlingToDefault()Sets the handling of multiple copies, including collation, for jobs
using these attributes to the default. The default handling is
MultipleDocumentHandlingType.SEPARATE_DOCUMENTS_UNCOLLATED_COPIES.
setMultipleDocumentHandling(
MultipleDocumentHandlingType.SEPARATE_DOCUMENTS_UNCOLLATED_COPIES);
| public void | setPageRanges(int[][] pageRanges)Specifies, for jobs using these attributes, the ranges of pages to be
printed, if a range of pages is to be printed. All range numbers are
inclusive. If this attribute is not specified, then the values from the
fromPage and toPages attributes are used. If pageRanges and either or
both of fromPage and toPage are specified, pageRanges takes precedence.
Specifying none of pageRanges, fromPage, or toPage is equivalent to
calling setPageRanges(new int[][] { new int[] { minPage,
minPage } });
String xcp = "Invalid value for attribute pageRanges";
int first = 0;
int last = 0;
if (pageRanges == null) {
throw new IllegalArgumentException(xcp);
}
for (int i = 0; i < pageRanges.length; i++) {
if (pageRanges[i] == null ||
pageRanges[i].length != 2 ||
pageRanges[i][0] <= last ||
pageRanges[i][1] < pageRanges[i][0]) {
throw new IllegalArgumentException(xcp);
}
last = pageRanges[i][1];
if (first == 0) {
first = pageRanges[i][0];
}
}
if (first < minPage || last > maxPage) {
throw new IllegalArgumentException(xcp);
}
// Store a copy because otherwise client code could circumvent the
// the checks made above by holding a reference to the array and
// modifying it after calling setPageRanges.
int[][] copy = new int[pageRanges.length][2];
for (int i = 0; i < pageRanges.length; i++) {
copy[i][0] = pageRanges[i][0];
copy[i][1] = pageRanges[i][1];
}
this.pageRanges = copy;
this.prFirst = first;
this.prLast = last;
| public void | setPrinter(java.lang.String printer)Specifies the destination printer for jobs using these attributes.
Default is platform-dependent and implementation-defined.
this.printer = printer;
| public void | setSides(java.awt.JobAttributes$SidesType sides)Specifies how consecutive pages should be imposed upon the sides of the
print medium for jobs using these attributes. SidesType.ONE_SIDED
imposes each consecutive page upon the same side of consecutive media
sheets. This imposition is sometimes called simplex.
SidesType.TWO_SIDED_LONG_EDGE imposes each consecutive pair of pages
upon front and back sides of consecutive media sheets, such that the
orientation of each pair of pages on the medium would be correct for
the reader as if for binding on the long edge. This imposition is
sometimes called duplex. SidesType.TWO_SIDED_SHORT_EDGE imposes
each consecutive pair of pages upon front and back sides of consecutive
media sheets, such that the orientation of each pair of pages on the
medium would be correct for the reader as if for binding on the short
edge. This imposition is sometimes called tumble. Not specifying
this attribute is equivalent to specifying SidesType.ONE_SIDED.
if (sides == null) {
throw new IllegalArgumentException("Invalid value for attribute "+
"sides");
}
this.sides = sides;
| public void | setSidesToDefault()Sets how consecutive pages should be imposed upon the sides of the
print medium for jobs using these attributes to the default. The
default imposition is SidesType.ONE_SIDED.
setSides(SidesType.ONE_SIDED);
| public void | setToPage(int toPage)Specifies, for jobs using these attributes, the last page (inclusive)
to be printed, if a range of pages is to be printed.
If this attribute is not specified, then the values from the pageRanges
attribute are used. If pageRanges and either or both of fromPage and
toPage are specified, pageRanges takes precedence. Specifying none of
pageRanges, fromPage, or toPage is equivalent to calling
setPageRanges(new int[][] { new int[] { minPage } });
if (toPage <= 0 ||
(fromPage != 0 && toPage < fromPage) ||
toPage < minPage ||
toPage > maxPage) {
throw new IllegalArgumentException("Invalid value for attribute "+
"toPage");
}
this.toPage = toPage;
| public java.lang.String | toString()Returns a string representation of this JobAttributes.
int[][] pageRanges = getPageRanges();
String prStr = "[";
boolean first = true;
for (int i = 0; i < pageRanges.length; i++) {
if (first) {
first = false;
} else {
prStr += ",";
}
prStr += pageRanges[i][0] + ":" + pageRanges[i][1];
}
prStr += "]";
return "copies=" + getCopies() + ",defaultSelection=" +
getDefaultSelection() + ",destination=" + getDestination() +
",dialog=" + getDialog() + ",fileName=" + getFileName() +
",fromPage=" + getFromPage() + ",maxPage=" + getMaxPage() +
",minPage=" + getMinPage() + ",multiple-document-handling=" +
getMultipleDocumentHandling() + ",page-ranges=" + prStr +
",printer=" + getPrinter() + ",sides=" + getSides() + ",toPage=" +
getToPage();
|
|