[Imagetools-commit] SF.net SVN: imagetools:[75] trunk/imagetools/src/net/codebuilders/desktop/ imag
Status: Beta
Brought to you by:
cmarcum
From: <cm...@us...> - 2009-07-26 13:09:13
|
Revision: 75 http://imagetools.svn.sourceforge.net/imagetools/?rev=75&view=rev Author: cmarcum Date: 2009-07-26 13:09:04 +0000 (Sun, 26 Jul 2009) Log Message: ----------- ticket:12 - implemented printing Modified Paths: -------------- trunk/imagetools/src/net/codebuilders/desktop/imagetools/ImageToolsView.java Added Paths: ----------- trunk/imagetools/src/net/codebuilders/desktop/imagetools/ComponentPrintable.java Added: trunk/imagetools/src/net/codebuilders/desktop/imagetools/ComponentPrintable.java =================================================================== --- trunk/imagetools/src/net/codebuilders/desktop/imagetools/ComponentPrintable.java (rev 0) +++ trunk/imagetools/src/net/codebuilders/desktop/imagetools/ComponentPrintable.java 2009-07-26 13:09:04 UTC (rev 75) @@ -0,0 +1,55 @@ +/* + * Code from: + * http://www.java2s.com/Code/Java/2D-Graphics-GUI/PrintSwingcomponents.htm + */ + +package net.codebuilders.desktop.imagetools; + +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.print.PageFormat; +import java.awt.print.Printable; +import javax.swing.JComponent; + +/** + * + * @author carl + */ +class ComponentPrintable implements Printable { + + private Component mComponent; + + public ComponentPrintable(Component c) { + mComponent = c; + } + + @Override + public int print(Graphics g, PageFormat pageFormat, int pageIndex) { + if (pageIndex > 0) { + return NO_SUCH_PAGE; + } + Graphics2D g2 = (Graphics2D) g; + g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); + boolean wasBuffered = disableDoubleBuffering(mComponent); + mComponent.paint(g2); + restoreDoubleBuffering(mComponent, wasBuffered); + return PAGE_EXISTS; + } + + private boolean disableDoubleBuffering(Component c) { + if (c instanceof JComponent == false) { + return false; + } + JComponent jc = (JComponent) c; + boolean wasBuffered = jc.isDoubleBuffered(); + jc.setDoubleBuffered(false); + return wasBuffered; + } + + private void restoreDoubleBuffering(Component c, boolean wasBuffered) { + if (c instanceof JComponent) { + ((JComponent) c).setDoubleBuffered(wasBuffered); + } + } +} \ No newline at end of file Modified: trunk/imagetools/src/net/codebuilders/desktop/imagetools/ImageToolsView.java =================================================================== --- trunk/imagetools/src/net/codebuilders/desktop/imagetools/ImageToolsView.java 2009-07-25 14:21:26 UTC (rev 74) +++ trunk/imagetools/src/net/codebuilders/desktop/imagetools/ImageToolsView.java 2009-07-26 13:09:04 UTC (rev 75) @@ -38,6 +38,9 @@ import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; +import java.awt.print.PageFormat; +import java.awt.print.PrinterException; +import java.awt.print.PrinterJob; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -49,6 +52,7 @@ import javax.imageio.ImageWriter; import javax.imageio.stream.FileImageInputStream; import javax.imageio.stream.ImageOutputStream; +import javax.print.attribute.HashPrintRequestAttributeSet; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JDialog; @@ -181,6 +185,7 @@ // listen for ImageTools Model to update - test 2009-03-20 itModel.pcs.addPropertyChangeListener("image", new PropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent propertyChangeEvent) { // DEBUG @@ -1067,8 +1072,36 @@ } @Action - public void filePrint() { - // TODO filePrint method + public void filePrint() throws PrinterException { + + + + ComponentPrintable cp = new ComponentPrintable(imageArea); + + // Graphics g = this.imageArea.getGraphics(); + PageFormat pf = new PageFormat(); + + HashPrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet(); + + PrinterJob job = PrinterJob.getPrinterJob(); + + // pf = job.pageDialog(pf); + + boolean ok = job.printDialog(attributes); + + pf = job.getPageFormat(attributes); + + if (ok) { + try { + job.setPrintable(cp, pf); + job.print(attributes); + } catch (PrinterException ex) { + /* The job did not successfully complete */ + Logger logger = Logger.getLogger(ImageToolsView.class.getName()); + logger.log(Level.SEVERE, null, ex); + showError("The print job did not complete " + ex); + } + } } @Action(enabledProperty = "testActionEnabled", selectedProperty = "testActionSelected") @@ -1317,17 +1350,18 @@ firePropertyChange("cropSelected", old, isCropSelected()); } - @Action(enabledProperty = "colorRedEnabled", selectedProperty = "colorRedSelected") + @Action(enabledProperty = "colorRedEnabled", selectedProperty = "colorRedSelected") public void setColorRed() { - itModel.setColor(java.awt.Color.RED); + itModel.setColor(java.awt.Color.RED); } @Action(enabledProperty = "colorBlueEnabled", selectedProperty = "colorBlueSelected") public void setColorBlue() { - itModel.setColor(java.awt.Color.BLUE); + itModel.setColor(java.awt.Color.BLUE); } private boolean colorBlueEnabled = true; + public boolean isColorBlueEnabled() { return colorBlueEnabled; } @@ -1339,6 +1373,7 @@ } private boolean colorBlueSelected = false; + public boolean isColorBlueSelected() { return colorBlueSelected; } @@ -1350,6 +1385,7 @@ } private boolean colorRedEnabled = true; + public boolean isColorRedEnabled() { return colorRedEnabled; } @@ -1361,6 +1397,7 @@ } private boolean colorRedSelected = false; + public boolean isColorRedSelected() { return colorRedSelected; } @@ -1371,12 +1408,13 @@ firePropertyChange("colorRedSelected", old, isColorRedSelected()); } - @Action(enabledProperty = "fontSerifEnabled", selectedProperty = "fontSerifSelected") + @Action(enabledProperty = "fontSerifEnabled", selectedProperty = "fontSerifSelected") public void setFontSerif() { itModel.setFontName(java.awt.Font.SERIF); } private boolean fontSerifEnabled = true; + public boolean isFontSerifEnabled() { return fontSerifEnabled; } @@ -1388,6 +1426,7 @@ } private boolean fontSerifSelected = false; + public boolean isFontSerifSelected() { return fontSerifSelected; } @@ -1398,12 +1437,13 @@ firePropertyChange("fontSerifSelected", old, isFontSerifSelected()); } - @Action(enabledProperty = "fontSansSerifEnabled", selectedProperty = "fontSansSerifSelected") + @Action(enabledProperty = "fontSansSerifEnabled", selectedProperty = "fontSansSerifSelected") public void setFontSansSerif() { itModel.setFontName(java.awt.Font.SANS_SERIF); } private boolean fontSansSerifEnabled = true; + public boolean isFontSansSerifEnabled() { return fontSansSerifEnabled; } @@ -1415,6 +1455,7 @@ } private boolean fontSansSerifSelected = false; + public boolean isFontSansSerifSelected() { return fontSansSerifSelected; } @@ -1424,7 +1465,7 @@ this.fontSansSerifSelected = b; firePropertyChange("fontSansSerifSelected", old, isFontSansSerifSelected()); } - + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton captureButton; private javax.swing.JButton closeButton; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |