< 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;
@@ -94,15 +90,10 @@
import javax.print.attribute.standard.PrinterIsAcceptingJobs;
import javax.print.attribute.standard.RequestingUserName;
import javax.print.attribute.standard.SheetCollate;
import javax.print.attribute.standard.Sides;
-import sun.print.PageableDoc;
-import sun.print.ServiceDialog;
-import sun.print.SunPrinterJobService;
-import sun.print.SunPageSelection;
-
/**
* A class which rasterizes a printer job.
*
* @author Richard Blanchard
*/
@@ -834,13 +825,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)w);
+ } else {
+ pageDialog = new ServiceDialog(gc, x, y, service,
DocFlavor.SERVICE_FORMATTED.PAGEABLE,
- attributes, (Frame)null);
+ 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 +940,18 @@
*/
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) {
+ attributes.add(w instanceof Frame ? new DialogOwner((Frame)w) :
+ new DialogOwner((Dialog)w));
+ }
} else {
grCfg = GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().getDefaultConfiguration();
}
final GraphicsConfiguration gc = grCfg;
@@ -1012,10 +1018,11 @@
services, services[0],
DocFlavor.SERVICE_FORMATTED.PAGEABLE,
attributes);
}
attributes.remove(PrinterJobWrapper.class);
+ attributes.remove(DialogOwner.class);
if (newService == null) {
return false;
}
< prev index next >