public synchronized PrintService getDefaultPrintService() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } // clear defaultPrintService defaultPrintService = null; // Windows does not have notification for a change in default // so we always get the latest. defaultPrinter = getDefaultPrinterName(); if (defaultPrinter == null) { return null; } if (printServices != null) { for (int j = 0; j < printServices.length; j++) { if (defaultPrinter.equals(printServices[j].getName())) { defaultPrintService = printServices[j]; break; } } } if (defaultPrintService == null) { defaultPrintService = new Win32PrintService(defaultPrinter); } return defaultPrintService; }
public PrintService[] getPrintServices(DocFlavor flavor, AttributeSet attributes) { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } PrintRequestAttributeSet requestSet = null; PrintServiceAttributeSet serviceSet = null; if (attributes != null && !attributes.isEmpty()) { requestSet = new HashPrintRequestAttributeSet(); serviceSet = new HashPrintServiceAttributeSet(); Attribute[] attrs = attributes.toArray(); for (int i = 0; i < attrs.length; i++) { if (attrs[i] instanceof PrintRequestAttribute) { requestSet.add(attrs[i]); } else if (attrs[i] instanceof PrintServiceAttribute) { serviceSet.add(attrs[i]); } } } /* * Special case: If client is asking for a particular printer * (by name) then we can save time by getting just that service * to check against the rest of the specified attributes. */ PrintService[] services = null; if (serviceSet != null && serviceSet.get(PrinterName.class) != null) { PrinterName name = (PrinterName) serviceSet.get(PrinterName.class); PrintService service = getPrintServiceByName(name.getValue()); if (service == null || !matchingService(service, serviceSet)) { services = new PrintService[0]; } else { services = new PrintService[1]; services[0] = service; } } else { services = getPrintServices(); } if (services.length == 0) { return services; } else { ArrayList matchingServices = new ArrayList(); for (int i = 0; i < services.length; i++) { try { if (services[i].getUnsupportedAttributes(flavor, requestSet) == null) { matchingServices.add(services[i]); } } catch (IllegalArgumentException e) { } } services = new PrintService[matchingServices.size()]; return (PrintService[]) matchingServices.toArray(services); } }
/* * return empty array as don't support multi docs */ public MultiDocPrintService[] getMultiDocPrintServices( DocFlavor[] flavors, AttributeSet attributes) { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } return new MultiDocPrintService[0]; }
private static ArrayList getMultiDocServices(DocFlavor[] flavors, AttributeSet attributes) { ArrayList listOfServices = new ArrayList(); Iterator psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { PrintServiceLookup lus = (PrintServiceLookup) psIterator.next(); MultiDocPrintService[] services = lus.getMultiDocPrintServices(flavors, attributes); if (services == null) { continue; } for (int i = 0; i < services.length; i++) { listOfServices.add(services[i]); } } catch (Exception e) { } } /* add any directly registered services */ ArrayList registeredServices = null; try { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } registeredServices = getRegisteredServices(); } catch (Exception e) { } if (registeredServices != null) { PrintService[] services = (PrintService[]) registeredServices.toArray(new PrintService[registeredServices.size()]); for (int i = 0; i < services.length; i++) { if (services[i] instanceof MultiDocPrintService && !listOfServices.contains(services[i])) { if (flavors == null || flavors.length == 0) { listOfServices.add(services[i]); } else { boolean supported = true; for (int f = 0; f < flavors.length; f++) { if (services[i].isDocFlavorSupported(flavors[f])) { if (services[i].getUnsupportedAttributes(flavors[f], attributes) != null) { supported = false; break; } } else { supported = false; break; } } if (supported) { listOfServices.add(services[i]); } } } } } return listOfServices; }
/* Want the PrintService which is default print service to have * equality of reference with the equivalent in list of print services * This isn't required by the API and there's a risk doing this will * lead people to assume its guaranteed. */ public synchronized PrintService[] getPrintServices() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } if (printServices == null) { refreshServices(); } return printServices; }
private static ArrayList getServices(DocFlavor flavor, AttributeSet attributes) { ArrayList listOfServices = new ArrayList(); Iterator psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { PrintServiceLookup lus = (PrintServiceLookup) psIterator.next(); PrintService[] services = null; if (flavor == null && attributes == null) { try { services = lus.getPrintServices(); } catch (Throwable tr) { } } else { services = lus.getPrintServices(flavor, attributes); } if (services == null) { continue; } for (int i = 0; i < services.length; i++) { listOfServices.add(services[i]); } } catch (Exception e) { } } /* add any directly registered services */ ArrayList registeredServices = null; try { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } registeredServices = getRegisteredServices(); } catch (SecurityException se) { } if (registeredServices != null) { PrintService[] services = (PrintService[]) registeredServices.toArray(new PrintService[registeredServices.size()]); for (int i = 0; i < services.length; i++) { if (!listOfServices.contains(services[i])) { if (flavor == null && attributes == null) { listOfServices.add(services[i]); } else if (((flavor != null && services[i].isDocFlavorSupported(flavor)) || flavor == null) && null == services[i].getUnsupportedAttributes(flavor, attributes)) { listOfServices.add(services[i]); } } } } return listOfServices; }
public PrintService getDefaultPrintService() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } if (defaultPrintService == null) { defaultPrinter = getDefaultPrinterName(); if (defaultPrinter != null) { defaultPrintService = new Win32PrintService(defaultPrinter); } } return defaultPrintService; }
/* Want the PrintService which is default print service to have * equality of reference with the equivalent in list of print services * This isn't required by the API and there's a risk doing this will * lead people to assume its guaranteed. */ public PrintService[] getPrintServices() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } if (printServices == null) { PrintService defService = getDefaultPrintService(); printers = getAllPrinterNames(); if (printers == null) { return new PrintService[0]; } printServices = new PrintService[printers.length]; for (int p = 0; p < printers.length; p++) { if (defService != null && printers[p].equals(defService.getName())) { printServices[p] = defService; } else { printServices[p] = new Win32PrintService(printers[p]); } } } return printServices; }
@Override public void checkPrintJobAccess() { if (finalSecurityManager != null) finalSecurityManager.checkPrintJobAccess(); }