1/*
2 * Copyright (c) 2000, 2014, 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 */
25package javax.print.attribute.standard;
26
27import javax.print.attribute.Attribute;
28import javax.print.attribute.EnumSyntax;
29import javax.print.attribute.DocAttribute;
30import javax.print.attribute.PrintRequestAttribute;
31import javax.print.attribute.PrintJobAttribute;
32
33/**
34 * Class PrintQuality is a printing attribute class, an enumeration,
35 * that specifies the print quality that the printer uses for the job.
36 * <P>
37 * <B>IPP Compatibility:</B> The category name returned by
38 * {@code getName()} is the IPP attribute name.  The enumeration's
39 * integer value is the IPP enum value.  The {@code toString()} method
40 * returns the IPP string representation of the attribute value.
41 *
42 * @author  David Mendenhall
43 * @author  Alan Kaminsky
44 */
45public class PrintQuality extends EnumSyntax
46    implements DocAttribute, PrintRequestAttribute, PrintJobAttribute {
47
48    private static final long serialVersionUID = -3072341285225858365L;
49    /**
50     * Lowest quality available on the printer.
51     */
52    public static final PrintQuality DRAFT = new PrintQuality(3);
53
54    /**
55     * Normal or intermediate quality on the printer.
56     */
57    public static final PrintQuality NORMAL = new PrintQuality(4);
58
59    /**
60     * Highest quality available on the printer.
61     */
62    public static final PrintQuality HIGH = new PrintQuality(5);
63
64    /**
65     * Construct a new print quality enumeration value with the given integer
66     * value.
67     *
68     * @param  value  Integer value.
69     */
70    protected PrintQuality(int value) {
71        super (value);
72    }
73
74    private static final String[] myStringTable = {
75        "draft",
76        "normal",
77        "high"
78    };
79
80    private static final PrintQuality[] myEnumValueTable = {
81        DRAFT,
82        NORMAL,
83        HIGH
84    };
85
86    /**
87     * Returns the string table for class PrintQuality.
88     */
89    protected String[] getStringTable() {
90        return myStringTable.clone();
91    }
92
93    /**
94     * Returns the enumeration value table for class PrintQuality.
95     */
96    protected EnumSyntax[] getEnumValueTable() {
97        return (EnumSyntax[])myEnumValueTable.clone();
98    }
99
100    /**
101     * Returns the lowest integer value used by class PrintQuality.
102     */
103    protected int getOffset() {
104        return 3;
105    }
106
107    /**
108     * Get the printing attribute class which is to be used as the "category"
109     * for this printing attribute value.
110     * <P>
111     * For class PrintQuality and any vendor-defined subclasses, the category is
112     * class PrintQuality itself.
113     *
114     * @return  Printing attribute class (category), an instance of class
115     *          {@link java.lang.Class java.lang.Class}.
116     */
117    public final Class<? extends Attribute> getCategory() {
118        return PrintQuality.class;
119    }
120
121    /**
122     * Get the name of the category of which this attribute value is an
123     * instance.
124     * <P>
125     * For class PrintQuality and any vendor-defined subclasses, the category
126     * name is {@code "print-quality"}.
127     *
128     * @return  Attribute category name.
129     */
130    public final String getName() {
131        return "print-quality";
132    }
133
134}
135