< prev index next >

src/java.desktop/share/classes/sun/print/RasterPrinterJob.java

Print this page

        

@@ -28,20 +28,18 @@
 import java.io.FilePermission;
 
 import java.awt.Color;
 import java.awt.Dialog;
 import java.awt.Frame;
-import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.GraphicsConfiguration;
 import java.awt.GraphicsEnvironment;
 import java.awt.HeadlessException;
 import java.awt.KeyboardFocusManager;
 import java.awt.Rectangle;
 import java.awt.Shape;
 import java.awt.geom.AffineTransform;
-import java.awt.geom.Area;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 import java.awt.print.Book;
 import java.awt.print.Pageable;

@@ -53,11 +51,10 @@
 import java.awt.print.PrinterJob;
 import java.awt.Window;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Enumeration;
 import java.util.Locale;
 import sun.awt.image.ByteInterleavedRaster;
 
 import javax.print.Doc;
 import javax.print.DocFlavor;

@@ -72,11 +69,10 @@
 import javax.print.attribute.AttributeSet;
 import javax.print.attribute.HashPrintRequestAttributeSet;
 import javax.print.attribute.PrintRequestAttributeSet;
 import javax.print.attribute.ResolutionSyntax;
 import javax.print.attribute.Size2DSyntax;
-import javax.print.attribute.standard.Chromaticity;
 import javax.print.attribute.standard.Copies;
 import javax.print.attribute.standard.Destination;
 import javax.print.attribute.standard.DialogTypeSelection;
 import javax.print.attribute.standard.Fidelity;
 import javax.print.attribute.standard.JobName;

@@ -834,13 +830,20 @@
         // we position the dialog a little beyond the upper-left corner of the window
         // which is consistent with the NATIVE page dialog
         Rectangle gcBounds = gc.getBounds();
         int x = gcBounds.x+50;
         int y = gcBounds.y+50;
-        ServiceDialog pageDialog = new ServiceDialog(gc, x, y, service,
+        ServiceDialog pageDialog;
+        if (w instanceof Frame) {
+            pageDialog = new ServiceDialog(gc, x, y, service,
                                        DocFlavor.SERVICE_FORMATTED.PAGEABLE,
-                                       attributes, (Frame)null);
+                                       attributes, (Frame)w);
+        } else {
+            pageDialog = new ServiceDialog(gc, x, y, service,
+                                       DocFlavor.SERVICE_FORMATTED.PAGEABLE,
+                                       attributes, (Dialog)w);
+        }
         Rectangle dlgBounds = pageDialog.getBounds();
 
         // if portion of dialog is not within the gc boundary
         if (!gcBounds.contains(dlgBounds)) {
             // check if dialog exceed window bounds at left or bottom

@@ -942,10 +945,21 @@
          */
         GraphicsConfiguration grCfg = null;
         Window w = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
         if (w != null) {
             grCfg = w.getGraphicsConfiguration();
+            /* Add DialogOwner attribute to set the owner of this print dialog
+             * only if it is not set already 
+             * (it might be set in java.awt.PrintJob.printDialog)
+             */
+            if (attributes.get(DialogOwner.class) == null) {
+                if (w instanceof Frame) {
+                    attributes.add(new DialogOwner((Frame)w));
+                } else if (w instanceof Dialog) {
+                    attributes.add(new DialogOwner((Dialog)w));
+                }
+            }            
         } else {
             grCfg = GraphicsEnvironment.getLocalGraphicsEnvironment().
                         getDefaultScreenDevice().getDefaultConfiguration();
         }
         final GraphicsConfiguration gc = grCfg;
< prev index next >