diff options
Diffstat (limited to 'odk/examples/java/EmbedDocument/EmbeddedObject/EditorFrame.java')
-rwxr-xr-x | odk/examples/java/EmbedDocument/EmbeddedObject/EditorFrame.java | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/odk/examples/java/EmbedDocument/EmbeddedObject/EditorFrame.java b/odk/examples/java/EmbedDocument/EmbeddedObject/EditorFrame.java new file mode 100755 index 000000000000..098555c55e11 --- /dev/null +++ b/odk/examples/java/EmbedDocument/EmbeddedObject/EditorFrame.java @@ -0,0 +1,121 @@ +package org.openoffice.examples.embedding; + +import java.awt.*; +import java.awt.event.*; +import java.awt.image.*; +import javax.swing.JTextArea; +import javax.swing.JFrame; +import java.io.*; +import javax.imageio.ImageIO; + +import org.openoffice.examples.embedding.OwnEmbeddedObject; + +public class EditorFrame extends JFrame +{ + OwnEmbeddedObject m_aEmbObj; + JTextArea m_aTextArea; + BufferedImage m_aBufImage; + + WindowListener m_aCloser = new WindowAdapter() + { + public void windowClosing( WindowEvent e ) + { + // m_aBufImage = m_aTextArea.getGraphicsConfiguration().createCompatibleImage( m_aTextArea.getWidth(), m_aTextArea.getHeight() ); + m_aBufImage = new BufferedImage( m_aTextArea.getWidth(), m_aTextArea.getHeight(), BufferedImage.TYPE_INT_RGB ); + Graphics2D aGr = m_aBufImage.createGraphics(); + m_aTextArea.paintAll( aGr ); + aGr.dispose(); + + hide(); + m_aEmbObj.CloseFrameRequest(); + } + }; + + public EditorFrame( String sName, OwnEmbeddedObject aEmbObj, int nWidth, int nHeight ) + { + super( sName ); + m_aEmbObj = aEmbObj; + addWindowListener( m_aCloser ); + m_aTextArea = new JTextArea( "", nWidth, nHeight ); + + add( "Center", m_aTextArea ); + pack(); + // setResizable( false ); + } + + public String getText() + { + return m_aTextArea.getText(); + } + + public void setText( String aText ) + { + m_aTextArea.setText( aText ); + } + + public Dimension getAppSize() + { + return m_aTextArea.getSize(); + } + + public void setAppSize( Dimension aSize ) + { + Dimension aOwnSize = getSize(); + Dimension aAppSize = m_aTextArea.getSize(); + Dimension aToSet = + new Dimension( (int)( aSize.getWidth() + aOwnSize.getWidth() - aAppSize.getWidth() ), + (int)(aSize.getHeight() + aOwnSize.getHeight() - aAppSize.getHeight() ) ); + + setSize( aToSet ); + validate(); + + // pack(); + } + + public byte[] getReplacementImage() + { + Dimension aDim = m_aTextArea.getSize(); + BufferedImage aBufImage = null; + + if ( m_aBufImage != null ) + aBufImage = m_aBufImage; + else + { + try + { + int nWidth = (int)aDim.getWidth(); + int nHeight = (int)aDim.getHeight(); + aBufImage = new BufferedImage( nWidth, nHeight, BufferedImage.TYPE_INT_RGB ); + Graphics2D aGr = aBufImage.createGraphics(); + aGr.setBackground( Color.WHITE ); + aGr.clearRect( 0, 0, nWidth, nHeight ); + aGr.dispose(); + } + catch ( java.lang.Exception e ) + {} + } + + if ( aBufImage != null ) + { + try + { + File aTmpFile = File.createTempFile( "temp", ".png" ); + ImageIO.write( aBufImage, "png", aTmpFile ); + + int nLen = (int)aTmpFile.length(); + byte[] aResult = new byte[nLen]; + FileInputStream aTmpStream = new FileInputStream( aTmpFile ); + aTmpStream.read( aResult ); + aTmpStream.close(); + aTmpFile.delete(); + + return aResult; + } + catch ( java.lang.Exception e ) + {} + } + + return new byte[0]; + } +} + |