< prev index next >

src/java.desktop/unix/classes/sun/print/UnixPrintService.java

Print this page

        

*** 29,38 **** --- 29,40 ---- import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Locale; + import java.awt.GraphicsEnvironment; + import java.awt.Toolkit; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintService; import javax.print.ServiceUIFactory; import javax.print.attribute.Attribute;
*** 52,61 **** --- 54,65 ---- import javax.print.attribute.standard.Chromaticity; import javax.print.attribute.standard.ColorSupported; import javax.print.attribute.standard.Copies; import javax.print.attribute.standard.CopiesSupported; import javax.print.attribute.standard.Destination; + import javax.print.attribute.standard.DialogOwner; + import javax.print.attribute.standard.DialogTypeSelection; import javax.print.attribute.standard.Fidelity; import javax.print.attribute.standard.Media; import javax.print.attribute.standard.MediaPrintableArea; import javax.print.attribute.standard.MediaSize; import javax.print.attribute.standard.MediaSizeName;
*** 617,630 **** } return false; } public Class<?>[] getSupportedAttributeCategories() { ! int totalCats = otherAttrCats.length; ! Class<?>[] cats = new Class<?>[totalCats]; ! System.arraycopy(otherAttrCats, 0, cats, 0, otherAttrCats.length); ! return cats; } public boolean isAttributeCategorySupported(Class<? extends Attribute> category) { --- 621,639 ---- } return false; } public Class<?>[] getSupportedAttributeCategories() { ! ArrayList<Class<?>> categList = new ArrayList<>(otherAttrCats.length); ! for (Class<?> c : otherAttrCats) { ! categList.add(c); ! } ! if (GraphicsEnvironment.isHeadless() == false) { ! categList.add(DialogOwner.class); ! categList.add(DialogTypeSelection.class); ! } ! return categList.toArray(new Class<?>[categList.size()]); } public boolean isAttributeCategorySupported(Class<? extends Attribute> category) {
*** 1021,1030 **** --- 1030,1057 ---- if (flavor != null && !(flavor.equals(DocFlavor.SERVICE_FORMATTED.PAGEABLE) || flavor.equals(DocFlavor.SERVICE_FORMATTED.PRINTABLE))) { return false; } + } else if (attr.getCategory() == DialogOwner.class) { + DialogOwner owner = (DialogOwner)attr; + // ID not supported on any dialog type on Unix platforms. + if (owner.getID() != 0) { + return false; + } + // UnixPrintService is not used on Mac, so this is + // always some Unix system that does not have CUPS/IPP + // Which means we always use a Swing dialog and we need + // only check if alwaysOnTop is supported by the toolkit. + if (owner.getOwner() != null) { + return true; + } else { + return Toolkit.getDefaultToolkit().isAlwaysOnTopSupported(); + } + } else if (attr.getCategory() == DialogTypeSelection.class) { + DialogTypeSelection dts = (DialogTypeSelection)attr; + return dts == DialogTypeSelection.COMMON; } return true; } public AttributeSet getUnsupportedAttributes(DocFlavor flavor,
< prev index next >