1*ae15d43aSAndrew Rist /************************************************************** 2*ae15d43aSAndrew Rist * 3*ae15d43aSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ae15d43aSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ae15d43aSAndrew Rist * distributed with this work for additional information 6*ae15d43aSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ae15d43aSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ae15d43aSAndrew Rist * "License"); you may not use this file except in compliance 9*ae15d43aSAndrew Rist * with the License. You may obtain a copy of the License at 10*ae15d43aSAndrew Rist * 11*ae15d43aSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ae15d43aSAndrew Rist * 13*ae15d43aSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ae15d43aSAndrew Rist * software distributed under the License is distributed on an 15*ae15d43aSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ae15d43aSAndrew Rist * KIND, either express or implied. See the License for the 17*ae15d43aSAndrew Rist * specific language governing permissions and limitations 18*ae15d43aSAndrew Rist * under the License. 19*ae15d43aSAndrew Rist * 20*ae15d43aSAndrew Rist *************************************************************/ 21*ae15d43aSAndrew Rist 22cdf0e10cSrcweir package org.openoffice.examples.embedding; 23cdf0e10cSrcweir 24cdf0e10cSrcweir import java.awt.*; 25cdf0e10cSrcweir import java.awt.event.*; 26cdf0e10cSrcweir import java.awt.image.*; 27cdf0e10cSrcweir import javax.swing.JTextArea; 28cdf0e10cSrcweir import javax.swing.JFrame; 29cdf0e10cSrcweir import java.io.*; 30cdf0e10cSrcweir import javax.imageio.ImageIO; 31cdf0e10cSrcweir 32cdf0e10cSrcweir import org.openoffice.examples.embedding.OwnEmbeddedObject; 33cdf0e10cSrcweir 34cdf0e10cSrcweir public class EditorFrame extends JFrame 35cdf0e10cSrcweir { 36cdf0e10cSrcweir OwnEmbeddedObject m_aEmbObj; 37cdf0e10cSrcweir JTextArea m_aTextArea; 38cdf0e10cSrcweir BufferedImage m_aBufImage; 39cdf0e10cSrcweir 40cdf0e10cSrcweir WindowListener m_aCloser = new WindowAdapter() 41cdf0e10cSrcweir { 42cdf0e10cSrcweir public void windowClosing( WindowEvent e ) 43cdf0e10cSrcweir { 44cdf0e10cSrcweir // m_aBufImage = m_aTextArea.getGraphicsConfiguration().createCompatibleImage( m_aTextArea.getWidth(), m_aTextArea.getHeight() ); 45cdf0e10cSrcweir m_aBufImage = new BufferedImage( m_aTextArea.getWidth(), m_aTextArea.getHeight(), BufferedImage.TYPE_INT_RGB ); 46cdf0e10cSrcweir Graphics2D aGr = m_aBufImage.createGraphics(); 47cdf0e10cSrcweir m_aTextArea.paintAll( aGr ); 48cdf0e10cSrcweir aGr.dispose(); 49cdf0e10cSrcweir 50cdf0e10cSrcweir hide(); 51cdf0e10cSrcweir m_aEmbObj.CloseFrameRequest(); 52cdf0e10cSrcweir } 53cdf0e10cSrcweir }; 54cdf0e10cSrcweir 55cdf0e10cSrcweir public EditorFrame( String sName, OwnEmbeddedObject aEmbObj, int nWidth, int nHeight ) 56cdf0e10cSrcweir { 57cdf0e10cSrcweir super( sName ); 58cdf0e10cSrcweir m_aEmbObj = aEmbObj; 59cdf0e10cSrcweir addWindowListener( m_aCloser ); 60cdf0e10cSrcweir m_aTextArea = new JTextArea( "", nWidth, nHeight ); 61cdf0e10cSrcweir 62cdf0e10cSrcweir add( "Center", m_aTextArea ); 63cdf0e10cSrcweir pack(); 64cdf0e10cSrcweir // setResizable( false ); 65cdf0e10cSrcweir } 66cdf0e10cSrcweir 67cdf0e10cSrcweir public String getText() 68cdf0e10cSrcweir { 69cdf0e10cSrcweir return m_aTextArea.getText(); 70cdf0e10cSrcweir } 71cdf0e10cSrcweir 72cdf0e10cSrcweir public void setText( String aText ) 73cdf0e10cSrcweir { 74cdf0e10cSrcweir m_aTextArea.setText( aText ); 75cdf0e10cSrcweir } 76cdf0e10cSrcweir 77cdf0e10cSrcweir public Dimension getAppSize() 78cdf0e10cSrcweir { 79cdf0e10cSrcweir return m_aTextArea.getSize(); 80cdf0e10cSrcweir } 81cdf0e10cSrcweir 82cdf0e10cSrcweir public void setAppSize( Dimension aSize ) 83cdf0e10cSrcweir { 84cdf0e10cSrcweir Dimension aOwnSize = getSize(); 85cdf0e10cSrcweir Dimension aAppSize = m_aTextArea.getSize(); 86cdf0e10cSrcweir Dimension aToSet = 87cdf0e10cSrcweir new Dimension( (int)( aSize.getWidth() + aOwnSize.getWidth() - aAppSize.getWidth() ), 88cdf0e10cSrcweir (int)(aSize.getHeight() + aOwnSize.getHeight() - aAppSize.getHeight() ) ); 89cdf0e10cSrcweir 90cdf0e10cSrcweir setSize( aToSet ); 91cdf0e10cSrcweir validate(); 92cdf0e10cSrcweir 93cdf0e10cSrcweir // pack(); 94cdf0e10cSrcweir } 95cdf0e10cSrcweir 96cdf0e10cSrcweir public byte[] getReplacementImage() 97cdf0e10cSrcweir { 98cdf0e10cSrcweir Dimension aDim = m_aTextArea.getSize(); 99cdf0e10cSrcweir BufferedImage aBufImage = null; 100cdf0e10cSrcweir 101cdf0e10cSrcweir if ( m_aBufImage != null ) 102cdf0e10cSrcweir aBufImage = m_aBufImage; 103cdf0e10cSrcweir else 104cdf0e10cSrcweir { 105cdf0e10cSrcweir try 106cdf0e10cSrcweir { 107cdf0e10cSrcweir int nWidth = (int)aDim.getWidth(); 108cdf0e10cSrcweir int nHeight = (int)aDim.getHeight(); 109cdf0e10cSrcweir aBufImage = new BufferedImage( nWidth, nHeight, BufferedImage.TYPE_INT_RGB ); 110cdf0e10cSrcweir Graphics2D aGr = aBufImage.createGraphics(); 111cdf0e10cSrcweir aGr.setBackground( Color.WHITE ); 112cdf0e10cSrcweir aGr.clearRect( 0, 0, nWidth, nHeight ); 113cdf0e10cSrcweir aGr.dispose(); 114cdf0e10cSrcweir } 115cdf0e10cSrcweir catch ( java.lang.Exception e ) 116cdf0e10cSrcweir {} 117cdf0e10cSrcweir } 118cdf0e10cSrcweir 119cdf0e10cSrcweir if ( aBufImage != null ) 120cdf0e10cSrcweir { 121cdf0e10cSrcweir try 122cdf0e10cSrcweir { 123cdf0e10cSrcweir File aTmpFile = File.createTempFile( "temp", ".png" ); 124cdf0e10cSrcweir ImageIO.write( aBufImage, "png", aTmpFile ); 125cdf0e10cSrcweir 126cdf0e10cSrcweir int nLen = (int)aTmpFile.length(); 127cdf0e10cSrcweir byte[] aResult = new byte[nLen]; 128cdf0e10cSrcweir FileInputStream aTmpStream = new FileInputStream( aTmpFile ); 129cdf0e10cSrcweir aTmpStream.read( aResult ); 130cdf0e10cSrcweir aTmpStream.close(); 131cdf0e10cSrcweir aTmpFile.delete(); 132cdf0e10cSrcweir 133cdf0e10cSrcweir return aResult; 134cdf0e10cSrcweir } 135cdf0e10cSrcweir catch ( java.lang.Exception e ) 136cdf0e10cSrcweir {} 137cdf0e10cSrcweir } 138cdf0e10cSrcweir 139cdf0e10cSrcweir return new byte[0]; 140cdf0e10cSrcweir } 141cdf0e10cSrcweir } 142cdf0e10cSrcweir 143