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 */ 25 26 package javax.print; 27 28 /** 29 * Services may optionally provide UIs which allow different styles 30 * of interaction in different roles. 31 * One role may be end-user browsing and setting of print options. 32 * Another role may be administering the print service. 33 * <p> 34 * Although the Print Service API does not presently provide standardised 35 * support for administering a print service, monitoring of the print 36 * service is possible and a UI may provide for private update mechanisms. 37 * <p> 38 * The basic design intent is to allow applications to lazily locate and 39 * initialize services only when needed without any API dependencies 40 * except in an environment in which they are used. 41 * <p> 42 * Swing UIs are preferred as they provide a more consistent {@literal L&F} 43 * and can support accessibility APIs. 44 * <p> 45 * Example usage: 46 * <pre> 47 * ServiceUIFactory factory = printService.getServiceUIFactory(); 48 * if (factory != null) { 49 * JComponent swingui = (JComponent)factory.getUI( 50 * ServiceUIFactory.MAIN_UIROLE, 51 * ServiceUIFactory.JCOMPONENT_UI); 52 * if (swingui != null) { 53 * tabbedpane.add("Custom UI", swingui); 54 * } 55 * } 56 * </pre> 57 */ 58 59 public abstract class ServiceUIFactory { 60 61 /** 62 * Denotes a UI implemented as a Swing component. 63 * The value of the String is the fully qualified classname : 64 * "javax.swing.JComponent". 65 */ 66 public static final String JCOMPONENT_UI = "javax.swing.JComponent"; 67 68 /** 69 * Denotes a UI implemented as an AWT panel. 70 * The value of the String is the fully qualified classname : 71 * "java.awt.Panel" 72 */ 73 public static final String PANEL_UI = "java.awt.Panel"; 74 75 /** 76 * Denotes a UI implemented as an AWT dialog. 77 * The value of the String is the fully qualified classname : 78 * "java.awt.Dialog" 79 */ 80 public static final String DIALOG_UI = "java.awt.Dialog"; 81 82 /** 83 * Denotes a UI implemented as a Swing dialog. 84 * The value of the String is the fully qualified classname : 85 * "javax.swing.JDialog" 86 */ 87 public static final String JDIALOG_UI = "javax.swing.JDialog"; 88 89 /** 90 * Denotes a UI which performs an informative "About" role. 91 */ 92 public static final int ABOUT_UIROLE = 1; 93 94 /** 95 * Denotes a UI which performs an administrative role. 96 */ 97 public static final int ADMIN_UIROLE = 2; 98 99 /** 100 * Denotes a UI which performs the normal end user role. 101 */ 102 public static final int MAIN_UIROLE = 3; 103 104 /** 105 * Not a valid role but role id's greater than this may be used 106 * for private roles supported by a service. Knowledge of the 107 * function performed by this role is required to make proper use 108 * of it. 109 */ 110 public static final int RESERVED_UIROLE = 99; 111 /** 112 * Get a UI object which may be cast to the requested UI type 113 * by the application and used in its user interface. 114 * 115 * @param role requested. Must be one of the standard roles or 116 * a private role supported by this factory. 117 * @param ui type in which the role is requested. 118 * @return the UI role or null if the requested UI role is not available 119 * from this factory 120 * @throws IllegalArgumentException if the role or ui is neither 121 * one of the standard ones, nor a private one 122 * supported by the factory. 123 */ 124 public abstract Object getUI(int role, String ui) ; 125 126 /** 127 * Given a UI role obtained from this factory obtain the UI 128 * types available from this factory which implement this role. 129 * The returned Strings should refer to the static variables defined 130 * in this class so that applications can use equality of reference 131 * ("=="). 132 * @param role to be looked up. 133 * @return the UI types supported by this class for the specified role, 134 * null if no UIs are available for the role. 135 * @throws IllegalArgumentException is the role is a non-standard 136 * role not supported by this factory. 137 */ 138 public abstract String[] getUIClassNamesForRole(int role) ; 139 140 141 142 } | 1 /* 2 * Copyright (c) 2000, 2017, 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 javax.print; 27 28 /** 29 * Services may optionally provide UIs which allow different styles of 30 * interaction in different roles. One role may be end-user browsing and setting 31 * of print options. Another role may be administering the print service. 32 * <p> 33 * Although the Print Service API does not presently provide standardised 34 * support for administering a print service, monitoring of the print service is 35 * possible and a UI may provide for private update mechanisms. 36 * <p> 37 * The basic design intent is to allow applications to lazily locate and 38 * initialize services only when needed without any API dependencies except in 39 * an environment in which they are used. 40 * <p> 41 * Swing UIs are preferred as they provide a more consistent {@literal L&F} and 42 * can support accessibility APIs. 43 * <p> 44 * Example usage: 45 * <pre> 46 * ServiceUIFactory factory = printService.getServiceUIFactory(); 47 * if (factory != null) { 48 * JComponent swingui = (JComponent)factory.getUI( 49 * ServiceUIFactory.MAIN_UIROLE, 50 * ServiceUIFactory.JCOMPONENT_UI); 51 * if (swingui != null) { 52 * tabbedpane.add("Custom UI", swingui); 53 * } 54 * } 55 * </pre> 56 */ 57 public abstract class ServiceUIFactory { 58 59 /** 60 * Denotes a UI implemented as a Swing component. The value of the string is 61 * the fully qualified classname : "javax.swing.JComponent". 62 */ 63 public static final String JCOMPONENT_UI = "javax.swing.JComponent"; 64 65 /** 66 * Denotes a UI implemented as an AWT panel. The value of the string is the 67 * fully qualified classname : "java.awt.Panel" 68 */ 69 public static final String PANEL_UI = "java.awt.Panel"; 70 71 /** 72 * Denotes a UI implemented as an AWT dialog. The value of the string is the 73 * fully qualified classname : "java.awt.Dialog" 74 */ 75 public static final String DIALOG_UI = "java.awt.Dialog"; 76 77 /** 78 * Denotes a UI implemented as a Swing dialog. The value of the string is 79 * the fully qualified classname : "javax.swing.JDialog" 80 */ 81 public static final String JDIALOG_UI = "javax.swing.JDialog"; 82 83 /** 84 * Denotes a UI which performs an informative "About" role. 85 */ 86 public static final int ABOUT_UIROLE = 1; 87 88 /** 89 * Denotes a UI which performs an administrative role. 90 */ 91 public static final int ADMIN_UIROLE = 2; 92 93 /** 94 * Denotes a UI which performs the normal end user role. 95 */ 96 public static final int MAIN_UIROLE = 3; 97 98 /** 99 * Not a valid role but role id's greater than this may be used for private 100 * roles supported by a service. Knowledge of the function performed by this 101 * role is required to make proper use of it. 102 */ 103 public static final int RESERVED_UIROLE = 99; 104 105 /** 106 * Get a UI object which may be cast to the requested UI type by the 107 * application and used in its user interface. 108 * 109 * @param role requested. Must be one of the standard roles or a private 110 * role supported by this factory. 111 * @param ui type in which the role is requested 112 * @return the UI role or {@code null} if the requested UI role is not 113 * available from this factory 114 * @throws IllegalArgumentException if the role or ui is neither one of the 115 * standard ones, nor a private one supported by the factory 116 */ 117 public abstract Object getUI(int role, String ui) ; 118 119 /** 120 * Given a UI role obtained from this factory obtain the UI types available 121 * from this factory which implement this role. The returned {@code Strings} 122 * should refer to the static variables defined in this class so that 123 * applications can use equality of reference ("=="). 124 * 125 * @param role to be looked up 126 * @return the UI types supported by this class for the specified role, 127 * {@code null} if no UIs are available for the role 128 * @throws IllegalArgumentException is the role is a non-standard role not 129 * supported by this factory 130 */ 131 public abstract String[] getUIClassNamesForRole(int role) ; 132 133 } |