History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/awt/PageAttributes.java (1 of 18352 files). Show all

Unified · Split

java/pkg/java/awt/PageAttributes.java+1378−0
@@ -0,0 +1,1378 @@
1+/*
2+ * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+package java.awt;
27+
28+import java.util.Locale;
29+
30+/**
31+ * A set of attributes which control the output of a printed page.
32+ * <p>
33+ * Instances of this class control the color state, paper size (media type),
34+ * orientation, logical origin, print quality, and resolution of every
35+ * page which uses the instance. Attribute names are compliant with the
36+ * Internet Printing Protocol (IPP) 1.1 where possible. Attribute values
37+ * are partially compliant where possible.
38+ * <p>
39+ * To use a method which takes an inner class type, pass a reference to
40+ * one of the constant fields of the inner class. Client code cannot create
41+ * new instances of the inner class types because none of those classes
42+ * has a public constructor. For example, to set the color state to
43+ * monochrome, use the following code:
44+ * <pre>
45+ * import java.awt.PageAttributes;
46+ *
47+ * public class MonochromeExample {
48+ * public void setMonochrome(PageAttributes pageAttributes) {
49+ * pageAttributes.setColor(PageAttributes.ColorType.MONOCHROME);
50+ * }
51+ * }
52+ * </pre>
53+ * <p>
54+ * Every IPP attribute which supports an <i>attributeName</i>-default value
55+ * has a corresponding <code>set<i>attributeName</i>ToDefault</code> method.
56+ * Default value fields are not provided.
57+ *
58+ * @author David Mendenhall
59+ * @since 1.3
60+ */
61+public final class PageAttributes implements Cloneable {
62+ /**
63+ * A type-safe enumeration of possible color states.
64+ * @since 1.3
65+ */
66+ public static final class ColorType extends AttributeValue {
67+ private static final int I_COLOR = 0;
68+ private static final int I_MONOCHROME = 1;
69+
70+ private static final String NAMES[] = {
71+ "color", "monochrome"
72+ };
73+
74+ /**
75+ * The ColorType instance to use for specifying color printing.
76+ */
77+ public static final ColorType COLOR = new ColorType(I_COLOR);
78+ /**
79+ * The ColorType instance to use for specifying monochrome printing.
80+ */
81+ public static final ColorType MONOCHROME = new ColorType(I_MONOCHROME);
82+
83+ private ColorType(int type) {
84+ super(type, NAMES);
85+ }
86+ }
87+
88+ /**
89+ * A type-safe enumeration of possible paper sizes. These sizes are in
90+ * compliance with IPP 1.1.
91+ * @since 1.3
92+ */
93+ public static final class MediaType extends AttributeValue {
94+ private static final int I_ISO_4A0 = 0;
95+ private static final int I_ISO_2A0 = 1;
96+ private static final int I_ISO_A0 = 2;
97+ private static final int I_ISO_A1 = 3;
98+ private static final int I_ISO_A2 = 4;
99+ private static final int I_ISO_A3 = 5;
100+ private static final int I_ISO_A4 = 6;
101+ private static final int I_ISO_A5 = 7;
102+ private static final int I_ISO_A6 = 8;
103+ private static final int I_ISO_A7 = 9;
104+ private static final int I_ISO_A8 = 10;
105+ private static final int I_ISO_A9 = 11;
106+ private static final int I_ISO_A10 = 12;
107+ private static final int I_ISO_B0 = 13;
108+ private static final int I_ISO_B1 = 14;
109+ private static final int I_ISO_B2 = 15;
110+ private static final int I_ISO_B3 = 16;
111+ private static final int I_ISO_B4 = 17;
112+ private static final int I_ISO_B5 = 18;
113+ private static final int I_ISO_B6 = 19;
114+ private static final int I_ISO_B7 = 20;
115+ private static final int I_ISO_B8 = 21;
116+ private static final int I_ISO_B9 = 22;
117+ private static final int I_ISO_B10 = 23;
118+ private static final int I_JIS_B0 = 24;
119+ private static final int I_JIS_B1 = 25;
120+ private static final int I_JIS_B2 = 26;
121+ private static final int I_JIS_B3 = 27;
122+ private static final int I_JIS_B4 = 28;
123+ private static final int I_JIS_B5 = 29;
124+ private static final int I_JIS_B6 = 30;
125+ private static final int I_JIS_B7 = 31;
126+ private static final int I_JIS_B8 = 32;
127+ private static final int I_JIS_B9 = 33;
128+ private static final int I_JIS_B10 = 34;
129+ private static final int I_ISO_C0 = 35;
130+ private static final int I_ISO_C1 = 36;
131+ private static final int I_ISO_C2 = 37;
132+ private static final int I_ISO_C3 = 38;
133+ private static final int I_ISO_C4 = 39;
134+ private static final int I_ISO_C5 = 40;
135+ private static final int I_ISO_C6 = 41;
136+ private static final int I_ISO_C7 = 42;
137+ private static final int I_ISO_C8 = 43;
138+ private static final int I_ISO_C9 = 44;
139+ private static final int I_ISO_C10 = 45;
140+ private static final int I_ISO_DESIGNATED_LONG = 46;
141+ private static final int I_EXECUTIVE = 47;
142+ private static final int I_FOLIO = 48;
143+ private static final int I_INVOICE = 49;
144+ private static final int I_LEDGER = 50;
145+ private static final int I_NA_LETTER = 51;
146+ private static final int I_NA_LEGAL = 52;
147+ private static final int I_QUARTO = 53;
148+ private static final int I_A = 54;
149+ private static final int I_B = 55;
150+ private static final int I_C = 56;
151+ private static final int I_D = 57;
152+ private static final int I_E = 58;
153+ private static final int I_NA_10X15_ENVELOPE = 59;
154+ private static final int I_NA_10X14_ENVELOPE = 60;
155+ private static final int I_NA_10X13_ENVELOPE = 61;
156+ private static final int I_NA_9X12_ENVELOPE = 62;
157+ private static final int I_NA_9X11_ENVELOPE = 63;
158+ private static final int I_NA_7X9_ENVELOPE = 64;
159+ private static final int I_NA_6X9_ENVELOPE = 65;
160+ private static final int I_NA_NUMBER_9_ENVELOPE = 66;
161+ private static final int I_NA_NUMBER_10_ENVELOPE = 67;
162+ private static final int I_NA_NUMBER_11_ENVELOPE = 68;
163+ private static final int I_NA_NUMBER_12_ENVELOPE = 69;
164+ private static final int I_NA_NUMBER_14_ENVELOPE = 70;
165+ private static final int I_INVITE_ENVELOPE = 71;
166+ private static final int I_ITALY_ENVELOPE = 72;
167+ private static final int I_MONARCH_ENVELOPE = 73;
168+ private static final int I_PERSONAL_ENVELOPE = 74;
169+
170+ private static final String NAMES[] = {
171+ "iso-4a0", "iso-2a0", "iso-a0", "iso-a1", "iso-a2", "iso-a3",
172+ "iso-a4", "iso-a5", "iso-a6", "iso-a7", "iso-a8", "iso-a9",
173+ "iso-a10", "iso-b0", "iso-b1", "iso-b2", "iso-b3", "iso-b4",
174+ "iso-b5", "iso-b6", "iso-b7", "iso-b8", "iso-b9", "iso-b10",
175+ "jis-b0", "jis-b1", "jis-b2", "jis-b3", "jis-b4", "jis-b5",
176+ "jis-b6", "jis-b7", "jis-b8", "jis-b9", "jis-b10", "iso-c0",
177+ "iso-c1", "iso-c2", "iso-c3", "iso-c4", "iso-c5", "iso-c6",
178+ "iso-c7", "iso-c8", "iso-c9", "iso-c10", "iso-designated-long",
179+ "executive", "folio", "invoice", "ledger", "na-letter", "na-legal",
180+ "quarto", "a", "b", "c", "d", "e", "na-10x15-envelope",
181+ "na-10x14-envelope", "na-10x13-envelope", "na-9x12-envelope",
182+ "na-9x11-envelope", "na-7x9-envelope", "na-6x9-envelope",
183+ "na-number-9-envelope", "na-number-10-envelope",
184+ "na-number-11-envelope", "na-number-12-envelope",
185+ "na-number-14-envelope", "invite-envelope", "italy-envelope",
186+ "monarch-envelope", "personal-envelope"
187+ };
188+
189+ /**
190+ * The MediaType instance for ISO/DIN & JIS 4A0, 1682 x 2378 mm.
191+ */
192+ public static final MediaType ISO_4A0 = new MediaType(I_ISO_4A0);
193+ /**
194+ * The MediaType instance for ISO/DIN & JIS 2A0, 1189 x 1682 mm.
195+ */
196+ public static final MediaType ISO_2A0 = new MediaType(I_ISO_2A0);
197+ /**
198+ * The MediaType instance for ISO/DIN & JIS A0, 841 x 1189 mm.
199+ */
200+ public static final MediaType ISO_A0 = new MediaType(I_ISO_A0);
201+ /**
202+ * The MediaType instance for ISO/DIN & JIS A1, 594 x 841 mm.
203+ */
204+ public static final MediaType ISO_A1 = new MediaType(I_ISO_A1);
205+ /**
206+ * The MediaType instance for ISO/DIN & JIS A2, 420 x 594 mm.
207+ */
208+ public static final MediaType ISO_A2 = new MediaType(I_ISO_A2);
209+ /**
210+ * The MediaType instance for ISO/DIN & JIS A3, 297 x 420 mm.
211+ */
212+ public static final MediaType ISO_A3 = new MediaType(I_ISO_A3);
213+ /**
214+ * The MediaType instance for ISO/DIN & JIS A4, 210 x 297 mm.
215+ */
216+ public static final MediaType ISO_A4 = new MediaType(I_ISO_A4);
217+ /**
218+ * The MediaType instance for ISO/DIN & JIS A5, 148 x 210 mm.
219+ */
220+ public static final MediaType ISO_A5 = new MediaType(I_ISO_A5);
221+ /**
222+ * The MediaType instance for ISO/DIN & JIS A6, 105 x 148 mm.
223+ */
224+ public static final MediaType ISO_A6 = new MediaType(I_ISO_A6);
225+ /**
226+ * The MediaType instance for ISO/DIN & JIS A7, 74 x 105 mm.
227+ */
228+ public static final MediaType ISO_A7 = new MediaType(I_ISO_A7);
229+ /**
230+ * The MediaType instance for ISO/DIN & JIS A8, 52 x 74 mm.
231+ */
232+ public static final MediaType ISO_A8 = new MediaType(I_ISO_A8);
233+ /**
234+ * The MediaType instance for ISO/DIN & JIS A9, 37 x 52 mm.
235+ */
236+ public static final MediaType ISO_A9 = new MediaType(I_ISO_A9);
237+ /**
238+ * The MediaType instance for ISO/DIN & JIS A10, 26 x 37 mm.
239+ */
240+ public static final MediaType ISO_A10 = new MediaType(I_ISO_A10);
241+ /**
242+ * The MediaType instance for ISO/DIN B0, 1000 x 1414 mm.
243+ */
244+ public static final MediaType ISO_B0 = new MediaType(I_ISO_B0);
245+ /**
246+ * The MediaType instance for ISO/DIN B1, 707 x 1000 mm.
247+ */
248+ public static final MediaType ISO_B1 = new MediaType(I_ISO_B1);
249+ /**
250+ * The MediaType instance for ISO/DIN B2, 500 x 707 mm.
251+ */
252+ public static final MediaType ISO_B2 = new MediaType(I_ISO_B2);
253+ /**
254+ * The MediaType instance for ISO/DIN B3, 353 x 500 mm.
255+ */
256+ public static final MediaType ISO_B3 = new MediaType(I_ISO_B3);
257+ /**
258+ * The MediaType instance for ISO/DIN B4, 250 x 353 mm.
259+ */
260+ public static final MediaType ISO_B4 = new MediaType(I_ISO_B4);
261+ /**
262+ * The MediaType instance for ISO/DIN B5, 176 x 250 mm.
263+ */
264+ public static final MediaType ISO_B5 = new MediaType(I_ISO_B5);
265+ /**
266+ * The MediaType instance for ISO/DIN B6, 125 x 176 mm.
267+ */
268+ public static final MediaType ISO_B6 = new MediaType(I_ISO_B6);
269+ /**
270+ * The MediaType instance for ISO/DIN B7, 88 x 125 mm.
271+ */
272+ public static final MediaType ISO_B7 = new MediaType(I_ISO_B7);
273+ /**
274+ * The MediaType instance for ISO/DIN B8, 62 x 88 mm.
275+ */
276+ public static final MediaType ISO_B8 = new MediaType(I_ISO_B8);
277+ /**
278+ * The MediaType instance for ISO/DIN B9, 44 x 62 mm.
279+ */
280+ public static final MediaType ISO_B9 = new MediaType(I_ISO_B9);
281+ /**
282+ * The MediaType instance for ISO/DIN B10, 31 x 44 mm.
283+ */
284+ public static final MediaType ISO_B10 = new MediaType(I_ISO_B10);
285+ /**
286+ * The MediaType instance for JIS B0, 1030 x 1456 mm.
287+ */
288+ public static final MediaType JIS_B0 = new MediaType(I_JIS_B0);
289+ /**
290+ * The MediaType instance for JIS B1, 728 x 1030 mm.
291+ */
292+ public static final MediaType JIS_B1 = new MediaType(I_JIS_B1);
293+ /**
294+ * The MediaType instance for JIS B2, 515 x 728 mm.
295+ */
296+ public static final MediaType JIS_B2 = new MediaType(I_JIS_B2);
297+ /**
298+ * The MediaType instance for JIS B3, 364 x 515 mm.
299+ */
300+ public static final MediaType JIS_B3 = new MediaType(I_JIS_B3);
301+ /**
302+ * The MediaType instance for JIS B4, 257 x 364 mm.
303+ */
304+ public static final MediaType JIS_B4 = new MediaType(I_JIS_B4);
305+ /**
306+ * The MediaType instance for JIS B5, 182 x 257 mm.
307+ */
308+ public static final MediaType JIS_B5 = new MediaType(I_JIS_B5);
309+ /**
310+ * The MediaType instance for JIS B6, 128 x 182 mm.
311+ */
312+ public static final MediaType JIS_B6 = new MediaType(I_JIS_B6);
313+ /**
314+ * The MediaType instance for JIS B7, 91 x 128 mm.
315+ */
316+ public static final MediaType JIS_B7 = new MediaType(I_JIS_B7);
317+ /**
318+ * The MediaType instance for JIS B8, 64 x 91 mm.
319+ */
320+ public static final MediaType JIS_B8 = new MediaType(I_JIS_B8);
321+ /**
322+ * The MediaType instance for JIS B9, 45 x 64 mm.
323+ */
324+ public static final MediaType JIS_B9 = new MediaType(I_JIS_B9);
325+ /**
326+ * The MediaType instance for JIS B10, 32 x 45 mm.
327+ */
328+ public static final MediaType JIS_B10 = new MediaType(I_JIS_B10);
329+ /**
330+ * The MediaType instance for ISO/DIN C0, 917 x 1297 mm.
331+ */
332+ public static final MediaType ISO_C0 = new MediaType(I_ISO_C0);
333+ /**
334+ * The MediaType instance for ISO/DIN C1, 648 x 917 mm.
335+ */
336+ public static final MediaType ISO_C1 = new MediaType(I_ISO_C1);
337+ /**
338+ * The MediaType instance for ISO/DIN C2, 458 x 648 mm.
339+ */
340+ public static final MediaType ISO_C2 = new MediaType(I_ISO_C2);
341+ /**
342+ * The MediaType instance for ISO/DIN C3, 324 x 458 mm.
343+ */
344+ public static final MediaType ISO_C3 = new MediaType(I_ISO_C3);
345+ /**
346+ * The MediaType instance for ISO/DIN C4, 229 x 324 mm.
347+ */
348+ public static final MediaType ISO_C4 = new MediaType(I_ISO_C4);
349+ /**
350+ * The MediaType instance for ISO/DIN C5, 162 x 229 mm.
351+ */
352+ public static final MediaType ISO_C5 = new MediaType(I_ISO_C5);
353+ /**
354+ * The MediaType instance for ISO/DIN C6, 114 x 162 mm.
355+ */
356+ public static final MediaType ISO_C6 = new MediaType(I_ISO_C6);
357+ /**
358+ * The MediaType instance for ISO/DIN C7, 81 x 114 mm.
359+ */
360+ public static final MediaType ISO_C7 = new MediaType(I_ISO_C7);
361+ /**
362+ * The MediaType instance for ISO/DIN C8, 57 x 81 mm.
363+ */
364+ public static final MediaType ISO_C8 = new MediaType(I_ISO_C8);
365+ /**
366+ * The MediaType instance for ISO/DIN C9, 40 x 57 mm.
367+ */
368+ public static final MediaType ISO_C9 = new MediaType(I_ISO_C9);
369+ /**
370+ * The MediaType instance for ISO/DIN C10, 28 x 40 mm.
371+ */
372+ public static final MediaType ISO_C10 = new MediaType(I_ISO_C10);
373+ /**
374+ * The MediaType instance for ISO Designated Long, 110 x 220 mm.
375+ */
376+ public static final MediaType ISO_DESIGNATED_LONG =
377+ new MediaType(I_ISO_DESIGNATED_LONG);
378+ /**
379+ * The MediaType instance for Executive, 7 1/4 x 10 1/2 in.
380+ */
381+ public static final MediaType EXECUTIVE = new MediaType(I_EXECUTIVE);
382+ /**
383+ * The MediaType instance for Folio, 8 1/2 x 13 in.
384+ */
385+ public static final MediaType FOLIO = new MediaType(I_FOLIO);
386+ /**
387+ * The MediaType instance for Invoice, 5 1/2 x 8 1/2 in.
388+ */
389+ public static final MediaType INVOICE = new MediaType(I_INVOICE);
390+ /**
391+ * The MediaType instance for Ledger, 11 x 17 in.
392+ */
393+ public static final MediaType LEDGER = new MediaType(I_LEDGER);
394+ /**
395+ * The MediaType instance for North American Letter, 8 1/2 x 11 in.
396+ */
397+ public static final MediaType NA_LETTER = new MediaType(I_NA_LETTER);
398+ /**
399+ * The MediaType instance for North American Legal, 8 1/2 x 14 in.
400+ */
401+ public static final MediaType NA_LEGAL = new MediaType(I_NA_LEGAL);
402+ /**
403+ * The MediaType instance for Quarto, 215 x 275 mm.
404+ */
405+ public static final MediaType QUARTO = new MediaType(I_QUARTO);
406+ /**
407+ * The MediaType instance for Engineering A, 8 1/2 x 11 in.
408+ */
409+ public static final MediaType A = new MediaType(I_A);
410+ /**
411+ * The MediaType instance for Engineering B, 11 x 17 in.
412+ */
413+ public static final MediaType B = new MediaType(I_B);
414+ /**
415+ * The MediaType instance for Engineering C, 17 x 22 in.
416+ */
417+ public static final MediaType C = new MediaType(I_C);
418+ /**
419+ * The MediaType instance for Engineering D, 22 x 34 in.
420+ */
421+ public static final MediaType D = new MediaType(I_D);
422+ /**
423+ * The MediaType instance for Engineering E, 34 x 44 in.
424+ */
425+ public static final MediaType E = new MediaType(I_E);
426+ /**
427+ * The MediaType instance for North American 10 x 15 in.
428+ */
429+ public static final MediaType NA_10X15_ENVELOPE =
430+ new MediaType(I_NA_10X15_ENVELOPE);
431+ /**
432+ * The MediaType instance for North American 10 x 14 in.
433+ */
434+ public static final MediaType NA_10X14_ENVELOPE =
435+ new MediaType(I_NA_10X14_ENVELOPE);
436+ /**
437+ * The MediaType instance for North American 10 x 13 in.
438+ */
439+ public static final MediaType NA_10X13_ENVELOPE =
440+ new MediaType(I_NA_10X13_ENVELOPE);
441+ /**
442+ * The MediaType instance for North American 9 x 12 in.
443+ */
444+ public static final MediaType NA_9X12_ENVELOPE =
445+ new MediaType(I_NA_9X12_ENVELOPE);
446+ /**
447+ * The MediaType instance for North American 9 x 11 in.
448+ */
449+ public static final MediaType NA_9X11_ENVELOPE =
450+ new MediaType(I_NA_9X11_ENVELOPE);
451+ /**
452+ * The MediaType instance for North American 7 x 9 in.
453+ */
454+ public static final MediaType NA_7X9_ENVELOPE =
455+ new MediaType(I_NA_7X9_ENVELOPE);
456+ /**
457+ * The MediaType instance for North American 6 x 9 in.
458+ */
459+ public static final MediaType NA_6X9_ENVELOPE =
460+ new MediaType(I_NA_6X9_ENVELOPE);
461+ /**
462+ * The MediaType instance for North American #9 Business Envelope,
463+ * 3 7/8 x 8 7/8 in.
464+ */
465+ public static final MediaType NA_NUMBER_9_ENVELOPE =
466+ new MediaType(I_NA_NUMBER_9_ENVELOPE);
467+ /**
468+ * The MediaType instance for North American #10 Business Envelope,
469+ * 4 1/8 x 9 1/2 in.
470+ */
471+ public static final MediaType NA_NUMBER_10_ENVELOPE =
472+ new MediaType(I_NA_NUMBER_10_ENVELOPE);
473+ /**
474+ * The MediaType instance for North American #11 Business Envelope,
475+ * 4 1/2 x 10 3/8 in.
476+ */
477+ public static final MediaType NA_NUMBER_11_ENVELOPE =
478+ new MediaType(I_NA_NUMBER_11_ENVELOPE);
479+ /**
480+ * The MediaType instance for North American #12 Business Envelope,
481+ * 4 3/4 x 11 in.
482+ */
483+ public static final MediaType NA_NUMBER_12_ENVELOPE =
484+ new MediaType(I_NA_NUMBER_12_ENVELOPE);
485+ /**
486+ * The MediaType instance for North American #14 Business Envelope,
487+ * 5 x 11 1/2 in.
488+ */
489+ public static final MediaType NA_NUMBER_14_ENVELOPE =
490+ new MediaType(I_NA_NUMBER_14_ENVELOPE);
491+ /**
492+ * The MediaType instance for Invitation Envelope, 220 x 220 mm.
493+ */
494+ public static final MediaType INVITE_ENVELOPE =
495+ new MediaType(I_INVITE_ENVELOPE);
496+ /**
497+ * The MediaType instance for Italy Envelope, 110 x 230 mm.
498+ */
499+ public static final MediaType ITALY_ENVELOPE =
500+ new MediaType(I_ITALY_ENVELOPE);
501+ /**
502+ * The MediaType instance for Monarch Envelope, 3 7/8 x 7 1/2 in.
503+ */
504+ public static final MediaType MONARCH_ENVELOPE =
505+ new MediaType(I_MONARCH_ENVELOPE);
506+ /**
507+ * The MediaType instance for 6 3/4 envelope, 3 5/8 x 6 1/2 in.
508+ */
509+ public static final MediaType PERSONAL_ENVELOPE =
510+ new MediaType(I_PERSONAL_ENVELOPE);
511+ /**
512+ * An alias for ISO_A0.
513+ */
514+ public static final MediaType A0 = ISO_A0;
515+ /**
516+ * An alias for ISO_A1.
517+ */
518+ public static final MediaType A1 = ISO_A1;
519+ /**
520+ * An alias for ISO_A2.
521+ */
522+ public static final MediaType A2 = ISO_A2;
523+ /**
524+ * An alias for ISO_A3.
525+ */
526+ public static final MediaType A3 = ISO_A3;
527+ /**
528+ * An alias for ISO_A4.
529+ */
530+ public static final MediaType A4 = ISO_A4;
531+ /**
532+ * An alias for ISO_A5.
533+ */
534+ public static final MediaType A5 = ISO_A5;
535+ /**
536+ * An alias for ISO_A6.
537+ */
538+ public static final MediaType A6 = ISO_A6;
539+ /**
540+ * An alias for ISO_A7.
541+ */
542+ public static final MediaType A7 = ISO_A7;
543+ /**
544+ * An alias for ISO_A8.
545+ */
546+ public static final MediaType A8 = ISO_A8;
547+ /**
548+ * An alias for ISO_A9.
549+ */
550+ public static final MediaType A9 = ISO_A9;
551+ /**
552+ * An alias for ISO_A10.
553+ */
554+ public static final MediaType A10 = ISO_A10;
555+ /**
556+ * An alias for ISO_B0.
557+ */
558+ public static final MediaType B0 = ISO_B0;
559+ /**
560+ * An alias for ISO_B1.
561+ */
562+ public static final MediaType B1 = ISO_B1;
563+ /**
564+ * An alias for ISO_B2.
565+ */
566+ public static final MediaType B2 = ISO_B2;
567+ /**
568+ * An alias for ISO_B3.
569+ */
570+ public static final MediaType B3 = ISO_B3;
571+ /**
572+ * An alias for ISO_B4.
573+ */
574+ public static final MediaType B4 = ISO_B4;
575+ /**
576+ * An alias for ISO_B4.
577+ */
578+ public static final MediaType ISO_B4_ENVELOPE = ISO_B4;
579+ /**
580+ * An alias for ISO_B5.
581+ */
582+ public static final MediaType B5 = ISO_B5;
583+ /**
584+ * An alias for ISO_B5.
585+ */
586+ public static final MediaType ISO_B5_ENVELOPE = ISO_B5;
587+ /**
588+ * An alias for ISO_B6.
589+ */
590+ public static final MediaType B6 = ISO_B6;
591+ /**
592+ * An alias for ISO_B7.
593+ */
594+ public static final MediaType B7 = ISO_B7;
595+ /**
596+ * An alias for ISO_B8.
597+ */
598+ public static final MediaType B8 = ISO_B8;
599+ /**
600+ * An alias for ISO_B9.
601+ */
602+ public static final MediaType B9 = ISO_B9;
603+ /**
604+ * An alias for ISO_B10.
605+ */
606+ public static final MediaType B10 = ISO_B10;
607+ /**
608+ * An alias for ISO_C0.
609+ */
610+ public static final MediaType C0 = ISO_C0;
611+ /**
612+ * An alias for ISO_C0.
613+ */
614+ public static final MediaType ISO_C0_ENVELOPE = ISO_C0;
615+ /**
616+ * An alias for ISO_C1.
617+ */
618+ public static final MediaType C1 = ISO_C1;
619+ /**
620+ * An alias for ISO_C1.
621+ */
622+ public static final MediaType ISO_C1_ENVELOPE = ISO_C1;
623+ /**
624+ * An alias for ISO_C2.
625+ */
626+ public static final MediaType C2 = ISO_C2;
627+ /**
628+ * An alias for ISO_C2.
629+ */
630+ public static final MediaType ISO_C2_ENVELOPE = ISO_C2;
631+ /**
632+ * An alias for ISO_C3.
633+ */
634+ public static final MediaType C3 = ISO_C3;
635+ /**
636+ * An alias for ISO_C3.
637+ */
638+ public static final MediaType ISO_C3_ENVELOPE = ISO_C3;
639+ /**
640+ * An alias for ISO_C4.
641+ */
642+ public static final MediaType C4 = ISO_C4;
643+ /**
644+ * An alias for ISO_C4.
645+ */
646+ public static final MediaType ISO_C4_ENVELOPE = ISO_C4;
647+ /**
648+ * An alias for ISO_C5.
649+ */
650+ public static final MediaType C5 = ISO_C5;
651+ /**
652+ * An alias for ISO_C5.
653+ */
654+ public static final MediaType ISO_C5_ENVELOPE = ISO_C5;
655+ /**
656+ * An alias for ISO_C6.
657+ */
658+ public static final MediaType C6 = ISO_C6;
659+ /**
660+ * An alias for ISO_C6.
661+ */
662+ public static final MediaType ISO_C6_ENVELOPE = ISO_C6;
663+ /**
664+ * An alias for ISO_C7.
665+ */
666+ public static final MediaType C7 = ISO_C7;
667+ /**
668+ * An alias for ISO_C7.
669+ */
670+ public static final MediaType ISO_C7_ENVELOPE = ISO_C7;
671+ /**
672+ * An alias for ISO_C8.
673+ */
674+ public static final MediaType C8 = ISO_C8;
675+ /**
676+ * An alias for ISO_C8.
677+ */
678+ public static final MediaType ISO_C8_ENVELOPE = ISO_C8;
679+ /**
680+ * An alias for ISO_C9.
681+ */
682+ public static final MediaType C9 = ISO_C9;
683+ /**
684+ * An alias for ISO_C9.
685+ */
686+ public static final MediaType ISO_C9_ENVELOPE = ISO_C9;
687+ /**
688+ * An alias for ISO_C10.
689+ */
690+ public static final MediaType C10 = ISO_C10;
691+ /**
692+ * An alias for ISO_C10.
693+ */
694+ public static final MediaType ISO_C10_ENVELOPE = ISO_C10;
695+ /**
696+ * An alias for ISO_DESIGNATED_LONG.
697+ */
698+ public static final MediaType ISO_DESIGNATED_LONG_ENVELOPE =
699+ ISO_DESIGNATED_LONG;
700+ /**
701+ * An alias for INVOICE.
702+ */
703+ public static final MediaType STATEMENT = INVOICE;
704+ /**
705+ * An alias for LEDGER.
706+ */
707+ public static final MediaType TABLOID = LEDGER;
708+ /**
709+ * An alias for NA_LETTER.
710+ */
711+ public static final MediaType LETTER = NA_LETTER;
712+ /**
713+ * An alias for NA_LETTER.
714+ */
715+ public static final MediaType NOTE = NA_LETTER;
716+ /**
717+ * An alias for NA_LEGAL.
718+ */
719+ public static final MediaType LEGAL = NA_LEGAL;
720+ /**
721+ * An alias for NA_10X15_ENVELOPE.
722+ */
723+ public static final MediaType ENV_10X15 = NA_10X15_ENVELOPE;
724+ /**
725+ * An alias for NA_10X14_ENVELOPE.
726+ */
727+ public static final MediaType ENV_10X14 = NA_10X14_ENVELOPE;
728+ /**
729+ * An alias for NA_10X13_ENVELOPE.
730+ */
731+ public static final MediaType ENV_10X13 = NA_10X13_ENVELOPE;
732+ /**
733+ * An alias for NA_9X12_ENVELOPE.
734+ */
735+ public static final MediaType ENV_9X12 = NA_9X12_ENVELOPE;
736+ /**
737+ * An alias for NA_9X11_ENVELOPE.
738+ */
739+ public static final MediaType ENV_9X11 = NA_9X11_ENVELOPE;
740+ /**
741+ * An alias for NA_7X9_ENVELOPE.
742+ */
743+ public static final MediaType ENV_7X9 = NA_7X9_ENVELOPE;
744+ /**
745+ * An alias for NA_6X9_ENVELOPE.
746+ */
747+ public static final MediaType ENV_6X9 = NA_6X9_ENVELOPE;
748+ /**
749+ * An alias for NA_NUMBER_9_ENVELOPE.
750+ */
751+ public static final MediaType ENV_9 = NA_NUMBER_9_ENVELOPE;
752+ /**
753+ * An alias for NA_NUMBER_10_ENVELOPE.
754+ */
755+ public static final MediaType ENV_10 = NA_NUMBER_10_ENVELOPE;
756+ /**
757+ * An alias for NA_NUMBER_11_ENVELOPE.
758+ */
759+ public static final MediaType ENV_11 = NA_NUMBER_11_ENVELOPE;
760+ /**
761+ * An alias for NA_NUMBER_12_ENVELOPE.
762+ */
763+ public static final MediaType ENV_12 = NA_NUMBER_12_ENVELOPE;
764+ /**
765+ * An alias for NA_NUMBER_14_ENVELOPE.
766+ */
767+ public static final MediaType ENV_14 = NA_NUMBER_14_ENVELOPE;
768+ /**
769+ * An alias for INVITE_ENVELOPE.
770+ */
771+ public static final MediaType ENV_INVITE = INVITE_ENVELOPE;
772+ /**
773+ * An alias for ITALY_ENVELOPE.
774+ */
775+ public static final MediaType ENV_ITALY = ITALY_ENVELOPE;
776+ /**
777+ * An alias for MONARCH_ENVELOPE.
778+ */
779+ public static final MediaType ENV_MONARCH = MONARCH_ENVELOPE;
780+ /**
781+ * An alias for PERSONAL_ENVELOPE.
782+ */
783+ public static final MediaType ENV_PERSONAL = PERSONAL_ENVELOPE;
784+ /**
785+ * An alias for INVITE_ENVELOPE.
786+ */
787+ public static final MediaType INVITE = INVITE_ENVELOPE;
788+ /**
789+ * An alias for ITALY_ENVELOPE.
790+ */
791+ public static final MediaType ITALY = ITALY_ENVELOPE;
792+ /**
793+ * An alias for MONARCH_ENVELOPE.
794+ */
795+ public static final MediaType MONARCH = MONARCH_ENVELOPE;
796+ /**
797+ * An alias for PERSONAL_ENVELOPE.
798+ */
799+ public static final MediaType PERSONAL = PERSONAL_ENVELOPE;
800+
801+ private MediaType(int type) {
802+ super(type, NAMES);
803+ }
804+ }
805+
806+ /**
807+ * A type-safe enumeration of possible orientations. These orientations
808+ * are in partial compliance with IPP 1.1.
809+ * @since 1.3
810+ */
811+ public static final class OrientationRequestedType extends AttributeValue {
812+ private static final int I_PORTRAIT = 0;
813+ private static final int I_LANDSCAPE = 1;
814+
815+ private static final String NAMES[] = {
816+ "portrait", "landscape"
817+ };
818+
819+ /**
820+ * The OrientationRequestedType instance to use for specifying a
821+ * portrait orientation.
822+ */
823+ public static final OrientationRequestedType PORTRAIT =
824+ new OrientationRequestedType(I_PORTRAIT);
825+ /**
826+ * The OrientationRequestedType instance to use for specifying a
827+ * landscape orientation.
828+ */
829+ public static final OrientationRequestedType LANDSCAPE =
830+ new OrientationRequestedType(I_LANDSCAPE);
831+
832+ private OrientationRequestedType(int type) {
833+ super(type, NAMES);
834+ }
835+ }
836+
837+ /**
838+ * A type-safe enumeration of possible origins.
839+ * @since 1.3
840+ */
841+ public static final class OriginType extends AttributeValue {
842+ private static final int I_PHYSICAL = 0;
843+ private static final int I_PRINTABLE = 1;
844+
845+ private static final String NAMES[] = {
846+ "physical", "printable"
847+ };
848+
849+ /**
850+ * The OriginType instance to use for specifying a physical origin.
851+ */
852+ public static final OriginType PHYSICAL = new OriginType(I_PHYSICAL);
853+ /**
854+ * The OriginType instance to use for specifying a printable origin.
855+ */
856+ public static final OriginType PRINTABLE = new OriginType(I_PRINTABLE);
857+
858+ private OriginType(int type) {
859+ super(type, NAMES);
860+ }
861+ }
862+
863+ /**
864+ * A type-safe enumeration of possible print qualities. These print
865+ * qualities are in compliance with IPP 1.1.
866+ * @since 1.3
867+ */
868+ public static final class PrintQualityType extends AttributeValue {
869+ private static final int I_HIGH = 0;
870+ private static final int I_NORMAL = 1;
871+ private static final int I_DRAFT = 2;
872+
873+ private static final String NAMES[] = {
874+ "high", "normal", "draft"
875+ };
876+
877+ /**
878+ * The PrintQualityType instance to use for specifying a high print
879+ * quality.
880+ */
881+ public static final PrintQualityType HIGH =
882+ new PrintQualityType(I_HIGH);
883+ /**
884+ * The PrintQualityType instance to use for specifying a normal print
885+ * quality.
886+ */
887+ public static final PrintQualityType NORMAL =
888+ new PrintQualityType(I_NORMAL);
889+ /**
890+ * The PrintQualityType instance to use for specifying a draft print
891+ * quality.
892+ */
893+ public static final PrintQualityType DRAFT =
894+ new PrintQualityType(I_DRAFT);
895+
896+ private PrintQualityType(int type) {
897+ super(type, NAMES);
898+ }
899+ }
900+
901+ private ColorType color;
902+ private MediaType media;
903+ private OrientationRequestedType orientationRequested;
904+ private OriginType origin;
905+ private PrintQualityType printQuality;
906+ private int[] printerResolution;
907+
908+ /**
909+ * Constructs a PageAttributes instance with default values for every
910+ * attribute.
911+ */
912+ public PageAttributes() {
913+ setColor(ColorType.MONOCHROME);
914+ setMediaToDefault();
915+ setOrientationRequestedToDefault();
916+ setOrigin(OriginType.PHYSICAL);
917+ setPrintQualityToDefault();
918+ setPrinterResolutionToDefault();
919+ }
920+
921+ /**
922+ * Constructs a PageAttributes instance which is a copy of the supplied
923+ * PageAttributes.
924+ *
925+ * @param obj the PageAttributes to copy.
926+ */
927+ public PageAttributes(PageAttributes obj) {
928+ set(obj);
929+ }
930+
931+ /**
932+ * Constructs a PageAttributes instance with the specified values for
933+ * every attribute.
934+ *
935+ * @param color ColorType.COLOR or ColorType.MONOCHROME.
936+ * @param media one of the constant fields of the MediaType class.
937+ * @param orientationRequested OrientationRequestedType.PORTRAIT or
938+ * OrientationRequestedType.LANDSCAPE.
939+ * @param origin OriginType.PHYSICAL or OriginType.PRINTABLE
940+ * @param printQuality PrintQualityType.DRAFT, PrintQualityType.NORMAL,
941+ * or PrintQualityType.HIGH
942+ * @param printerResolution an integer array of 3 elements. The first
943+ * element must be greater than 0. The second element must be
944+ * must be greater than 0. The third element must be either
945+ * <code>3</code> or <code>4</code>.
946+ * @throws IllegalArgumentException if one or more of the above
947+ * conditions is violated.
948+ */
949+ public PageAttributes(ColorType color, MediaType media,
950+ OrientationRequestedType orientationRequested,
951+ OriginType origin, PrintQualityType printQuality,
952+ int[] printerResolution) {
953+ setColor(color);
954+ setMedia(media);
955+ setOrientationRequested(orientationRequested);
956+ setOrigin(origin);
957+ setPrintQuality(printQuality);
958+ setPrinterResolution(printerResolution);
959+ }
960+
961+ /**
962+ * Creates and returns a copy of this PageAttributes.
963+ *
964+ * @return the newly created copy. It is safe to cast this Object into
965+ * a PageAttributes.
966+ */
967+ public Object clone() {
968+ try {
969+ return super.clone();
970+ } catch (CloneNotSupportedException e) {
971+ // Since we implement Cloneable, this should never happen
972+ throw new InternalError();
973+ }
974+ }
975+
976+ /**
977+ * Sets all of the attributes of this PageAttributes to the same values as
978+ * the attributes of obj.
979+ *
980+ * @param obj the PageAttributes to copy.
981+ */
982+ public void set(PageAttributes obj) {
983+ color = obj.color;
984+ media = obj.media;
985+ orientationRequested = obj.orientationRequested;
986+ origin = obj.origin;
987+ printQuality = obj.printQuality;
988+ // okay because we never modify the contents of printerResolution
989+ printerResolution = obj.printerResolution;
990+ }
991+
992+ /**
993+ * Returns whether pages using these attributes will be rendered in
994+ * color or monochrome. This attribute is updated to the value chosen
995+ * by the user.
996+ *
997+ * @return ColorType.COLOR or ColorType.MONOCHROME.
998+ */
999+ public ColorType getColor() {
1000+ return color;
1001+ }
1002+
1003+ /**
1004+ * Specifies whether pages using these attributes will be rendered in
1005+ * color or monochrome. Not specifying this attribute is equivalent to
1006+ * specifying ColorType.MONOCHROME.
1007+ *
1008+ * @param color ColorType.COLOR or ColorType.MONOCHROME.
1009+ * @throws IllegalArgumentException if color is null.
1010+ */
1011+ public void setColor(ColorType color) {
1012+ if (color == null) {
1013+ throw new IllegalArgumentException("Invalid value for attribute "+
1014+ "color");
1015+ }
1016+ this.color = color;
1017+ }
1018+
1019+ /**
1020+ * Returns the paper size for pages using these attributes. This
1021+ * attribute is updated to the value chosen by the user.
1022+ *
1023+ * @return one of the constant fields of the MediaType class.
1024+ */
1025+ public MediaType getMedia() {
1026+ return media;
1027+ }
1028+
1029+ /**
1030+ * Specifies the desired paper size for pages using these attributes. The
1031+ * actual paper size will be determined by the limitations of the target
1032+ * printer. If an exact match cannot be found, an implementation will
1033+ * choose the closest possible match. Not specifying this attribute is
1034+ * equivalent to specifying the default size for the default locale. The
1035+ * default size for locales in the United States and Canada is
1036+ * MediaType.NA_LETTER. The default size for all other locales is
1037+ * MediaType.ISO_A4.
1038+ *
1039+ * @param media one of the constant fields of the MediaType class.
1040+ * @throws IllegalArgumentException if media is null.
1041+ */
1042+ public void setMedia(MediaType media) {
1043+ if (media == null) {
1044+ throw new IllegalArgumentException("Invalid value for attribute "+
1045+ "media");
1046+ }
1047+ this.media = media;
1048+ }
1049+
1050+ /**
1051+ * Sets the paper size for pages using these attributes to the default
1052+ * size for the default locale. The default size for locales in the
1053+ * United States and Canada is MediaType.NA_LETTER. The default size for
1054+ * all other locales is MediaType.ISO_A4.
1055+ */
1056+ public void setMediaToDefault(){
1057+ String defaultCountry = Locale.getDefault().getCountry();
1058+ if (defaultCountry != null &&
1059+ (defaultCountry.equals(Locale.US.getCountry()) ||
1060+ defaultCountry.equals(Locale.CANADA.getCountry()))) {
1061+ setMedia(MediaType.NA_LETTER);
1062+ } else {
1063+ setMedia(MediaType.ISO_A4);
1064+ }
1065+ }
1066+
1067+ /**
1068+ * Returns the print orientation for pages using these attributes. This
1069+ * attribute is updated to the value chosen by the user.
1070+ *
1071+ * @return OrientationRequestedType.PORTRAIT or
1072+ * OrientationRequestedType.LANDSCAPE.
1073+ */
1074+ public OrientationRequestedType getOrientationRequested() {
1075+ return orientationRequested;
1076+ }
1077+
1078+ /**
1079+ * Specifies the print orientation for pages using these attributes. Not
1080+ * specifying the property is equivalent to specifying
1081+ * OrientationRequestedType.PORTRAIT.
1082+ *
1083+ * @param orientationRequested OrientationRequestedType.PORTRAIT or
1084+ * OrientationRequestedType.LANDSCAPE.
1085+ * @throws IllegalArgumentException if orientationRequested is null.
1086+ */
1087+ public void setOrientationRequested(OrientationRequestedType
1088+ orientationRequested) {
1089+ if (orientationRequested == null) {
1090+ throw new IllegalArgumentException("Invalid value for attribute "+
1091+ "orientationRequested");
1092+ }
1093+ this.orientationRequested = orientationRequested;
1094+ }
1095+
1096+ /**
1097+ * Specifies the print orientation for pages using these attributes.
1098+ * Specifying <code>3</code> denotes portrait. Specifying <code>4</code>
1099+ * denotes landscape. Specifying any other value will generate an
1100+ * IllegalArgumentException. Not specifying the property is equivalent
1101+ * to calling setOrientationRequested(OrientationRequestedType.PORTRAIT).
1102+ *
1103+ * @param orientationRequested <code>3</code> or <code>4</code>
1104+ * @throws IllegalArgumentException if orientationRequested is not
1105+ * <code>3</code> or <code>4</code>
1106+ */
1107+ public void setOrientationRequested(int orientationRequested) {
1108+ switch (orientationRequested) {
1109+ case 3:
1110+ setOrientationRequested(OrientationRequestedType.PORTRAIT);
1111+ break;
1112+ case 4:
1113+ setOrientationRequested(OrientationRequestedType.LANDSCAPE);
1114+ break;
1115+ default:
1116+ // This will throw an IllegalArgumentException
1117+ setOrientationRequested(null);
1118+ break;
1119+ }
1120+ }
1121+
1122+ /**
1123+ * Sets the print orientation for pages using these attributes to the
1124+ * default. The default orientation is portrait.
1125+ */
1126+ public void setOrientationRequestedToDefault() {
1127+ setOrientationRequested(OrientationRequestedType.PORTRAIT);
1128+ }
1129+
1130+ /**
1131+ * Returns whether drawing at (0, 0) to pages using these attributes
1132+ * draws at the upper-left corner of the physical page, or at the
1133+ * upper-left corner of the printable area. (Note that these locations
1134+ * could be equivalent.) This attribute cannot be modified by,
1135+ * and is not subject to any limitations of, the implementation or the
1136+ * target printer.
1137+ *
1138+ * @return OriginType.PHYSICAL or OriginType.PRINTABLE
1139+ */
1140+ public OriginType getOrigin() {
1141+ return origin;
1142+ }
1143+
1144+ /**
1145+ * Specifies whether drawing at (0, 0) to pages using these attributes
1146+ * draws at the upper-left corner of the physical page, or at the
1147+ * upper-left corner of the printable area. (Note that these locations
1148+ * could be equivalent.) Not specifying the property is equivalent to
1149+ * specifying OriginType.PHYSICAL.
1150+ *
1151+ * @param origin OriginType.PHYSICAL or OriginType.PRINTABLE
1152+ * @throws IllegalArgumentException if origin is null.
1153+ */
1154+ public void setOrigin(OriginType origin) {
1155+ if (origin == null) {
1156+ throw new IllegalArgumentException("Invalid value for attribute "+
1157+ "origin");
1158+ }
1159+ this.origin = origin;
1160+ }
1161+
1162+ /**
1163+ * Returns the print quality for pages using these attributes. This
1164+ * attribute is updated to the value chosen by the user.
1165+ *
1166+ * @return PrintQualityType.DRAFT, PrintQualityType.NORMAL, or
1167+ * PrintQualityType.HIGH
1168+ */
1169+ public PrintQualityType getPrintQuality() {
1170+ return printQuality;
1171+ }
1172+
1173+ /**
1174+ * Specifies the print quality for pages using these attributes. Not
1175+ * specifying the property is equivalent to specifying
1176+ * PrintQualityType.NORMAL.
1177+ *
1178+ * @param printQuality PrintQualityType.DRAFT, PrintQualityType.NORMAL,
1179+ * or PrintQualityType.HIGH
1180+ * @throws IllegalArgumentException if printQuality is null.
1181+ */
1182+ public void setPrintQuality(PrintQualityType printQuality) {
1183+ if (printQuality == null) {
1184+ throw new IllegalArgumentException("Invalid value for attribute "+
1185+ "printQuality");
1186+ }
1187+ this.printQuality = printQuality;
1188+ }
1189+
1190+ /**
1191+ * Specifies the print quality for pages using these attributes.
1192+ * Specifying <code>3</code> denotes draft. Specifying <code>4</code>
1193+ * denotes normal. Specifying <code>5</code> denotes high. Specifying
1194+ * any other value will generate an IllegalArgumentException. Not
1195+ * specifying the property is equivalent to calling
1196+ * setPrintQuality(PrintQualityType.NORMAL).
1197+ *
1198+ * @param printQuality <code>3</code>, <code>4</code>, or <code>5</code>
1199+ * @throws IllegalArgumentException if printQuality is not <code>3
1200+ * </code>, <code>4</code>, or <code>5</code>
1201+ */
1202+ public void setPrintQuality(int printQuality) {
1203+ switch (printQuality) {
1204+ case 3:
1205+ setPrintQuality(PrintQualityType.DRAFT);
1206+ break;
1207+ case 4:
1208+ setPrintQuality(PrintQualityType.NORMAL);
1209+ break;
1210+ case 5:
1211+ setPrintQuality(PrintQualityType.HIGH);
1212+ break;
1213+ default:
1214+ // This will throw an IllegalArgumentException
1215+ setPrintQuality(null);
1216+ break;
1217+ }
1218+ }
1219+
1220+ /**
1221+ * Sets the print quality for pages using these attributes to the default.
1222+ * The default print quality is normal.
1223+ */
1224+ public void setPrintQualityToDefault() {
1225+ setPrintQuality(PrintQualityType.NORMAL);
1226+ }
1227+
1228+ /**
1229+ * Returns the print resolution for pages using these attributes.
1230+ * Index 0 of the array specifies the cross feed direction resolution
1231+ * (typically the horizontal resolution). Index 1 of the array specifies
1232+ * the feed direction resolution (typically the vertical resolution).
1233+ * Index 2 of the array specifies whether the resolutions are in dots per
1234+ * inch or dots per centimeter. <code>3</code> denotes dots per inch.
1235+ * <code>4</code> denotes dots per centimeter.
1236+ *
1237+ * @return an integer array of 3 elements. The first
1238+ * element must be greater than 0. The second element must be
1239+ * must be greater than 0. The third element must be either
1240+ * <code>3</code> or <code>4</code>.
1241+ */
1242+ public int[] getPrinterResolution() {
1243+ // Return a copy because otherwise client code could circumvent the
1244+ // the checks made in setPrinterResolution by modifying the
1245+ // returned array.
1246+ int[] copy = new int[3];
1247+ copy[0] = printerResolution[0];
1248+ copy[1] = printerResolution[1];
1249+ copy[2] = printerResolution[2];
1250+ return copy;
1251+ }
1252+
1253+ /**
1254+ * Specifies the desired print resolution for pages using these attributes.
1255+ * The actual resolution will be determined by the limitations of the
1256+ * implementation and the target printer. Index 0 of the array specifies
1257+ * the cross feed direction resolution (typically the horizontal
1258+ * resolution). Index 1 of the array specifies the feed direction
1259+ * resolution (typically the vertical resolution). Index 2 of the array
1260+ * specifies whether the resolutions are in dots per inch or dots per
1261+ * centimeter. <code>3</code> denotes dots per inch. <code>4</code>
1262+ * denotes dots per centimeter. Note that the 1.1 printing implementation
1263+ * (Toolkit.getPrintJob) requires that the feed and cross feed resolutions
1264+ * be the same. Not specifying the property is equivalent to calling
1265+ * setPrinterResolution(72).
1266+ *
1267+ * @param printerResolution an integer array of 3 elements. The first
1268+ * element must be greater than 0. The second element must be
1269+ * must be greater than 0. The third element must be either
1270+ * <code>3</code> or <code>4</code>.
1271+ * @throws IllegalArgumentException if one or more of the above
1272+ * conditions is violated.
1273+ */
1274+ public void setPrinterResolution(int[] printerResolution) {
1275+ if (printerResolution == null ||
1276+ printerResolution.length != 3 ||
1277+ printerResolution[0] <= 0 ||
1278+ printerResolution[1] <= 0 ||
1279+ (printerResolution[2] != 3 && printerResolution[2] != 4)) {
1280+ throw new IllegalArgumentException("Invalid value for attribute "+
1281+ "printerResolution");
1282+ }
1283+ // Store a copy because otherwise client code could circumvent the
1284+ // the checks made above by holding a reference to the array and
1285+ // modifying it after calling setPrinterResolution.
1286+ int[] copy = new int[3];
1287+ copy[0] = printerResolution[0];
1288+ copy[1] = printerResolution[1];
1289+ copy[2] = printerResolution[2];
1290+ this.printerResolution = copy;
1291+ }
1292+
1293+ /**
1294+ * Specifies the desired cross feed and feed print resolutions in dots per
1295+ * inch for pages using these attributes. The same value is used for both
1296+ * resolutions. The actual resolutions will be determined by the
1297+ * limitations of the implementation and the target printer. Not
1298+ * specifying the property is equivalent to specifying <code>72</code>.
1299+ *
1300+ * @param printerResolution an integer greater than 0.
1301+ * @throws IllegalArgumentException if printerResolution is less than or
1302+ * equal to 0.
1303+ */
1304+ public void setPrinterResolution(int printerResolution) {
1305+ setPrinterResolution(new int[] { printerResolution, printerResolution,
1306+ 3 } );
1307+ }
1308+
1309+ /**
1310+ * Sets the printer resolution for pages using these attributes to the
1311+ * default. The default is 72 dpi for both the feed and cross feed
1312+ * resolutions.
1313+ */
1314+ public void setPrinterResolutionToDefault() {
1315+ setPrinterResolution(72);
1316+ }
1317+
1318+ /**
1319+ * Determines whether two PageAttributes are equal to each other.
1320+ * <p>
1321+ * Two PageAttributes are equal if and only if each of their attributes are
1322+ * equal. Attributes of enumeration type are equal if and only if the
1323+ * fields refer to the same unique enumeration object. This means that
1324+ * an aliased media is equal to its underlying unique media. Printer
1325+ * resolutions are equal if and only if the feed resolution, cross feed
1326+ * resolution, and units are equal.
1327+ *
1328+ * @param obj the object whose equality will be checked.
1329+ * @return whether obj is equal to this PageAttribute according to the
1330+ * above criteria.
1331+ */
1332+ public boolean equals(Object obj) {
1333+ if (!(obj instanceof PageAttributes)) {
1334+ return false;
1335+ }
1336+
1337+ PageAttributes rhs = (PageAttributes)obj;
1338+
1339+ return (color == rhs.color &&
1340+ media == rhs.media &&
1341+ orientationRequested == rhs.orientationRequested &&
1342+ origin == rhs.origin &&
1343+ printQuality == rhs.printQuality &&
1344+ printerResolution[0] == rhs.printerResolution[0] &&
1345+ printerResolution[1] == rhs.printerResolution[1] &&
1346+ printerResolution[2] == rhs.printerResolution[2]);
1347+ }
1348+
1349+ /**
1350+ * Returns a hash code value for this PageAttributes.
1351+ *
1352+ * @return the hash code.
1353+ */
1354+ public int hashCode() {
1355+ return (color.hashCode() << 31 ^
1356+ media.hashCode() << 24 ^
1357+ orientationRequested.hashCode() << 23 ^
1358+ origin.hashCode() << 22 ^
1359+ printQuality.hashCode() << 20 ^
1360+ printerResolution[2] >> 2 << 19 ^
1361+ printerResolution[1] << 10 ^
1362+ printerResolution[0]);
1363+ }
1364+
1365+ /**
1366+ * Returns a string representation of this PageAttributes.
1367+ *
1368+ * @return the string representation.
1369+ */
1370+ public String toString() {
1371+ // int[] printerResolution = getPrinterResolution();
1372+ return "color=" + getColor() + ",media=" + getMedia() +
1373+ ",orientation-requested=" + getOrientationRequested() +
1374+ ",origin=" + getOrigin() + ",print-quality=" + getPrintQuality() +
1375+ ",printer-resolution=[" + printerResolution[0] + "," +
1376+ printerResolution[1] + "," + printerResolution[2] + "]";
1377+ }
1378+}