< 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 >