embeddedobj/test/Container1/BitmapPainter.java | 281 ---- embeddedobj/test/Container1/EmbedContApp.java | 1681 ------------------------- embeddedobj/test/Container1/PaintThread.java | 141 -- embeddedobj/test/Container1/WindowHelper.java | 155 -- 4 files changed, 2258 deletions(-)
New commits: commit 117d31400c946538d075e85cbb4251dc9487a0a2 Author: Manish Bera <mbera.de...@gmail.com> AuthorDate: Thu Dec 26 10:53:04 2024 +0530 Commit: Ilmari Lauhakangas <ilmari.lauhakan...@libreoffice.org> CommitDate: Thu Dec 26 12:14:07 2024 +0100 tdf#162563 Remove Java applet code and references from embeddedobj Change-Id: If3e7ab1cb45c988f3f39fc2f73377c77dc9972f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178873 Tested-by: Jenkins Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakan...@libreoffice.org> diff --git a/embeddedobj/test/Container1/BitmapPainter.java b/embeddedobj/test/Container1/BitmapPainter.java deleted file mode 100644 index 759536d5f6b0..000000000000 --- a/embeddedobj/test/Container1/BitmapPainter.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -package embeddedobj.test; - -import java.awt.*; -import java.applet.*; -import java.awt.event.*; -import java.net.*; -import java.io.*; - -import com.sun.star.awt.XBitmap; -import com.sun.star.awt.XDevice; -import com.sun.star.awt.XDisplayBitmap; -import com.sun.star.awt.XGraphics; -import com.sun.star.awt.XWindow; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.awt.XToolkit; -import com.sun.star.awt.XSystemChildFactory; -import com.sun.star.awt.WindowDescriptor; -import com.sun.star.awt.WindowClass; -import com.sun.star.awt.WindowAttribute; - -import com.sun.star.awt.XPaintListener; -import com.sun.star.awt.PaintEvent; -import com.sun.star.awt.XMouseListener; -import com.sun.star.awt.XMouseMotionListener; -import com.sun.star.awt.MouseEvent; -import com.sun.star.awt.Point; - -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.Any; -import com.sun.star.lang.XMultiServiceFactory; - -import com.sun.star.task.XJob; -import com.sun.star.beans.NamedValue; - - -class BitmapPainter implements XPaintListener, XMouseListener, XMouseMotionListener, XJob -{ - private XWindow m_xWindow; - private XBitmap m_xBitmap; - - private com.sun.star.awt.Rectangle m_aDrawRect; - - private Object m_oImageLock; - - private PaintThread m_aPaintThread; - - private boolean m_bFree = true; - - private boolean m_bProceedWithPainting = true; - -// Methods - - public BitmapPainter( XJob xJob, XWindow xWindow, XBitmap xBitmap, com.sun.star.awt.Rectangle aDrawRect ) - { - if ( xJob == null ) - { - System.out.println( "No mainthreadexecutor is provided to BitmapPainter on init!" ); - throw new com.sun.star.uno.RuntimeException(); - } - - if ( xWindow == null ) - { - System.out.println( "No window is provided to BitmapPainter on init!" ); - throw new com.sun.star.uno.RuntimeException(); - } - - m_xWindow = xWindow; - m_xBitmap = xBitmap; - - m_aDrawRect = aDrawRect; - - m_oImageLock = new Object(); - - m_aPaintThread = new PaintThread( m_xWindow ); - m_aPaintThread.start(); - - m_xWindow.addPaintListener( this ); - m_xWindow.addMouseListener( this ); - m_xWindow.addMouseMotionListener( this ); - } - - - public void disconnectListener() - { - m_aPaintThread.disposeThread(); - m_xWindow.removePaintListener( this ); - m_xWindow.removeMouseListener( this ); - m_xWindow.removeMouseMotionListener( this ); - } - - - public void setBitmap( XBitmap xBitmap ) - { - synchronized( m_oImageLock ) - { - m_xBitmap = xBitmap; - } - } - - - public void setPos( com.sun.star.awt.Point aPoint ) - { - synchronized( m_oImageLock ) - { - m_aDrawRect.X = aPoint.X; - m_aDrawRect.Y = aPoint.Y; - } - } - - - public void setRect( com.sun.star.awt.Rectangle aRect ) - { - synchronized( m_oImageLock ) - { - m_aDrawRect = aRect; - } - } - - - public void setSize( com.sun.star.awt.Size aSize ) - { - synchronized( m_oImageLock ) - { - m_aDrawRect.Width = aSize.Width; - m_aDrawRect.Height = aSize.Height; - } - } - - - public void stopPainting() - { - m_bProceedWithPainting = false; - } - - - public void startPainting() - { - m_bProceedWithPainting = true; - } - - // XPaintListener - - public void windowPaint( PaintEvent e ) - { - if ( !m_bProceedWithPainting ) - return; - - XBitmap xBitmap = null; - com.sun.star.awt.Rectangle aRect = null; - - synchronized( m_oImageLock ) - { - xBitmap = m_xBitmap; - aRect = m_aDrawRect; - } - - m_aPaintThread.setPaintRequest( xBitmap, aRect, e.UpdateRect ); - - System.out.println( "VCL window paint event!" ); - } - - // XMouseListener - - public void mousePressed( MouseEvent e ) - { - } - - - public void mouseReleased( MouseEvent e ) - { - } - - - public void mouseEntered( MouseEvent e ) - { - } - - - public void mouseExited( MouseEvent e ) - { - } - - // XMouseMotionListener - - public void mouseDragged( MouseEvent e ) - { - // TODO: react to resizing of object bitmap - // if the object is inplace active the object must control resizing - } - - - public void mouseMoved( MouseEvent e ) - { - - } - - // XEventListener - - public void disposing( com.sun.star.lang.EventObject e ) - { - // do nothing, the window can die only when the application is closed - } - - // XJob - - public Object execute( NamedValue[] pValues ) - { -/* - // means request for painting - - XBitmap xBitmap = null; - com.sun.star.awt.Rectangle aRect = null; - - synchronized( m_oImageLock ) - { - xBitmap = m_xBitmap; - aRect = m_aDrawRect; - } - - System.out.println( "The bitmap is going to be painted!" ); - - try { - XDevice xDevice = (XDevice)UnoRuntime.queryInterface( XDevice.class, m_xWindow ); - if ( xDevice != null ) - { - System.out.println( "Step1" ); - XGraphics xGraphics = xDevice.createGraphics(); - if ( xBitmap != null ) - { - System.out.println( "Step2" ); - XDisplayBitmap xDisplayBitmap = xDevice.createDisplayBitmap( xBitmap ); - - com.sun.star.awt.Size aSize = xBitmap.getSize(); - xGraphics.draw( xDisplayBitmap, 0, 0, aSize.Width, aSize.Height, - aRect.X, aRect.Y, aRect.Width, aRect.Height ); - } - - System.out.println( "Step3" ); - xGraphics.drawRect( aRect.X - 1, aRect.Y - 1, aRect.Width + 2, aRect.Height + 2 ); - - // draw resize squares - System.out.println( "Step4" ); - xGraphics.drawRect( aRect.X - 2, aRect.Y - 2, 4, 4 ); - xGraphics.drawRect( aRect.X + aRect.Width - 2, aRect.Y - 2, 4, 4 ); - xGraphics.drawRect( aRect.X - 2, aRect.Y + aRect.Height - 2, 4, 4 ); - xGraphics.drawRect( aRect.X + aRect.Width - 2, aRect.Y + aRect.Height - 2, 4, 4 ); - - System.out.println( "Step5" ); - - System.out.println( "The bitmap is painted by BitmapPainter!" ); - } - } - catch ( Exception e ) - { - } - - m_bFree = true; - -*/ - return Any.VOID; - } - -}; - diff --git a/embeddedobj/test/Container1/EmbedContApp.java b/embeddedobj/test/Container1/EmbedContApp.java deleted file mode 100644 index 14f5fa83e1d5..000000000000 --- a/embeddedobj/test/Container1/EmbedContApp.java +++ /dev/null @@ -1,1681 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -package embeddedobj.test; - -import java.awt.*; -import java.applet.*; -import java.awt.event.*; -import java.net.*; -import java.io.*; -import java.util.Vector; - -import javax.swing.JOptionPane; -import javax.swing.Timer; - -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.lang.XSingleServiceFactory; - -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XInterface; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.Type; -import com.sun.star.uno.Any; - -import com.sun.star.lang.XComponent; - -import com.sun.star.util.XCloseable; -import com.sun.star.util.XURLTransformer; -import com.sun.star.util.URL; - -import com.sun.star.beans.PropertyValue; -import com.sun.star.beans.NamedValue; - -import com.sun.star.datatransfer.DataFlavor; -import com.sun.star.datatransfer.XTransferable; - -import com.sun.star.container.XNameAccess; - -import com.sun.star.io.XStream; -import com.sun.star.io.XInputStream; -import com.sun.star.io.XOutputStream; -import com.sun.star.io.XTruncate; - -import com.sun.star.awt.XWindow; -import com.sun.star.awt.XBitmap; - -import com.sun.star.task.XJob; - -import com.sun.star.embed.*; - - -class ActionObject -{ - public byte m_nID; - public String m_sParam; - - public ActionObject() - { - m_nID = 0; - m_sParam = null; - } - - public ActionObject( byte nID ) - { - m_nID = nID; - m_sParam = null; - } - - public ActionObject( byte nID, String sParam ) - { - m_nID = nID; - m_sParam = sParam; - } - - public ActionObject( ActionObject aObject ) - { - m_nID = aObject.m_nID; - m_sParam = aObject.m_sParam; - } -}; - -public class EmbedContApp extends Applet - implements MouseListener, XEmbeddedClient, ActionListener, XJob, XInplaceClient, XWindowSupplier -{ - private XMultiServiceFactory m_xServiceFactory; - - private final boolean m_bStoreVisRepl = false; - - private XJob m_xMainThreadExecutor; - private NamedValue[] m_pValuesForExecutor; - - private XEmbeddedObject m_xEmbedObj; - private XStorage m_xStorage; - private float m_nXScaling; - private float m_nYScaling; - private float m_nXPixelSize; - private float m_nYPixelSize; - - private Frame m_aFrame; - private Menu m_aFileMenu; - private Menu m_aObjectMenu; - private Toolkit m_aToolkit; - - private Image m_aImage; - private Object m_oImageLock; - - private boolean m_bOwnFile = false; - - private boolean m_bLinkObj = false; - private String m_aLinkURI; - - private Object m_oActionsNumberLock; - - private Timer m_aTimer; - private boolean m_bDestroyed = false; - - private Object m_oInHandlerLock; - private boolean m_bInHandler = false; - - private XURLTransformer m_xTransformer; - - private NativeView m_aNativeView; - private XWindow m_xVCLWindow; - - private XBitmap m_xBitmap; - private BitmapPainter m_aBitmapPainter; - -// Constants - private final byte DESTROY = 1; - private final byte ACTIVATE_OUTPLACE = 2; - private final byte NEW_DOCUMENT = 3; - private final byte SAVE_AS = 4; - private final byte OPEN_FILE = 5; - private final byte SAVE = 6; - private final byte NEW_OBJECT = 7; - private final byte OBJECT_FROM_FILE = 8; - private final byte LINK_FROM_FILE = 9; - private final byte CONVERT_LINK_TO_OBJECT = 10; - private final byte ACTIVATE_INPLACE = 11; - private final byte DEACTIVATE = 12; - -// Methods - public EmbedContApp( Frame aFrame, XMultiServiceFactory xServiceFactory ) - { - m_aFrame = aFrame; - m_xServiceFactory = xServiceFactory; - } - - public void init() - { - resize( 800, 600 ); - setBackground( Color.gray ); - - m_aToolkit = Toolkit.getDefaultToolkit(); - - try { - Object oTransformer = m_xServiceFactory.createInstance( "com.sun.star.util.URLTransformer" ); - m_xTransformer = (XURLTransformer)UnoRuntime.queryInterface( XURLTransformer.class, oTransformer ); - } catch( Exception e ) { System.exit( 0 ); } - - m_oActionsNumberLock = new Object(); - m_aActionsList = new ArrayList(); - - m_oInHandlerLock = new Object(); - m_oImageLock = new Object(); - - try { - Object oJob = m_xServiceFactory.createInstance( "com.sun.star.comp.thread.MainThreadExecutor" ); - m_xMainThreadExecutor = (XJob)UnoRuntime.queryInterface( XJob.class, oJob ); - } catch( Exception e ) {} - - if ( m_xMainThreadExecutor == null ) - { - System.out.println( "Can't create MainThreadExecutor! The application is unusable!" ); - System.exit( 0 ); - } - - m_nXScaling = 1; - m_nYScaling = 1; - m_nXPixelSize = 1; - m_nYPixelSize = 1; - - m_pValuesForExecutor = new NamedValue[1]; - m_pValuesForExecutor[0] = new NamedValue( "JobToExecute", (Object)this ); - - m_aTimer = new Timer( 100, this ); - m_aTimer.start(); - - // Get a menu bar. - MenuBar aMenuBar = m_aFrame.getMenuBar(); - if( aMenuBar == null ) - { - aMenuBar = new MenuBar(); - m_aFrame.setMenuBar( aMenuBar ); - } - - // Create menus for the menu bar. - - // File menu - m_aFileMenu = new Menu( "File", true ); - aMenuBar.add( m_aFileMenu ); - - MenuItem aItem = new NewMenuItem(); - m_aFileMenu.add( aItem ); - - aItem = new OpenFileMenuItem(); - m_aFileMenu.add( aItem ); - - aItem = new SaveMenuItem(); - m_aFileMenu.add( aItem ); - - aItem = new SaveAsMenuItem(); - m_aFileMenu.add( aItem ); - - // Object menu - m_aObjectMenu = new Menu( "Object", true ); - aMenuBar.add( m_aObjectMenu ); - - aItem = new NewObjectMenuItem(); - m_aObjectMenu.add( aItem ); - - aItem = new LoadObjectMenuItem(); - m_aObjectMenu.add( aItem ); - - aItem = new LinkObjectMenuItem(); - m_aObjectMenu.add( aItem ); - - aItem = new ConvertLinkToEmbedMenuItem(); - m_aObjectMenu.add( aItem ); - - // Activation menu - m_aObjectMenu = new Menu( "Activation", true ); - aMenuBar.add( m_aObjectMenu ); - - aItem = new ActivateOutplaceMenuItem(); - m_aObjectMenu.add( aItem ); - - aItem = new ActivateInplaceMenuItem(); - m_aObjectMenu.add( aItem ); - - aItem = new DeactivateMenuItem(); - m_aObjectMenu.add( aItem ); - - m_aNativeView = new NativeView(); - m_aNativeView.resize( 800, 600 ); - this.add( m_aNativeView ); - - - public void actionPerformed( ActionEvent evt ) - { - synchronized( m_oInHandlerLock ) - { - if ( m_bInHandler ) - return; - m_bInHandler = true; - } - - synchronized( m_oActionsNumberLock ) - { - if ( m_aActionsList.size() > 0 ) - { - try { - m_xMainThreadExecutor.execute( m_pValuesForExecutor ); - } - catch( Exception e ) - { - System.out.println( "Exception in actionPerformed() : " + e ); - } - } - else - { - synchronized( m_oInHandlerLock ) - { - m_bInHandler = false; - } - } - } - } - - // XWindowSupplier - public XWindow getWindow() - { - return m_xVCLWindow; - } - - // XEmbeddedClient - public void saveObject() - throws com.sun.star.uno.Exception - { - if ( m_xEmbedObj != null ) - { - try { - XEmbedPersist xPersist = (XEmbedPersist)UnoRuntime.queryInterface( XEmbedPersist.class, m_xEmbedObj ); - if ( xPersist != null ) - { - xPersist.storeOwn(); - generateNewImage(); - } - else - JOptionPane.showMessageDialog( m_aFrame, "No XEmbedPersist!", "Error:", JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in saveObject:", JOptionPane.ERROR_MESSAGE ); - } - } - - generateNewImage(); - repaint(); - } - - public void onShowWindow( boolean bVisible ) - { - // for now nothing to do - } - - // XInplaceClient - public boolean canInplaceActivate() - { - return true; - } - - public void onInplaceActivate() - { - // TODO - // prepare for inplace activation - - // REMOVE - // workaround for CLIPCHILDREN problem - if ( m_aBitmapPainter != null ) - m_aBitmapPainter.stopPainting(); - } - - public void onUIActivate() - { - // TODO - // prepare for UI activate - } - - public void onInplaceDeactivate() - { - // TODO - // inplace deactivation is done - - // REMOVE - // workaround for CLIPCHILDREN problem - if ( m_aBitmapPainter != null ) - m_aBitmapPainter.startPainting(); - } - - public void onUIDeactivate() - { - // TODO - // prepare for UI deactivate - } - - public XIPMainContainerWindow getTopmostWindow() - { - // TODO - // return an implementation of XIPMainContainerWindow - // mainly required for ui activation - // dummy implementation is enough for inplace activation - - return null; - } - - public XInplaceUIWindow getDocumentWindow() - { - // TODO - // return implementation of XInplaceUIWindow - // mainly required for ui activation - // dummy implementation is enough for inplace activation - - return null; - } - - public com.sun.star.awt.Rectangle getPosRect() - { - // provide position rectangle to the object - try { - // here object bitmap and scaling factor hold the size - com.sun.star.awt.Size aBitmapSize = m_xBitmap.getSize(); - com.sun.star.awt.Size aVisSize = new com.sun.star.awt.Size( - (int)( aBitmapSize.Width * m_nXScaling ), - (int)( aBitmapSize.Height * m_nYScaling ) ); - return new com.sun.star.awt.Rectangle( 10, 10, aVisSize.Width, aVisSize.Height ); - } - catch( Exception e ) - { - System.out.println( "Position rectangle generation failed!" ); - } - - return new com.sun.star.awt.Rectangle( 10, 10, 110, 110 ); - } - - public com.sun.star.awt.Rectangle getClipRect() - { - // provide clip rectangle to the object - // in this application position and clip rectangles are the same - - try { - // here object bitmap and scaling factor hold the size - com.sun.star.awt.Size aBitmapSize = m_xBitmap.getSize(); - com.sun.star.awt.Size aVisSize = new com.sun.star.awt.Size( - (int)( aBitmapSize.Width * m_nXScaling ), - (int)( aBitmapSize.Height * m_nYScaling ) ); - return new com.sun.star.awt.Rectangle( 10, 10, aVisSize.Width, aVisSize.Height ); - } - catch( Exception e ) - { - System.out.println( "Clip rectangle generation failed!" ); - } - - return new com.sun.star.awt.Rectangle( 10, 10, 110, 110 ); - } - - public void translateAccelerators( com.sun.star.awt.KeyEvent[] aKeys ) - { - // TODO - // an accelerator table for object - // ui activation related - } - - public void scrollObj( com.sun.star.awt.Size aOffset ) - { - // TODO - // scrolls the object to a specified offset - // not mandatory for the testing application :) - } - - public void onPosRectChange( com.sun.star.awt.Rectangle aPosRect ) - { - // object asks to change the position - if ( m_xEmbedObj != null ) - { - try { - int nState = m_xEmbedObj.getCurrentState(); - // such a position change make sense only when object is - // either inplace or ui active - if ( nState == EmbedStates.EMBED_INPLACE_ACTIVE - || nState == EmbedStates.EMBED_UI_ACTIVE ) - { - XInplaceObject xInplObj = (XInplaceObject)UnoRuntime.queryInterface( XInplaceObject.class, m_xEmbedObj ); - if ( xInplObj != null ) - { - xInplObj.setObjectRects( aPosRect, aPosRect ); // show the whole object - if ( m_aBitmapPainter != null ) - m_aBitmapPainter.setRect( aPosRect ); - } - else - System.out.println( "Why object that does not support inplace activation behave like inplace object?!" ); - } - else - System.out.println( "The object is not active but asks to change visual area!" ); - } catch( Exception e ) - { - System.out.println( "Exception is thrown in onPosRectChange: " + e ); - } - } - else - System.out.println( "Who asks to change visual area?!!" ); - } - - // XJob - public Object execute( NamedValue[] pValues ) - { - for( int nInd = 0; nInd < m_aActionsList.size(); nInd++ ) - { - ActionObject aAction = m_aActionsList.get( nInd ); - if ( aAction != null ) - { - if ( aAction.m_nID == DESTROY ) - { - // free all resources - clearObjectAndStorage(); - m_bDestroyed = true; - } - else if ( aAction.m_nID == ACTIVATE_OUTPLACE ) - { - // activate object if exists and not active - if ( m_xEmbedObj != null ) - { - try { - m_xEmbedObj.changeState( EmbedStates.EMBED_ACTIVE ); - } - catch( Exception ex ) - { - System.out.println( "Exception on mouse click" + ex ); - } - } - } - else if ( aAction.m_nID == NEW_DOCUMENT ) - { - // clear everything - clearObjectAndStorage(); - - repaint(); - } - else if ( aAction.m_nID == SAVE_AS ) - { - // open SaveAs dialog and store - - if ( m_xStorage != null && m_xEmbedObj != null ) - { - try { - /* - if ( m_bLinkObj ) - storeLinkAsFileURI( aFileURI ); - else - */ - saveObjectAsFileURI( aAction.m_sParam ); - } - catch( Exception ex ) - { - System.out.println( "Exception in SaveAsMenuItem: " + ex ); - } - } - } - else if ( aAction.m_nID == OPEN_FILE ) - { - // clear everything - clearObjectAndStorage(); - - // load from specified file - loadFileURI( aAction.m_sParam ); - - if ( m_xEmbedObj != null ) - { - try { - m_xEmbedObj.setClientSite( this ); - } - catch( Exception ex ) - { - System.out.println( "Exception in OpenFileMenuItem: " + ex ); - } - } - - generateNewImage(); - repaint(); - } - else if ( aAction.m_nID == SAVE ) - { - if ( m_xStorage != null && m_xEmbedObj != null ) - { - // if has persistence store there - // if not it is and error, SaveAs had to be used - - if ( m_bOwnFile ) - { - if ( m_xStorage != null ) - { - try { - saveObject(); - - if ( m_bLinkObj ) - storeLinkToStorage(); - - XTransactedObject xTransact = (XTransactedObject)UnoRuntime.queryInterface( XTransactedObject.class, - m_xStorage ); - if ( xTransact != null ) - xTransact.commit(); - } - catch( Exception ex ) - { - System.out.println( "Exception during save operation in SaveMenuItem:" + ex ); - } - } - else - { - System.out.println( "No storage for owned file!" ); - } - } - else - { - System.out.println( "No owned file!" ); - } - } - } - else if ( aAction.m_nID == NEW_OBJECT ) - { - // remove current object an init a new one - clearObjectAndStorage(); - - if ( aAction.m_sParam != null ) - { - m_xStorage = createTempStorage(); - - if ( m_xStorage != null ) - m_xEmbedObj = createEmbedObject( aAction.m_sParam ); - else - System.out.println( "Can't create temporary storage!" ); - - if ( m_xEmbedObj != null ) - { - try { - m_xEmbedObj.setClientSite( this ); - } - catch( Exception ex ) - { - System.out.println( "Exception in NewObjectMenuItem:" + ex ); - } - } - } - - generateNewImage(); - repaint(); - } - else if ( aAction.m_nID == OBJECT_FROM_FILE ) - { - // first remove current object - clearObjectAndStorage(); - - // create object from specified file - m_xStorage = createTempStorage(); - - if ( m_xStorage != null ) - m_xEmbedObj = loadEmbedObject( aAction.m_sParam ); - - if ( m_xEmbedObj != null ) - { - try { - m_xEmbedObj.setClientSite( this ); - } - catch( Exception ex ) - { - System.out.println( "Exception in LoadObjectMenuItem: " + ex ); - } - } - - generateNewImage(); - repaint(); - } - else if ( aAction.m_nID == LINK_FROM_FILE ) - { - // first remove current object - clearObjectAndStorage(); - - m_xStorage = createTempStorage(); - - // create object from specified file - m_xEmbedObj = createLinkObject( aAction.m_sParam ); - - if ( m_xEmbedObj != null ) - { - m_aLinkURI = aAction.m_sParam; - m_bLinkObj = true; - - try { - m_xEmbedObj.setClientSite( this ); - } - catch( Exception ex ) - { - System.out.println( "Exception in LinkObjectMenuItem:" + ex ); - } - } - - generateNewImage(); - repaint(); - } - else if ( aAction.m_nID == CONVERT_LINK_TO_OBJECT ) - { - if ( !m_bLinkObj ) - { - System.out.println( "The object is not a link!" ); - continue; - } - - if ( m_xEmbedObj != null ) - { - if ( m_xStorage != null ) - { - try { - XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, - m_xStorage ); - if ( xNameAccess != null && xNameAccess.hasByName( "LinkName" ) ) - m_xStorage.removeElement( "LinkName" ); - - XLinkageSupport xLinkage = (XLinkageSupport)UnoRuntime.queryInterface( XLinkageSupport.class, - m_xEmbedObj ); - if ( xLinkage != null ) - { - xLinkage.breakLink( m_xStorage, "EmbedSub" ); - m_bLinkObj = false; - m_aLinkURI = null; - } - else - System.out.println( "No XLinkageSupport in ConvertLink... !" ); - } - catch( Exception e1 ) - { - System.out.println( "Exception in ConvertLinkToEmbed:try 1 :" + e1 ); - } - } - } - } - else if ( aAction.m_nID == ACTIVATE_INPLACE ) - { - // activate object - if ( m_xEmbedObj != null ) - { - // in general it is better to check acceptable states - try { - m_xEmbedObj.changeState( EmbedStates.EMBED_INPLACE_ACTIVE ); - } - catch( Exception ex ) - { - System.out.println( "Exception on inplace activation " + ex ); - } - } - } - else if ( aAction.m_nID == DEACTIVATE ) - { - // activate object - - if ( m_xEmbedObj != null ) - { - int nOldState = -1; - try { - nOldState = m_xEmbedObj.getCurrentState(); - } catch( Exception e ) - {} - - if ( nOldState == EmbedStates.EMBED_ACTIVE - || nOldState == EmbedStates.EMBED_INPLACE_ACTIVE - || nOldState == EmbedStates.EMBED_UI_ACTIVE ) - { - try { - m_xEmbedObj.changeState( EmbedStates.EMBED_RUNNING ); - } - catch( Exception ex ) - { - System.out.println( "Exception on inplace activation " + ex ); - } - } - else - { - System.out.println( "Deactivation of nonactive object!" ); - } - } - } - else - { - System.out.println( "Unknown action is requested: " + aAction.m_nID + " " ); - } - } - } - - m_aActionsList.clear(); - - synchronized( m_oInHandlerLock ) - { - m_bInHandler = false; - } - - return Any.VOID; - } - - public void actionRegister( byte nActionID, String sParam ) - { - synchronized( m_oActionsNumberLock ) - { - int nSize = m_aActionsList.size(); - if ( nSize < 199 ) - { - if ( nSize == 0 ) - m_aActionsList.add( new ActionObject( nActionID, sParam ) ); - else - { - ActionObject aAction = m_aActionsList.get( nSize - 1 ); - if ( aAction != null && aAction.m_nID != DESTROY ) - m_aActionsList.add( new ActionObject( nActionID, sParam ) ); - } - } - } - } - - public void SaveAsOperation() - { - if ( m_xStorage != null && m_xEmbedObj != null ) - { - FileDialog aFileDialog = new FileDialog( m_aFrame, "SaveAs", FileDialog.SAVE ); - aFileDialog.show(); - if ( aFileDialog.getFile() != null ) - { - String aFileName = aFileDialog.getDirectory() + aFileDialog.getFile(); - File aFile = new File( aFileName ); - if ( aFile != null ) - { - // create object from specified file - String aFileURI = getValidURL( aFile.toURI().toASCIIString() ); - actionRegister( SAVE_AS, aFileURI ); - } - } - } - else - JOptionPane.showMessageDialog( m_aFrame, "No document is embedded!", "Error:", JOptionPane.ERROR_MESSAGE ); - - } - - public void destroy() - { - // redirect the call through the timer and call super.destroy(); - actionRegister( DESTROY, null ); - - for ( int i = 0; i < 3 && !m_bDestroyed; i++ ) - { - try { - Thread.sleep( 200 ); - } catch ( Exception e ) - {} - } - - if ( !m_bDestroyed ) - System.out.println( "The object application can not exit correctly!" ); - - m_aTimer.stop(); - - super.destroy(); - } - - public void update( Graphics g ) - { - paint( g ); - } - - public void paint( Graphics g ) - { - super.paint( g ); - - createVclWindow(); - } - - public void createVclWindow() - { - synchronized( m_oImageLock ) - { - if ( m_xVCLWindow == null && m_xServiceFactory != null && m_xEmbedObj != null && m_xBitmap != null ) - { - java.awt.Rectangle aBounds = getBounds(); - m_xVCLWindow = WindowHelper.createWindow( m_xServiceFactory, m_aNativeView, aBounds ); - m_xVCLWindow.setVisible( true ); - - com.sun.star.awt.Size aBitmapSize = new com.sun.star.awt.Size( 200, 100 ); - - XVisualObject xVisObj = (XVisualObject)UnoRuntime.queryInterface( XVisualObject.class, m_xEmbedObj ); - try { - com.sun.star.awt.Size aVisSize = xVisObj.getVisAreaSize( Aspects.MSASPECT_CONTENT ); - m_nXPixelSize = aVisSize.Width / aBitmapSize.Width; - m_nYPixelSize = aVisSize.Height / aBitmapSize.Height; - } - catch( Exception e ) - { - } - - if ( m_xBitmap != null ) - aBitmapSize = m_xBitmap.getSize(); - - System.out.println( "The visual area is Width = " + aBitmapSize.Width + "; Height = " + aBitmapSize.Height ); - - com.sun.star.awt.Rectangle aRect = new com.sun.star.awt.Rectangle( - 10, - 10, - Math.min( (int)aBounds.getWidth() - 20, aBitmapSize.Width ), - Math.min( (int)aBounds.getHeight() - 20, aBitmapSize.Height ) ); - - m_aBitmapPainter = new BitmapPainter( m_xMainThreadExecutor, m_xVCLWindow, m_xBitmap, aRect ); - } - } - } - - public void generateNewImage() - { - if ( m_xEmbedObj != null ) - { - try { - int nOldState = m_xEmbedObj.getCurrentState(); - int nState = nOldState; - if ( nOldState == EmbedStates.EMBED_LOADED ) - { - m_xEmbedObj.changeState( EmbedStates.EMBED_RUNNING ); - nState = EmbedStates.EMBED_RUNNING; - } - - if ( nState == EmbedStates.EMBED_UI_ACTIVE || nState == EmbedStates.EMBED_INPLACE_ACTIVE - || nState == EmbedStates.EMBED_ACTIVE || nState == EmbedStates.EMBED_RUNNING ) - { - XComponentSupplier xCompProv = (XComponentSupplier)UnoRuntime.queryInterface( - XComponentSupplier.class, - m_xEmbedObj ); - if ( xCompProv != null ) - { - XCloseable xCloseable = xCompProv.getComponent(); - XTransferable xTransfer = (XTransferable)UnoRuntime.queryInterface( - XTransferable.class, - xCloseable ); - if ( xTransfer != null ) - { - DataFlavor aFlavor = new DataFlavor(); - aFlavor.MimeType = "application/x-openoffice;windows_formatname=\"Bitmap\""; - aFlavor.HumanPresentableName = "Bitmap"; - aFlavor.DataType = new Type( byte[].class ); - - Object aAny = xTransfer.getTransferData( aFlavor ); - if ( aAny != null && AnyConverter.isArray( aAny ) ) - { - synchronized( m_oImageLock ) - { - m_xBitmap = WindowHelper.getVCLBitmapFromBytes( m_xServiceFactory, aAny ); - if ( m_aBitmapPainter != null ) - { - m_aBitmapPainter.setBitmap( m_xBitmap ); - - if ( m_xBitmap != null ) - { - try { - com.sun.star.awt.Size aBitmapSize = m_xBitmap.getSize(); - com.sun.star.awt.Size aVisSize = new com.sun.star.awt.Size( - (int)( aBitmapSize.Width * m_nXScaling ), - (int)( aBitmapSize.Height * m_nYScaling ) ); - m_aBitmapPainter.setSize( aVisSize ); - } - catch( Exception e ) - { - } - } - } - } - } - } - else - System.out.println( "paint() : can not get XTransferable for the component! " ); - } - else - System.out.println( "paint() : XComponentSupplier is not implemented! " ); - } - } - catch( com.sun.star.uno.Exception e ) - { - // dialogs should not be used in paint() - System.out.println( "Exception in paint(): " + e ); - } - } - } - - public void mouseClicked( MouseEvent e ) - { - if( e.getModifiers() == InputEvent.BUTTON1_MASK ) - { - actionRegister( ACTIVATE_OUTPLACE, null ); - } - } - - public void mousePressed( MouseEvent e ){}; - public void mouseEntered( MouseEvent e ){}; - public void mouseExited( MouseEvent e ){}; - public void mouseReleased( MouseEvent e ){}; - - class NewMenuItem extends MenuItem implements ActionListener // Menu New - { - public NewMenuItem() - { - super( "New", new MenuShortcut( KeyEvent.VK_A )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - actionRegister( NEW_DOCUMENT, null ); - } - } - - class SaveAsMenuItem extends MenuItem implements ActionListener // Menu SaveAs... - { - public SaveAsMenuItem() - { - super( "SaveAs..." ); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - // open SaveAs dialog and store - - SaveAsOperation(); - } - } - - class OpenFileMenuItem extends MenuItem implements ActionListener // Menu Open - { - public OpenFileMenuItem() - { - super( "Open", new MenuShortcut( KeyEvent.VK_C )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - // open OpenFile dialog and load doc - FileDialog aFileDialog = new FileDialog( m_aFrame, "Open" ); - aFileDialog.show(); - if ( aFileDialog.getFile() != null ) - { - String aFileName = aFileDialog.getDirectory() + aFileDialog.getFile(); - File aFile = new File( aFileName ); - if ( aFile != null ) - { - // create object from specified file - String aFileURI = getValidURL( aFile.toURI().toASCIIString() ); - actionRegister( OPEN_FILE, aFileURI ); - } - } - } - } - - class SaveMenuItem extends MenuItem implements ActionListener // Menu Save - { - public SaveMenuItem() - { - super( "Save", new MenuShortcut( KeyEvent.VK_D )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - // if has persistence store there - // if not open SaveAs dialog and store - if ( m_xStorage != null && m_xEmbedObj != null ) - { - if ( m_bOwnFile ) - { - if ( m_xStorage == null ) - { - JOptionPane.showMessageDialog( m_aFrame, - "No storage for owned file!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - - return; - } - - actionRegister( SAVE, null ); - } - else - { - SaveAsOperation(); - } - } - else - JOptionPane.showMessageDialog( m_aFrame, "No document is embedded!", "Error:", JOptionPane.ERROR_MESSAGE ); - } - } - - class NewObjectMenuItem extends MenuItem implements ActionListener // Menu NewObject - { - public NewObjectMenuItem() - { - super( "Create", new MenuShortcut( KeyEvent.VK_N )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - Object[] possibleValues = { "com.sun.star.comp.Writer.TextDocument", - "com.sun.star.comp.Writer.GlobalDocument", - "com.sun.star.comp.Writer.WebDocument", - "com.sun.star.comp.Calc.SpreadsheetDocument", - "com.sun.star.comp.Draw.PresentationDocument", - "com.sun.star.comp.Draw.DrawingDocument", - "com.sun.star.comp.Math.FormulaDocument", - "BitmapImage" }; - - String selectedValue = (String)JOptionPane.showInputDialog( null, "DocumentType", "Select", - JOptionPane.INFORMATION_MESSAGE, null, - possibleValues, possibleValues[0] ); - - actionRegister( NEW_OBJECT, selectedValue ); - } - } - - class LoadObjectMenuItem extends MenuItem implements ActionListener // Menu LoadObject - { - public LoadObjectMenuItem() - { - super( "Load from file", new MenuShortcut( KeyEvent.VK_L )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - // open OpenFile dialog and load doc - FileDialog aFileDialog = new FileDialog( m_aFrame, "Select sources to use for object init" ); - aFileDialog.show(); - if ( aFileDialog.getFile() != null ) - { - String aFileName = aFileDialog.getDirectory() + aFileDialog.getFile(); - File aFile = new File( aFileName ); - if ( aFile != null ) - { - // create object from specified file - String aFileURI = getValidURL( aFile.toURI().toASCIIString() ); - actionRegister( OBJECT_FROM_FILE, aFileURI ); - } - } - } - } - - class LinkObjectMenuItem extends MenuItem implements ActionListener // Menu LinkObject - { - public LinkObjectMenuItem() - { - super( "Create link", new MenuShortcut( KeyEvent.VK_M )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - // open OpenFile dialog and load doc - FileDialog aFileDialog = new FileDialog( m_aFrame, "Select sources to use for object init" ); - aFileDialog.show(); - if ( aFileDialog.getFile() != null ) - { - String aFileName = aFileDialog.getDirectory() + aFileDialog.getFile(); - File aFile = new File( aFileName ); - if ( aFile != null ) - { - // create object from specified file - String aFileURI = getValidURL( aFile.toURI().toASCIIString() ); - actionRegister( LINK_FROM_FILE, aFileURI ); - } - } - } - } - - class ConvertLinkToEmbedMenuItem extends MenuItem implements ActionListener // Menu LinkObject - { - public ConvertLinkToEmbedMenuItem() - { - super( "Convert link to embed", new MenuShortcut( KeyEvent.VK_M )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - actionRegister( CONVERT_LINK_TO_OBJECT, null ); - } - } - - class ActivateOutplaceMenuItem extends MenuItem implements ActionListener // Menu ActiveteOutplace - { - public ActivateOutplaceMenuItem() - { - super( "Activate outplace", new MenuShortcut( KeyEvent.VK_A )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - actionRegister( ACTIVATE_OUTPLACE, null ); - } - } - - class ActivateInplaceMenuItem extends MenuItem implements ActionListener // Menu ActivateInplace - { - public ActivateInplaceMenuItem() - { - super( "Activate inplace", new MenuShortcut( KeyEvent.VK_I )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - actionRegister( ACTIVATE_INPLACE, null ); - } - } - - class DeactivateMenuItem extends MenuItem implements ActionListener // Menu Deactivate - { - public DeactivateMenuItem() - { - super( "Deactivate", new MenuShortcut( KeyEvent.VK_D )); - addActionListener( this ); - } - - public void actionPerformed( ActionEvent e ) - { - actionRegister( DEACTIVATE, null ); - } - } - - // Helper methods - public XEmbeddedObject createEmbedObject( String aServiceName ) - { - XEmbeddedObject xEmbObj = null; - byte[] pClassID = new byte[16]; - - if ( aServiceName.equals( "com.sun.star.comp.Writer.TextDocument" ) ) - { - int[] pTempClassID = { 0x8B, 0xC6, 0xB1, 0x65, 0xB1, 0xB2, 0x4E, 0xDD, - 0xAA, 0x47, 0xDA, 0xE2, 0xEE, 0x68, 0x9D, 0xD6 }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - else if ( aServiceName.equals( "com.sun.star.comp.Writer.GlobalDocument" ) ) - { - int[] pTempClassID = { 0xB2, 0x1A, 0x0A, 0x7C, 0xE4, 0x03, 0x41, 0xFE, - 0x95, 0x62, 0xBD, 0x13, 0xEA, 0x6F, 0x15, 0xA0 }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - else if ( aServiceName.equals( "com.sun.star.comp.Writer.WebDocument" ) ) - { - int[] pTempClassID = { 0xA8, 0xBB, 0xA6, 0x0C, 0x7C, 0x60, 0x45, 0x50, - 0x91, 0xCE, 0x39, 0xC3, 0x90, 0x3F, 0xAC, 0x5E }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - else if ( aServiceName.equals( "com.sun.star.comp.Calc.SpreadsheetDocument" ) ) - { - int[] pTempClassID = { 0x47, 0xBB, 0xB4, 0xCB, 0xCE, 0x4C, 0x4E, 0x80, - 0xA5, 0x91, 0x42, 0xD9, 0xAE, 0x74, 0x95, 0x0F }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - else if ( aServiceName.equals( "com.sun.star.comp.Draw.PresentationDocument" ) ) - { - int[] pTempClassID = { 0x91, 0x76, 0xE4, 0x8A, 0x63, 0x7A, 0x4D, 0x1F, - 0x80, 0x3B, 0x99, 0xD9, 0xBF, 0xAC, 0x10, 0x47 }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - else if ( aServiceName.equals( "com.sun.star.comp.Draw.DrawingDocument" ) ) - { - int[] pTempClassID = { 0x4B, 0xAB, 0x89, 0x70, 0x8A, 0x3B, 0x45, 0xB3, - 0x99, 0x1C, 0xCB, 0xEE, 0xAC, 0x6B, 0xD5, 0xE3 }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - else if ( aServiceName.equals( "com.sun.star.comp.Math.FormulaDocument" ) ) - { - int[] pTempClassID = { 0x07, 0x8B, 0x7A, 0xBA, 0x54, 0xFC, 0x45, 0x7F, - 0x85, 0x51, 0x61, 0x47, 0xE7, 0x76, 0xA9, 0x97 }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - else if ( aServiceName.equals( "BitmapImage" ) ) - { - int[] pTempClassID = { 0xD3, 0xE3, 0x4B, 0x21, 0x9D, 0x75, 0x10, 0x1A, - 0x8C, 0x3D, 0x00, 0xAA, 0x00, 0x1A, 0x16, 0x52 }; - for ( int ind = 0; ind < 16; ind++ ) - pClassID[ind] = (byte)pTempClassID[ind]; - } - - if ( pClassID != null ) - { - // create embedded object based on the class ID - try { - Object oEmbedCreator = m_xServiceFactory.createInstance( "com.sun.star.embed.EmbeddedObjectCreator" ); - XEmbedObjectCreator xEmbedCreator = (XEmbedObjectCreator)UnoRuntime.queryInterface( - XEmbedObjectCreator.class, - oEmbedCreator ); - if ( xEmbedCreator != null ) - { - Object oEmbObj = xEmbedCreator.createInstanceInitNew( pClassID, - "Dummy name", - m_xStorage, - "EmbedSub", - new PropertyValue[0] ); - xEmbObj = (XEmbeddedObject)UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create EmbedCreator!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in createInstanceInitNew():", JOptionPane.ERROR_MESSAGE ); - } - } - else - JOptionPane.showMessageDialog( m_aFrame, "Can't retrieve class ID!", "Error:", JOptionPane.ERROR_MESSAGE ); - - return xEmbObj; - } - - public XEmbeddedObject createLinkObject( String aLinkURL ) - { - XEmbeddedObject xEmbObj = null; - - try { - Object oLinkCreator = m_xServiceFactory.createInstance( "com.sun.star.embed.EmbeddedObjectCreator" ); - XLinkCreator xLinkCreator = (XLinkCreator)UnoRuntime.queryInterface( - XLinkCreator.class, - oLinkCreator ); - if ( xLinkCreator != null ) - { - PropertyValue[] aMedDescr = { new PropertyValue(), new PropertyValue() }; - aMedDescr[0].Name = "URL"; - aMedDescr[0].Value = (Object) aLinkURL; - aMedDescr[1].Name = "ReadOnly"; - aMedDescr[1].Value = (Object) Boolean.FALSE; - Object oEmbObj = xLinkCreator.createInstanceLink( m_xStorage, "EmbedSub", aMedDescr, new PropertyValue[0] ); - xEmbObj = (XEmbeddedObject)UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create LinkCreator!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in createLinkObject():", JOptionPane.ERROR_MESSAGE ); - } - - - return xEmbObj; - } - - - public XEmbeddedObject loadEmbedObject( String aFileURI ) - { - XEmbeddedObject xEmbObj = null; - try { - Object oEmbedCreator = m_xServiceFactory.createInstance( "com.sun.star.embed.EmbeddedObjectCreator" ); - XEmbedObjectCreator xEmbedCreator = (XEmbedObjectCreator)UnoRuntime.queryInterface( - XEmbedObjectCreator.class, - oEmbedCreator ); - if ( xEmbedCreator != null ) - { - PropertyValue[] aMedDescr = { new PropertyValue(), new PropertyValue() }; - aMedDescr[0].Name = "URL"; - aMedDescr[0].Value = (Object) aFileURI; - aMedDescr[1].Name = "ReadOnly"; - aMedDescr[1].Value = (Object) Boolean.FALSE; - Object oEmbObj = xEmbedCreator.createInstanceInitFromMediaDescriptor( m_xStorage, - "EmbedSub", - aMedDescr, - new PropertyValue[0] ); - xEmbObj = (XEmbeddedObject)UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create EmbedFactory!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in loadEmbedObject():", JOptionPane.ERROR_MESSAGE ); - } - - return xEmbObj; - } - - public void clearObjectAndStorage() - { - synchronized( m_oImageLock ) - { - m_aImage = null; - } - - m_nXScaling = 1; - m_nYScaling = 1; - m_nXPixelSize = 1; - m_nYPixelSize = 1; - - m_bOwnFile = false; - - m_aLinkURI = null; - m_bLinkObj = false; - - if ( m_xEmbedObj != null ) - { - try { - XCloseable xClose = (XCloseable)UnoRuntime.queryInterface( XCloseable.class, m_xEmbedObj ); - if ( xClose != null ) - xClose.close( true ); - } - catch ( Exception ex ) - {} - m_xEmbedObj = null; - } - - if ( m_xStorage != null ) - { - try { - XComponent xComponent = (XComponent)UnoRuntime.queryInterface( XComponent.class, m_xStorage ); - if ( xComponent != null ) - xComponent.dispose(); - } - catch ( Exception ex ) - {} - m_xStorage = null; - } - } - - public XStorage createTempStorage() - { - XStorage xTempStorage = null; - - try { - Object oStorageFactory = m_xServiceFactory.createInstance( "com.sun.star.embed.StorageFactory" ); - XSingleServiceFactory xStorageFactory = (XSingleServiceFactory)UnoRuntime.queryInterface( - XSingleServiceFactory.class, - oStorageFactory ); - if ( xStorageFactory != null ) - { - Object oStorage = xStorageFactory.createInstance(); - xTempStorage = (XStorage)UnoRuntime.queryInterface( XStorage.class, oStorage ); - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create StorageFactory!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in createTempStorage():", JOptionPane.ERROR_MESSAGE ); - } - - return xTempStorage; - } - - public void saveObjectAsFileURI( String aFileURI ) - { - try { - Object oStorageFactory = m_xServiceFactory.createInstance( "com.sun.star.embed.StorageFactory" ); - XSingleServiceFactory xStorageFactory = (XSingleServiceFactory)UnoRuntime.queryInterface( - XSingleServiceFactory.class, - oStorageFactory ); - if ( xStorageFactory != null ) - { - XEmbedPersist xPersist = (XEmbedPersist)UnoRuntime.queryInterface( XEmbedPersist.class, m_xEmbedObj ); - if ( xPersist != null ) - { - Object aArgs[] = new Object[2]; - aArgs[0] = aFileURI; - aArgs[1] = Integer.valueOf( ElementModes.ELEMENT_READWRITE ); - - Object oStorage = xStorageFactory.createInstanceWithArguments( aArgs ); - XStorage xTargetStorage = (XStorage)UnoRuntime.queryInterface( XStorage.class, oStorage ); - - PropertyValue aProps[] = { new PropertyValue() }; - aProps[0].Name = "StoreVisualReplacement"; - aProps[0].Value = Boolean.valueOf( m_bStoreVisRepl ); - - xPersist.storeAsEntry( xTargetStorage, "EmbedSub", new PropertyValue[0], aProps ); - xPersist.saveCompleted( true ); - - // the object must be already based on new storage - XComponent xComponent = (XComponent)UnoRuntime.queryInterface( XComponent.class, m_xStorage ); - xComponent.dispose(); - - m_xStorage = xTargetStorage; - m_bOwnFile = true; - - XTransactedObject xTransact = (XTransactedObject)UnoRuntime.queryInterface( XTransactedObject.class, - m_xStorage ); - if ( xTransact != null ) - xTransact.commit(); - } - else - JOptionPane.showMessageDialog( m_aFrame, "No XEmbedPersist!", "Error:", JOptionPane.ERROR_MESSAGE ); - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create StorageFactory!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in saveStorageToFileURI():", JOptionPane.ERROR_MESSAGE ); - } - - } - - public void loadFileURI( String aFileURI ) - { - try - { - Object oStorageFactory = m_xServiceFactory.createInstance( "com.sun.star.embed.StorageFactory" ); - XSingleServiceFactory xStorageFactory = (XSingleServiceFactory)UnoRuntime.queryInterface( - XSingleServiceFactory.class, - oStorageFactory ); - Object aArgs[] = new Object[2]; - aArgs[0] = aFileURI; - aArgs[1] = Integer.valueOf( ElementModes.ELEMENT_READWRITE ); - - Object oStorage = xStorageFactory.createInstanceWithArguments( aArgs ); - XStorage xTargetStorage = (XStorage)UnoRuntime.queryInterface( XStorage.class, oStorage ); - - Object oEmbedCreator = m_xServiceFactory.createInstance( "com.sun.star.embed.EmbeddedObjectCreator" ); - XEmbedObjectCreator xEmbedCreator = (XEmbedObjectCreator)UnoRuntime.queryInterface( - XEmbedObjectCreator.class, - oEmbedCreator ); - - XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, - xTargetStorage ); - if ( xNameAccess == null ) - { - JOptionPane.showMessageDialog( m_aFrame, "No XNameAccess!", "Error:", JOptionPane.ERROR_MESSAGE ); - return; - } - - Object oEmbObj = null; - if ( xNameAccess.hasByName( "LinkName" ) && xTargetStorage.isStreamElement( "LinkName" ) ) - { - } - else - oEmbObj = xEmbedCreator.createInstanceInitFromEntry( xTargetStorage, - "EmbedSub", - false, - new PropertyValue[0] ); - - m_xEmbedObj = (XEmbeddedObject)UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); - - if ( m_xEmbedObj != null ) - { - m_xStorage = xTargetStorage; - m_bOwnFile = true; - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create EmbedObject from storage!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in loadFileURI():", JOptionPane.ERROR_MESSAGE ); - } - } - - public void storeLinkToStorage() - { - if ( m_xStorage != null && m_bLinkObj ) - { - try { - XStream xLinkStream = m_xStorage.openStreamElement( "LinkName", ElementModes.ELEMENT_WRITE ); - - if ( xLinkStream != null ) - { - XOutputStream xLinkOutStream = xLinkStream.getOutputStream(); - XTruncate xTruncate = (XTruncate) UnoRuntime.queryInterface( XTruncate.class, - xLinkOutStream ); - if ( xLinkOutStream != null && xTruncate != null ) - { - xTruncate.truncate(); - - char[] aLinkChar = m_aLinkURI.toCharArray(); - byte[] aLinkBytes = new byte[ aLinkChar.length ]; - for ( int ind = 0; ind < aLinkChar.length; ind++ ) - aLinkBytes[ind] = (byte)aLinkChar[ind]; - - xLinkOutStream.writeBytes( aLinkBytes ); - xLinkOutStream.closeOutput(); - - XComponent xComponent = (XComponent) UnoRuntime.queryInterface( XComponent.class, - xLinkStream ); - if ( xComponent != null ) - xComponent.dispose(); - } - else - JOptionPane.showMessageDialog( m_aFrame, - "The substream can not be truncated or written!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create/open substream!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, - e, - "Exception in storeLinkToStorage:", - JOptionPane.ERROR_MESSAGE ); - - } - } - } - - public void storeLinkAsFileURI( String aFileURI ) - { - try { - Object oStorageFactory = m_xServiceFactory.createInstance( "com.sun.star.embed.StorageFactory" ); - XSingleServiceFactory xStorageFactory = (XSingleServiceFactory)UnoRuntime.queryInterface( - XSingleServiceFactory.class, - oStorageFactory ); - if ( xStorageFactory != null ) - { - Object aArgs[] = new Object[2]; - aArgs[0] = aFileURI; - aArgs[1] = Integer.valueOf( ElementModes.ELEMENT_READWRITE ); - - Object oStorage = xStorageFactory.createInstanceWithArguments( aArgs ); - XStorage xTargetStorage = (XStorage)UnoRuntime.queryInterface( XStorage.class, oStorage ); - - XComponent xComponent = (XComponent)UnoRuntime.queryInterface( XComponent.class, m_xStorage ); - xComponent.dispose(); - - m_xStorage = xTargetStorage; - m_bOwnFile = true; - - storeLinkToStorage(); - - XTransactedObject xTransact = (XTransactedObject)UnoRuntime.queryInterface( XTransactedObject.class, - m_xStorage ); - if ( xTransact != null ) - xTransact.commit(); - } - else - JOptionPane.showMessageDialog( m_aFrame, - "Can't create StorageFactory!", - "Error:", - JOptionPane.ERROR_MESSAGE ); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in saveStorageToFileURI():", JOptionPane.ERROR_MESSAGE ); - } - } - - public String getValidURL( String sFileURL ) - { - // m_xTransformer must be set! - URL[] aURLs = { new URL() }; - aURLs[0].Complete = sFileURL; - - try { - if ( !m_xTransformer.parseSmart( aURLs, "" ) ) - throw new Exception(); - } - catch( Exception e ) - { - JOptionPane.showMessageDialog( m_aFrame, e, "Exception in getValidURL():", JOptionPane.ERROR_MESSAGE ); - } - - return aURLs[0].Complete; - } - - public void disposeObject() - { - // TODO: - // usage of object, storage and bitmap painter should be locked - // but since possibility of race condition is very low - // it is not really required for testing application - - clearObjectAndStorage(); - - if ( m_aBitmapPainter != null ) - { - m_aBitmapPainter.disconnectListener(); - m_aBitmapPainter = null; - } - } -} - diff --git a/embeddedobj/test/Container1/PaintThread.java b/embeddedobj/test/Container1/PaintThread.java deleted file mode 100644 index f7eb63ef2735..000000000000 --- a/embeddedobj/test/Container1/PaintThread.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -package embeddedobj.test; - -import java.awt.*; -import java.applet.*; -import java.awt.event.*; -import java.net.*; -import java.io.*; -import java.lang.Thread; - -import com.sun.star.awt.XBitmap; -import com.sun.star.awt.XDevice; -import com.sun.star.awt.XDisplayBitmap; -import com.sun.star.awt.XGraphics; -import com.sun.star.awt.XWindow; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.awt.XToolkit; -import com.sun.star.awt.XSystemChildFactory; -import com.sun.star.awt.WindowDescriptor; -import com.sun.star.awt.WindowClass; -import com.sun.star.awt.WindowAttribute; - -import com.sun.star.uno.UnoRuntime; -import com.sun.star.lang.XMultiServiceFactory; - -class PaintThread extends java.lang.Thread -{ - private XWindow m_xWindow; - private XBitmap m_xBitmap; - private com.sun.star.awt.Rectangle m_aRect; - - private Object m_oRequestsLock; - private boolean m_bToPaint = false; - - private boolean m_bDisposed = false; - - public static boolean interceptedRects( com.sun.star.awt.Rectangle aRect1, com.sun.star.awt.Rectangle aRect2 ) - { - return ( ( aRect1.X <= aRect2.X && aRect2.X <= aRect1.X + aRect1.Width - || aRect1.X <= aRect2.X + aRect2.Width && aRect2.X + aRect2.Width <= aRect1.X + aRect1.Width - || aRect2.X <= aRect1.X && aRect1.X <= aRect2.X + aRect2.Width - || aRect2.X <= aRect1.X + aRect1.Width && aRect1.X + aRect1.Width <= aRect2.X + aRect2.Width ) - && ( aRect1.Y <= aRect2.Y && aRect2.Y <= aRect1.Y + aRect1.Height - || aRect1.Y <= aRect2.Y + aRect2.Height && aRect2.Y + aRect2.Height <= aRect1.Y + aRect1.Height - || aRect2.Y <= aRect1.Y && aRect1.Y <= aRect2.Y + aRect2.Height - || aRect2.Y <= aRect1.Y + aRect1.Height && aRect1.Y + aRect1.Height <= aRect2.Y + aRect2.Height ) ); - } - - public PaintThread( XWindow xWindow ) - { - m_oRequestsLock = new Object(); - m_xWindow = xWindow; - } - - public void setPaintRequest( XBitmap xBitmap, com.sun.star.awt.Rectangle aRect, com.sun.star.awt.Rectangle aClip ) - { - synchronized( m_oRequestsLock ) - { - if ( PaintThread.interceptedRects( aRect, aClip ) ) - { - m_xBitmap = xBitmap; - m_aRect = aRect; - m_bToPaint = true; - } - } - } - - public void disposeThread() - { - m_bDisposed = true; - } - - public void run() - { - while( !m_bDisposed ) - { - try { - Thread.sleep( 200 ); - } catch( Exception e ) {} - - XBitmap xBitmap = null; - com.sun.star.awt.Rectangle aRect = null; - boolean bPaint = false; - - synchronized( m_oRequestsLock ) - { - if ( m_bToPaint ) - { - xBitmap = m_xBitmap; - aRect = m_aRect; - m_bToPaint = false; - bPaint = true; - } - } - - if ( bPaint ) - { - XDevice xDevice = (XDevice)UnoRuntime.queryInterface( XDevice.class, m_xWindow ); - if ( xDevice != null ) - { - XGraphics xGraphics = xDevice.createGraphics(); - if ( xBitmap != null ) - { - XDisplayBitmap xDisplayBitmap = xDevice.createDisplayBitmap( xBitmap ); - - com.sun.star.awt.Size aSize = xBitmap.getSize(); - xGraphics.draw( xDisplayBitmap, 0, 0, aSize.Width, aSize.Height, - aRect.X, aRect.Y, aRect.Width, aRect.Height ); - } - - xGraphics.drawLine( aRect.X - 1, aRect.Y - 1, - aRect.X + aRect.Width + 1, aRect.Y - 1 ); - xGraphics.drawLine( aRect.X + aRect.Width + 1, aRect.Y - 1, - aRect.X + aRect.Width + 1, aRect.Y + aRect.Height + 1 ); - xGraphics.drawLine( aRect.X + aRect.Width + 1, aRect.Y + aRect.Height + 1, - aRect.X - 1, aRect.Y + aRect.Height + 1 ); - xGraphics.drawLine( aRect.X - 1, aRect.Y + aRect.Height + 1, - aRect.X - 1, aRect.Y - 1 ); - } - } - } - } -}; - diff --git a/embeddedobj/test/Container1/WindowHelper.java b/embeddedobj/test/Container1/WindowHelper.java deleted file mode 100644 index 66de646ddb57..000000000000 --- a/embeddedobj/test/Container1/WindowHelper.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -package embeddedobj.test; - -import java.awt.*; -import java.applet.*; -import java.awt.event.*; -import java.net.*; -import java.io.*; - -import com.sun.star.awt.XBitmap; -import com.sun.star.awt.XWindow; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.awt.XToolkit; -import com.sun.star.awt.XSystemChildFactory; -import com.sun.star.awt.WindowDescriptor; -import com.sun.star.awt.WindowClass; -import com.sun.star.awt.WindowAttribute; -import com.sun.star.awt.VclWindowPeerAttribute; - -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.Any; - -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.lang.XSingleServiceFactory; - -class WindowHelper { - - public static XWindow createWindow( XMultiServiceFactory xFactory, NativeView aParent, java.awt.Rectangle aBounds ) - { - XWindow xWindow = null; - XToolkit xToolkit = null; - - // get access to toolkit of remote office to create the container window of new target frame - try{ - xToolkit = (XToolkit)UnoRuntime.queryInterface( XToolkit.class, - xFactory.createInstance("com.sun.star.awt.Toolkit") ); - } - catch( Exception ex ) - { - return null; - } - - XSystemChildFactory xChildFactory = (XSystemChildFactory)UnoRuntime.queryInterface( - XSystemChildFactory.class, - xToolkit); - - try - { - XWindowPeer xPeer = null; - Integer nHandle = aParent.getHWND(); - short nSystem = (short)aParent.getNativeWindowSystemType(); - byte[] lProcID = new byte[0]; -/* - try { - xPeer = xChildFactory.createSystemChild((Object)nHandle, lProcID, nSystem); - } - catch( Exception e ) - {} -*/ - if (xPeer==null) - { - JavaWindowPeerFake aWrapper = new JavaWindowPeerFake(aParent); - - XWindowPeer xParentPeer = (XWindowPeer)UnoRuntime.queryInterface( - XWindowPeer.class, - aWrapper); - - WindowDescriptor aDescriptor = new WindowDescriptor(); - aDescriptor.Type = WindowClass.TOP; - aDescriptor.WindowServiceName = "workwindow"; - aDescriptor.ParentIndex = 1; - aDescriptor.Parent = xParentPeer; - aDescriptor.Bounds = new com.sun.star.awt.Rectangle( (int)aBounds.getX(), - (int)aBounds.getY(), - (int)aBounds.getWidth(), - (int)aBounds.getHeight() ); - - System.out.println( "The rectangle for vcl window is: x = " + (int)aBounds.getX() - + "; y = " + (int)aBounds.getY() - + "; width = " + (int)aBounds.getWidth() - + "; height = " + (int)aBounds.getHeight() ); - - if (nSystem == com.sun.star.lang.SystemDependent.SYSTEM_WIN32) - aDescriptor.WindowAttributes = WindowAttribute.SHOW; - else - aDescriptor.WindowAttributes = WindowAttribute.SYSTEMDEPENDENT; - - aDescriptor.WindowAttributes |= VclWindowPeerAttribute.CLIPCHILDREN; - - xPeer = xToolkit.createWindow( aDescriptor ); - } - - xWindow = (XWindow)UnoRuntime.queryInterface( XWindow.class, xPeer); - if ( xWindow != null ) - xWindow.setPosSize( (int)aBounds.getX(), - (int)aBounds.getY(), - (int)aBounds.getWidth(), - (int)aBounds.getHeight(), - com.sun.star.awt.PosSize.POSSIZE ); - } - catch( Exception ex1 ) - { - System.out.println( "Exception on VCL window creation: " + ex1 ); - xWindow = null; - } - - return xWindow; - } - - public static XBitmap getVCLBitmapFromBytes( XMultiServiceFactory xFactory, Object aAny ) - { - if ( !AnyConverter.isArray( aAny ) ) - throw new com.sun.star.uno.RuntimeException(); - - Object[] aArgs = new Object[1]; - aArgs[0] = aAny; - XBitmap xResult = null; - - try { - XSingleServiceFactory xBitmapFactory = (XSingleServiceFactory)UnoRuntime.queryInterface( - XSingleServiceFactory.class, - xFactory.createInstance( "com.sun.star.embed.BitmapCreator" ) ); - - xResult = (XBitmap)UnoRuntime.queryInterface( - XBitmap.class, - xBitmapFactory.createInstanceWithArguments( aArgs ) ); - } - catch( Exception e ) - { - System.out.println( "Could not create VCL bitmap based on sequence," ); - System.out.println( "exception: " + e ); - } - - return xResult; - } -}; -