Lines 11-16
Link Here
|
11 |
|
11 |
|
12 |
package org.eclipse.gmf.runtime.diagram.ui.printing.render.internal; |
12 |
package org.eclipse.gmf.runtime.diagram.ui.printing.render.internal; |
13 |
|
13 |
|
|
|
14 |
import java.awt.BasicStroke; |
14 |
import java.awt.print.PageFormat; |
15 |
import java.awt.print.PageFormat; |
15 |
import java.awt.print.PrinterException; |
16 |
import java.awt.print.PrinterException; |
16 |
import java.util.Iterator; |
17 |
import java.util.Iterator; |
Lines 29-34
Link Here
|
29 |
import javax.print.attribute.HashPrintRequestAttributeSet; |
30 |
import javax.print.attribute.HashPrintRequestAttributeSet; |
30 |
import javax.print.attribute.HashPrintServiceAttributeSet; |
31 |
import javax.print.attribute.HashPrintServiceAttributeSet; |
31 |
import javax.print.attribute.PrintRequestAttributeSet; |
32 |
import javax.print.attribute.PrintRequestAttributeSet; |
|
|
33 |
import javax.print.attribute.standard.Chromaticity; |
32 |
import javax.print.attribute.standard.Copies; |
34 |
import javax.print.attribute.standard.Copies; |
33 |
import javax.print.attribute.standard.JobName; |
35 |
import javax.print.attribute.standard.JobName; |
34 |
import javax.print.attribute.standard.Media; |
36 |
import javax.print.attribute.standard.Media; |
Lines 36-43
Link Here
|
36 |
import javax.print.attribute.standard.MediaSize; |
38 |
import javax.print.attribute.standard.MediaSize; |
37 |
import javax.print.attribute.standard.MediaSizeName; |
39 |
import javax.print.attribute.standard.MediaSizeName; |
38 |
import javax.print.attribute.standard.OrientationRequested; |
40 |
import javax.print.attribute.standard.OrientationRequested; |
|
|
41 |
import javax.print.attribute.standard.PrintQuality; |
39 |
import javax.print.attribute.standard.PrinterName; |
42 |
import javax.print.attribute.standard.PrinterName; |
40 |
import javax.print.attribute.standard.SheetCollate; |
43 |
import javax.print.attribute.standard.SheetCollate; |
|
|
44 |
import javax.print.attribute.standard.Sides; |
41 |
|
45 |
|
42 |
import org.eclipse.draw2d.Graphics; |
46 |
import org.eclipse.draw2d.Graphics; |
43 |
import org.eclipse.draw2d.geometry.Rectangle; |
47 |
import org.eclipse.draw2d.geometry.Rectangle; |
Lines 62-75
Link Here
|
62 |
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.l10n.DiagramUIPrintingMessages; |
66 |
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.l10n.DiagramUIPrintingMessages; |
63 |
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.DiagramPrinter; |
67 |
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.DiagramPrinter; |
64 |
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.PrintHelperUtil; |
68 |
import org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.PrintHelperUtil; |
|
|
69 |
import org.eclipse.gmf.runtime.diagram.ui.printing.render.model.PrintOptions; |
70 |
import org.eclipse.gmf.runtime.diagram.ui.printing.render.util.PrintHelper; |
65 |
import org.eclipse.gmf.runtime.diagram.ui.printing.util.DiagramPrinterUtil; |
71 |
import org.eclipse.gmf.runtime.diagram.ui.printing.util.DiagramPrinterUtil; |
66 |
import org.eclipse.gmf.runtime.diagram.ui.util.DiagramEditorUtil; |
72 |
import org.eclipse.gmf.runtime.diagram.ui.util.DiagramEditorUtil; |
67 |
import org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.MapModeGraphics; |
73 |
import org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.MapModeGraphics; |
|
|
74 |
import org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.ScaledGraphics; |
68 |
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; |
75 |
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; |
69 |
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.MapModeUtil; |
76 |
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.MapModeUtil; |
70 |
import org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.graphics.GraphicsToGraphics2DAdaptor; |
77 |
import org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.graphics.GraphicsToGraphics2DAdaptor; |
71 |
import org.eclipse.gmf.runtime.draw2d.ui.render.internal.graphics.RenderedMapModeGraphics; |
78 |
import org.eclipse.gmf.runtime.draw2d.ui.render.internal.graphics.RenderedMapModeGraphics; |
72 |
import org.eclipse.gmf.runtime.draw2d.ui.render.internal.graphics.RenderedScaledGraphics; |
|
|
73 |
import org.eclipse.gmf.runtime.notation.Diagram; |
79 |
import org.eclipse.gmf.runtime.notation.Diagram; |
74 |
import org.eclipse.jface.dialogs.MessageDialog; |
80 |
import org.eclipse.jface.dialogs.MessageDialog; |
75 |
import org.eclipse.jface.preference.IPreferenceStore; |
81 |
import org.eclipse.jface.preference.IPreferenceStore; |
Lines 90-102
Link Here
|
90 |
*/ |
96 |
*/ |
91 |
public class JPSDiagramPrinter extends DiagramPrinter implements |
97 |
public class JPSDiagramPrinter extends DiagramPrinter implements |
92 |
java.awt.print.Printable { |
98 |
java.awt.print.Printable { |
93 |
|
99 |
|
94 |
|
100 |
// A constant that takes into account screen display DPI and the graphic DPI |
|
|
101 |
// 72.0 DPI is an AWT constant @see java.awt.Graphics2D |
102 |
private static double AWT_DPI_CONST = 72.0; |
103 |
|
104 |
// The print service used during printing. |
95 |
private PrintService printService; |
105 |
private PrintService printService; |
|
|
106 |
|
107 |
// Page information that is collected up front and used during the async printing calls. |
96 |
private PageData[] pages; |
108 |
private PageData[] pages; |
|
|
109 |
|
110 |
// The print helper contains page information. |
97 |
private IPrintHelper printHelper; |
111 |
private IPrintHelper printHelper; |
98 |
|
112 |
|
99 |
|
|
|
100 |
public JPSDiagramPrinter(PreferencesHint preferencesHint, IMapMode mm) { |
113 |
public JPSDiagramPrinter(PreferencesHint preferencesHint, IMapMode mm) { |
101 |
super(preferencesHint, mm); |
114 |
super(preferencesHint, mm); |
102 |
this.preferencesHint = preferencesHint; |
115 |
this.preferencesHint = preferencesHint; |
Lines 347-369
Link Here
|
347 |
return java.awt.print.Printable.NO_SUCH_PAGE; |
360 |
return java.awt.print.Printable.NO_SUCH_PAGE; |
348 |
} |
361 |
} |
349 |
|
362 |
|
350 |
try { |
363 |
try { |
351 |
swtGraphics = new GraphicsToGraphics2DAdaptor( |
364 |
swtGraphics = new GraphicsToGraphics2DAdaptor( |
352 |
(java.awt.Graphics2D) printGraphics, new Rectangle(0, 0, |
365 |
(java.awt.Graphics2D) printGraphics, new Rectangle(0, 0, |
353 |
(int) pageFormat.getWidth(), (int) pageFormat |
366 |
(int) pageFormat.getWidth(), (int) pageFormat |
354 |
.getHeight())); |
367 |
.getHeight())) { |
|
|
368 |
/* |
369 |
* (non-Javadoc) |
370 |
* @see org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.graphics.GraphicsToGraphics2DAdaptor#setLineWidth(int) |
371 |
*/ |
372 |
public void setLineWidth(int width) { |
373 |
super.setLineWidth(width); |
374 |
|
375 |
BasicStroke scaledStroke = getStroke(); |
376 |
// |
377 |
// Make a special case for line thickness to take the printer |
378 |
// resolution into account. |
379 |
// |
380 |
scaledStroke = new BasicStroke( |
381 |
(float) (width * AWT_DPI_CONST / 100), |
382 |
scaledStroke.getEndCap(), |
383 |
scaledStroke.getLineJoin(), |
384 |
scaledStroke.getMiterLimit(), |
385 |
scaledStroke.getDashArray(), 0); |
355 |
|
386 |
|
|
|
387 |
getGraphics2D().setStroke(scaledStroke); |
388 |
} |
389 |
}; |
390 |
|
356 |
graphics = createMapModeGraphics(createPrinterGraphics(swtGraphics)); |
391 |
graphics = createMapModeGraphics(createPrinterGraphics(swtGraphics)); |
357 |
// |
392 |
graphics.scale(AWT_DPI_CONST / display_dpi.x); |
358 |
// Take into account screen display DPI and the graphic DPI |
|
|
359 |
// 72.0 DPI is an AWT constant @see java.awt.Graphics2D |
360 |
// |
361 |
graphics.scale(72.0 / display_dpi.x); |
362 |
|
363 |
drawPage(pages[pageIndex]); |
393 |
drawPage(pages[pageIndex]); |
364 |
} catch (Exception e) { |
394 |
|
365 |
System.out.println(e); |
395 |
} finally { |
366 |
} finally { |
|
|
367 |
dispose(); |
396 |
dispose(); |
368 |
} |
397 |
} |
369 |
|
398 |
|
Lines 378-389
Link Here
|
378 |
return new RenderedMapModeGraphics(theGraphics, getMapMode()); |
407 |
return new RenderedMapModeGraphics(theGraphics, getMapMode()); |
379 |
} |
408 |
} |
380 |
|
409 |
|
381 |
|
410 |
protected ScaledGraphics createPrinterGraphics(Graphics theGraphics) { |
382 |
protected RenderedScaledGraphics createPrinterGraphics(Graphics theGraphics) { |
411 |
return new ScaledGraphics(theGraphics); |
383 |
return new RenderedScaledGraphics(theGraphics); |
|
|
384 |
} |
412 |
} |
385 |
|
413 |
|
386 |
|
|
|
387 |
/** |
414 |
/** |
388 |
* Set printing options in a format that is suitable for the Java print |
415 |
* Set printing options in a format that is suitable for the Java print |
389 |
* service |
416 |
* service |
Lines 398-403
Link Here
|
398 |
String jobName, |
425 |
String jobName, |
399 |
IPreferenceStore fPreferences) { |
426 |
IPreferenceStore fPreferences) { |
400 |
|
427 |
|
|
|
428 |
PrintOptions advancedOptions = ((PrintHelper) (printHelper)).getPrintOptions(); |
429 |
|
401 |
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet(); |
430 |
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet(); |
402 |
|
431 |
|
403 |
if (fPreferences |
432 |
if (fPreferences |
Lines 428-441
Link Here
|
428 |
printRequestAttributeSet.add(MediaSizeName.ISO_B5); |
457 |
printRequestAttributeSet.add(MediaSizeName.ISO_B5); |
429 |
} |
458 |
} |
430 |
|
459 |
|
|
|
460 |
if (advancedOptions.isQualityLow()) { |
461 |
printRequestAttributeSet.add(PrintQuality.DRAFT); |
462 |
} else if (advancedOptions.isQualityMed()) { |
463 |
printRequestAttributeSet.add(PrintQuality.NORMAL); |
464 |
} else if (advancedOptions.isQualityHigh()) { |
465 |
printRequestAttributeSet.add(PrintQuality.HIGH); |
466 |
} |
467 |
if (advancedOptions.isSideDuplex()) { |
468 |
printRequestAttributeSet.add(Sides.DUPLEX); |
469 |
} else if (advancedOptions.isSideOneSided()) { |
470 |
printRequestAttributeSet.add(Sides.ONE_SIDED); |
471 |
} else if (advancedOptions.isSideTumble()) { |
472 |
printRequestAttributeSet.add(Sides.TUMBLE); |
473 |
} |
474 |
|
475 |
if (advancedOptions.isChromaticityColor()) { |
476 |
printRequestAttributeSet.add(Chromaticity.COLOR); |
477 |
} else { |
478 |
printRequestAttributeSet.add(Chromaticity.MONOCHROME); |
479 |
} |
480 |
|
431 |
MediaSizeName media = (MediaSizeName) printRequestAttributeSet |
481 |
MediaSizeName media = (MediaSizeName) printRequestAttributeSet |
432 |
.get(Media.class); |
482 |
.get(Media.class); |
433 |
MediaSize mediaSize = MediaSize.getMediaSizeForName(media); |
483 |
MediaSize mediaSize = MediaSize.getMediaSizeForName(media); |
434 |
|
484 |
|
435 |
printRequestAttributeSet.add(new MediaPrintableArea((float) 0.0, |
485 |
printRequestAttributeSet.add(new MediaPrintableArea((float) 0.0, |
436 |
(float) 0.0, (mediaSize.getX(MediaSize.INCH)), (mediaSize |
486 |
(float) 0.0, (mediaSize.getX(MediaSize.INCH)), (mediaSize |
437 |
.getY(MediaSize.INCH)), MediaPrintableArea.INCH)); |
487 |
.getY(MediaSize.INCH)), MediaPrintableArea.INCH)); |
438 |
|
488 |
|
439 |
printRequestAttributeSet.add(new Copies(printHelper |
489 |
printRequestAttributeSet.add(new Copies(printHelper |
440 |
.getDlgNumberOfCopies())); |
490 |
.getDlgNumberOfCopies())); |
441 |
|
491 |
|
Lines 445-450
Link Here
|
445 |
printRequestAttributeSet.add(SheetCollate.UNCOLLATED); |
495 |
printRequestAttributeSet.add(SheetCollate.UNCOLLATED); |
446 |
} |
496 |
} |
447 |
|
497 |
|
|
|
498 |
String userJobName = advancedOptions.getJobName(); |
499 |
if (userJobName != null && userJobName.length() > 0) { |
500 |
jobName = userJobName; |
501 |
} |
448 |
printRequestAttributeSet.add(new JobName(jobName, Locale.getDefault())); |
502 |
printRequestAttributeSet.add(new JobName(jobName, Locale.getDefault())); |
449 |
|
503 |
|
450 |
return printRequestAttributeSet; |
504 |
return printRequestAttributeSet; |