< prev index next >

src/java.desktop/share/classes/sun/print/CustomMediaTray.java

Print this page

 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 sun.print;
 27 
 28 import java.io.Serial;
 29 import java.util.ArrayList;



 30 
 31 import javax.print.attribute.EnumSyntax;
 32 import javax.print.attribute.standard.Media;
 33 import javax.print.attribute.standard.MediaTray;
 34 
 35 public class CustomMediaTray extends MediaTray {
 36     private static ArrayList<String> customStringTable = new ArrayList<>();
 37     private static ArrayList<MediaTray> customEnumTable = new ArrayList<>();

 38     private String choiceName;
 39 
 40     private CustomMediaTray(int x) {
 41         super(x);
 42 
 43     }
 44 
 45     private static synchronized int nextValue(String name) {
 46       customStringTable.add(name);
 47       return (customStringTable.size()-1);
 48     }
 49 
 50 
 51     public CustomMediaTray(String name, String choice) {
 52         super(nextValue(name));
 53         choiceName = choice;
 54         customEnumTable.add(this);
 55     }
 56 
 57     /**

 76       return (Media[])super.getEnumValueTable();
 77     }
 78 
 79 
 80     /**
 81      * Returns the string table for class CustomMediaTray.
 82      */
 83     protected String[] getStringTable() {
 84       String[] nameTable = new String[customStringTable.size()];
 85       return customStringTable.toArray(nameTable);
 86     }
 87 
 88     /**
 89      * Returns the enumeration value table for class CustomMediaTray.
 90      */
 91     protected EnumSyntax[] getEnumValueTable() {
 92       MediaTray[] enumTable = new MediaTray[customEnumTable.size()];
 93       return customEnumTable.toArray(enumTable);
 94     }
 95 
































 96 }

 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 sun.print;
 27 
 28 import java.io.Serial;
 29 import java.util.ArrayList;
 30 import java.util.Objects;
 31 import java.util.Map;
 32 import java.util.HashMap;
 33 
 34 import javax.print.attribute.EnumSyntax;
 35 import javax.print.attribute.standard.Media;
 36 import javax.print.attribute.standard.MediaTray;
 37 
 38 public class CustomMediaTray extends MediaTray {
 39     private static ArrayList<String> customStringTable = new ArrayList<>();
 40     private static ArrayList<MediaTray> customEnumTable = new ArrayList<>();
 41     private static Map<NameChoiceItem, CustomMediaTray> customMap = new HashMap<>();
 42     private String choiceName;
 43 
 44     private CustomMediaTray(int x) {
 45         super(x);
 46 
 47     }
 48 
 49     private static synchronized int nextValue(String name) {
 50       customStringTable.add(name);
 51       return (customStringTable.size()-1);
 52     }
 53 
 54 
 55     public CustomMediaTray(String name, String choice) {
 56         super(nextValue(name));
 57         choiceName = choice;
 58         customEnumTable.add(this);
 59     }
 60 
 61     /**

 80       return (Media[])super.getEnumValueTable();
 81     }
 82 
 83 
 84     /**
 85      * Returns the string table for class CustomMediaTray.
 86      */
 87     protected String[] getStringTable() {
 88       String[] nameTable = new String[customStringTable.size()];
 89       return customStringTable.toArray(nameTable);
 90     }
 91 
 92     /**
 93      * Returns the enumeration value table for class CustomMediaTray.
 94      */
 95     protected EnumSyntax[] getEnumValueTable() {
 96       MediaTray[] enumTable = new MediaTray[customEnumTable.size()];
 97       return customEnumTable.toArray(enumTable);
 98     }
 99 
100     public static CustomMediaTray create(String name, String choice) {
101         NameChoiceItem key = new NameChoiceItem(name, choice);
102         CustomMediaTray value = customMap.get(key);
103         if (value == null) {
104             value = new CustomMediaTray(name, choice);
105             customMap.put(key, value);
106         }
107         return value;
108     }
109 
110     private static class NameChoiceItem {
111 
112         private final String name;
113         private final String choice;
114 
115         public NameChoiceItem(String name, String choice) {
116             this.name = name;
117             this.choice = choice;
118         }
119 
120         public boolean equals(Object object) {
121             if (this == object) return true;
122             if (object == null || getClass() != object.getClass()) return false;
123             NameChoiceItem that = (NameChoiceItem) object;
124             return Objects.equals(this.name, that.name)
125                     && Objects.equals(this.choice, that.choice);
126         }
127 
128         public int hashCode() {
129             return Objects.hash(name, choice);
130         }
131     }
132 }
< prev index next >