< prev index next >

src/java.desktop/windows/classes/sun/print/Win32PrintService.java

Print this page

        

@@ -23,10 +23,12 @@
  * questions.
  */
 
 package sun.print;
 
+import java.awt.GraphicsEnvironment;
+import java.awt.Toolkit;
 import java.awt.Window;
 import java.awt.print.PrinterJob;
 import java.io.File;
 import java.net.URI;
 import java.net.URISyntaxException;

@@ -52,10 +54,12 @@
 import javax.print.attribute.standard.RequestingUserName;
 import javax.print.attribute.standard.Chromaticity;
 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.MediaSizeName;
 import javax.print.attribute.standard.MediaSize;
 import javax.print.attribute.standard.MediaTray;

@@ -1040,10 +1044,14 @@
         PrinterResolution[] supportedRes = getPrintResolutions();
         if ((supportedRes!=null) && (supportedRes.length>0)) {
             categList.add(PrinterResolution.class);
         }
 
+        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)

@@ -1583,10 +1591,27 @@
             boolean isColorSup = ((caps & DEVCAP_COLOR) != 0);
             if  ((!isColorSup && (attr == ColorSupported.SUPPORTED)) ||
                 (isColorSup && (attr == ColorSupported.NOT_SUPPORTED))) {
                 return false;
             }
+        } else if (category == DialogTypeSelection.class) {
+            return true; // isHeadless was checked by category support
+        } else if (category == DialogOwner.class) {
+            DialogOwner owner = (DialogOwner)attr;
+            DialogTypeSelection dts = (attributes == null) ? null :
+                (DialogTypeSelection)attributes.get(DialogTypeSelection.class);
+            if (dts == DialogTypeSelection.NATIVE) {
+                return owner.getID() != 0;
+            } else {
+               if (owner.getID() != 0) {
+                  return false;
+               } else if (owner.getOwner() != null) {
+                   return true;
+               } else {
+                   return Toolkit.getDefaultToolkit().isAlwaysOnTopSupported();
+               }
+            }
         }
         return true;
     }
 
     public AttributeSet getUnsupportedAttributes(DocFlavor flavor,
< prev index next >