summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embeddedobj/prj/build.lst3
-rw-r--r--embeddedobj/source/commonembedding/embedobj.cxx14
-rw-r--r--embeddedobj/source/commonembedding/persistence.cxx25
-rw-r--r--embeddedobj/source/inc/commonembobj.hxx8
-rw-r--r--embeddedobj/source/msole/olecomponent.cxx15
-rw-r--r--embeddedobj/source/msole/olecomponent.hxx5
-rw-r--r--embeddedobj/test/Container1/EmbedContApp.java751
-rw-r--r--embeddedobj/util/makefile.mk19
8 files changed, 492 insertions, 348 deletions
diff --git a/embeddedobj/prj/build.lst b/embeddedobj/prj/build.lst
index 4c80b5bd3df4..d9db1c2e25f2 100644
--- a/embeddedobj/prj/build.lst
+++ b/embeddedobj/prj/build.lst
@@ -2,4 +2,5 @@ es embeddedobj : offuh sal cppu cppuhelper NULL
es embeddedobj usr1 - all eo_mkout NULL
es embeddedobj\source\commonembedding nmake - all eo_commonembed NULL
es embeddedobj\source\general nmake - all eo_general NULL
-es embeddedobj\util nmake - all eo_util eo_commonembed eo_general NULL
+es embeddedobj\source\msole nmake - all eo_msole NULL
+es embeddedobj\util nmake - all eo_util eo_commonembed eo_general eo_msole NULL
diff --git a/embeddedobj/source/commonembedding/embedobj.cxx b/embeddedobj/source/commonembedding/embedobj.cxx
index aa980a59024c..aebcc37fdb71 100644
--- a/embeddedobj/source/commonembedding/embedobj.cxx
+++ b/embeddedobj/source/commonembedding/embedobj.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: embedobj.cxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: mav $ $Date: 2003-10-27 12:57:28 $
+ * last change: $Author: mav $ $Date: 2003-11-14 15:24:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -181,6 +181,9 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState )
if ( !xModif.is() )
throw uno::RuntimeException();
+ if ( !m_xClientSite.is() )
+ throw embed::WrongStateException(); //TODO: client site is not set!
+
// store document if it is modified
if ( xModif->isModified() )
{
@@ -324,7 +327,7 @@ void SAL_CALL OCommonEmbeddedObject::doVerb( sal_Int32 nVerbID )
}
//----------------------------------------------
-uno::Sequence< sal_Int32 > SAL_CALL OCommonEmbeddedObject::getSupportedVerbs()
+uno::Sequence< embed::VerbDescr > SAL_CALL OCommonEmbeddedObject::getSupportedVerbs()
throw ( embed::WrongStateException,
uno::RuntimeException )
{
@@ -336,7 +339,7 @@ uno::Sequence< sal_Int32 > SAL_CALL OCommonEmbeddedObject::getSupportedVerbs()
throw embed::WrongStateException( ::rtl::OUString::createFromAscii( "The object has no persistence!\n" ),
uno::Reference< uno::XInterface >( reinterpret_cast< ::cppu::OWeakObject* >(this) ) );
- uno::Sequence< sal_Int32 > aResult;
+ uno::Sequence< embed::VerbDescr > aResult;
sal_Int32 nResLen = 0;
// verbs list will be set on initialization depending from document type
@@ -345,7 +348,8 @@ uno::Sequence< sal_Int32 > SAL_CALL OCommonEmbeddedObject::getSupportedVerbs()
if ( m_aVerbTable[nVerbInd][1] == m_aAcceptedStates[nStatesInd] )
{
aResult.realloc( ++nResLen );
- aResult[nResLen-1] = m_aVerbTable[nVerbInd][0];
+ // TODO: fill the whole structure
+ aResult[nResLen-1].VerbID = m_aVerbTable[nVerbInd][0];
}
return aResult;
diff --git a/embeddedobj/source/commonembedding/persistence.cxx b/embeddedobj/source/commonembedding/persistence.cxx
index 24bbea1f3e19..3e21ad47ea4c 100644
--- a/embeddedobj/source/commonembedding/persistence.cxx
+++ b/embeddedobj/source/commonembedding/persistence.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: persistence.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: mav $ $Date: 2003-11-04 14:30:19 $
+ * last change: $Author: mav $ $Date: 2003-11-14 15:24:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -499,7 +499,7 @@ uno::Reference< frame::XModel > OCommonEmbeddedObject::CreateTempDocFromLink_Imp
}
//------------------------------------------------------
-sal_Bool SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
+void SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
const uno::Reference< embed::XStorage >& xStorage,
const ::rtl::OUString& sEntName,
sal_Int32 nEntryConnectionMode,
@@ -547,6 +547,10 @@ sal_Bool SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
::rtl::OUString::createFromAscii( "The object waits for saveCompleted() call!\n" ),
uno::Reference< uno::XInterface >( reinterpret_cast< ::cppu::OWeakObject* >(this) ) );
+ // TODO: the OOo link will have persistence
+ if ( m_bIsLink )
+ return;
+
uno::Reference< container::XNameAccess > xNameAccess( xStorage, uno::UNO_QUERY );
if ( !xNameAccess.is() )
throw uno::RuntimeException(); //TODO
@@ -565,10 +569,6 @@ sal_Bool SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
m_xParentStorage = xStorage;
m_aEntryName = sEntName;
- // the object should be based on the storage ??? TODO
- if ( bElExists && !xStorage->isStorageElement( sEntName ) )
- throw io::IOException(); // TODO access denied
-
if ( nEntryConnectionMode == embed::EntryInitModes::ENTRY_DEFAULT_INIT )
{
if ( bElExists )
@@ -593,9 +593,8 @@ sal_Bool SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
if ( nEntryConnectionMode == embed::EntryInitModes::ENTRY_NO_INIT )
{
// the document just already changed its storage to store to
- // the links to OOo documents will ignore this call and return false
- if ( m_bIsLink )
- return sal_False;
+ // the links to OOo documents for now ignore this call
+ // TODO: OOo links will have persistence so it will be switched here
}
else if ( nEntryConnectionMode == embed::EntryInitModes::ENTRY_TRUNCATE_INIT )
{
@@ -621,8 +620,6 @@ sal_Bool SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
uno::Reference< uno::XInterface >( reinterpret_cast< ::cppu::OWeakObject* >(this) ),
3 );
}
-
- return sal_True;
}
//------------------------------------------------------
@@ -986,10 +983,6 @@ void SAL_CALL OCommonEmbeddedObject::breakLink( const uno::Reference< embed::XSt
m_xParentStorage = xStorage;
m_aEntryName = sEntName;
- // the object should be based on the storage ??? TODO
- if ( bElExists && !xStorage->isStorageElement( sEntName ) )
- throw io::IOException(); // TODO access denied
-
// for linked object it means that it becomes embedded object
// the document must switch it's persistence also
diff --git a/embeddedobj/source/inc/commonembobj.hxx b/embeddedobj/source/inc/commonembobj.hxx
index c0046f60e039..86db331f5bb8 100644
--- a/embeddedobj/source/inc/commonembobj.hxx
+++ b/embeddedobj/source/inc/commonembobj.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: commonembobj.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: mav $ $Date: 2003-11-04 14:30:20 $
+ * last change: $Author: mav $ $Date: 2003-11-14 15:24:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -275,7 +275,7 @@ public:
::com::sun::star::uno::Exception,
::com::sun::star::uno::RuntimeException );
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getSupportedVerbs()
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::embed::VerbDescr > SAL_CALL getSupportedVerbs()
throw ( ::com::sun::star::embed::WrongStateException,
::com::sun::star::uno::RuntimeException );
@@ -326,7 +326,7 @@ public:
// XEmbedPersist
- virtual sal_Bool SAL_CALL setPersistentEntry(
+ virtual void SAL_CALL setPersistentEntry(
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
const ::rtl::OUString& sEntName,
sal_Int32 nEntryConnectionMode,
diff --git a/embeddedobj/source/msole/olecomponent.cxx b/embeddedobj/source/msole/olecomponent.cxx
index 8ca0b7292fd1..80a4cd55f8e5 100644
--- a/embeddedobj/source/msole/olecomponent.cxx
+++ b/embeddedobj/source/msole/olecomponent.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: olecomponent.cxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: mav $ $Date: 2003-11-13 17:01:13 $
+ * last change: $Author: mav $ $Date: 2003-11-14 15:24:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -312,9 +312,15 @@ OleComponent::OleComponent( const uno::Reference< lang::XMultiServiceFactory >&
, m_nAdvConn( 0 )
, m_nSupportedFormat( 0 )
, m_nSupportedMedium( 0 )
+, m_bOleInitialized( sal_False )
{
OSL_ENSURE( m_pUnoOleObject, "No owner object is provided!" );
+ HRESULT hr = OleInitialize( NULL );
+ OSL_ENSURE( hr == S_OK || hr == S_FALSE, "The ole can not be successfuly initialized\n" );
+ if ( hr == S_OK || hr == S_FALSE )
+ m_bOleInitialized = sal_True;
+
m_pOleWrapClientSite = new OleWrapperClientSite( (OleComponent*)this );
m_pOleWrapClientSite->AddRef();
@@ -352,6 +358,9 @@ OleComponent::~OleComponent()
delete m_pInterfaceContainer;
m_pInterfaceContainer = NULL;
}
+
+ if ( m_bOleInitialized )
+ OleUninitialize();
}
//----------------------------------------------
@@ -654,8 +663,6 @@ uno::Sequence< embed::VerbDescr > OleComponent::GetVerbList()
if( !m_aVerbList.getLength() )
{
- // InitOle(); // TODO: makes sence to do in a central place
-
CComPtr< IEnumOLEVERB > pEnum;
if( SUCCEEDED( m_pOleObject->EnumVerbs( &pEnum ) ) )
{
diff --git a/embeddedobj/source/msole/olecomponent.hxx b/embeddedobj/source/msole/olecomponent.hxx
index 4bc5da963a2b..d199ebd4a406 100644
--- a/embeddedobj/source/msole/olecomponent.hxx
+++ b/embeddedobj/source/msole/olecomponent.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: olecomponent.hxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: mav $ $Date: 2003-11-13 17:01:32 $
+ * last change: $Author: mav $ $Date: 2003-11-14 15:24:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -146,6 +146,7 @@ class OleComponent : public ::cppu::WeakImplHelper2< ::com::sun::star::util::XCl
sal_uInt16 m_nSupportedFormat;
sal_uInt32 m_nSupportedMedium;
+ sal_Bool m_bOleInitialized;
sal_Bool InitializeObject_Impl( sal_uInt32 nIconHandle );
diff --git a/embeddedobj/test/Container1/EmbedContApp.java b/embeddedobj/test/Container1/EmbedContApp.java
index e8e1084dc987..8712fc9b3f3e 100644
--- a/embeddedobj/test/Container1/EmbedContApp.java
+++ b/embeddedobj/test/Container1/EmbedContApp.java
@@ -5,6 +5,7 @@ import java.net.*;
import java.io.*;
import javax.swing.JOptionPane;
+import javax.swing.Timer;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XSingleServiceFactory;
@@ -30,7 +31,7 @@ import com.sun.star.io.XTruncate;
import com.sun.star.embed.*;
-public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClient
+public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClient, ActionListener
{
private XMultiServiceFactory m_xServiceFactory;
@@ -48,6 +49,24 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
private boolean m_bLinkObj = false;
private String m_aLinkURI;
+ private byte[] m_pActionsList;
+ private int m_nActionsNumber;
+ private Timer m_aTimer;
+ private boolean m_bDestroyed = false;
+
+// Constants
+ private final byte DESTROY = 1;
+ private final byte MOUSE_CLICKED = 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;
+
+// Methods
public EmbedContApp( Frame aFrame, XMultiServiceFactory xServiceFactory )
{
m_aFrame = aFrame;
@@ -61,6 +80,12 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
m_aToolkit = Toolkit.getDefaultToolkit();
+ m_pActionsList = new byte[200];
+ m_nActionsNumber = 0;
+
+ m_aTimer = new Timer( 100, this );
+ m_aTimer.start();
+
// Get a menu bar.
MenuBar aMenuBar = m_aFrame.getMenuBar();
if( aMenuBar == null )
@@ -108,6 +133,401 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
addMouseListener( this );
}
+ public void actionPerformed( ActionEvent evt )
+ {
+ synchronized( this )
+ {
+ for( int nInd = 0; nInd < m_nActionsNumber; nInd++ )
+ {
+ // TODO: execute m_pActionsList[ nInd ] operation
+ if ( m_pActionsList[ nInd ] == DESTROY )
+ {
+ // free all resources
+ clearObjectAndStorage();
+ m_bDestroyed = true;
+ }
+ else if ( m_pActionsList[ nInd ] == MOUSE_CLICKED )
+ {
+ // activate object if exists and not active
+ if ( m_xEmbedObj != null )
+ {
+ try {
+ m_xEmbedObj.changeState( EmbedStates.EMBED_ACTIVE );
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame, ex, "Exception on mouse click", JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+ else if ( m_pActionsList[ nInd ] == NEW_DOCUMENT )
+ {
+ // clear everything
+ clearObjectAndStorage();
+
+ repaint();
+ }
+ else if ( m_pActionsList[ nInd ] == SAVE_AS )
+ {
+ // open SaveAs dialog and store
+
+ 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 = aFile.toURI().toASCIIString();
+ try {
+ saveObject();
+
+ if ( m_bLinkObj )
+ storeLinkToStorage();
+
+ saveStorageAsFileURI( aFileURI );
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ ex,
+ "Exception in SaveAsMenuItem:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+ }
+ else
+ JOptionPane.showMessageDialog( m_aFrame, "No document is embedded!", "Error:", JOptionPane.ERROR_MESSAGE );
+ }
+ else if ( m_pActionsList[ nInd ] == OPEN_FILE )
+ {
+ // clear everything
+ clearObjectAndStorage();
+
+ // 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 = aFile.toURI().toASCIIString();
+
+ // load from specified file
+ loadFileURI( aFileURI );
+
+ if ( m_xEmbedObj != null )
+ {
+ try {
+ m_xEmbedObj.setClientSite( EmbedContApp.this );
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ ex,
+ "Exception in OpenFileMenuItem:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+ }
+
+ generateNewImage();
+ repaint();
+ }
+ else if ( m_pActionsList[ nInd ] == SAVE )
+ {
+ // if has persistance 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 oned file!",
+ "Error:",
+ JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+
+ try {
+ saveObject();
+
+ if ( m_bLinkObj )
+ storeLinkToStorage();
+
+ XTransactedObject xTransact = (XTransactedObject)UnoRuntime.queryInterface( XTransactedObject.class,
+ m_xStorage );
+ if ( xTransact != null )
+ xTransact.commit();
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ ex,
+ "Exception during save operation in SaveMenuItem:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ else
+ {
+ 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 = aFile.toURI().toASCIIString();
+ try {
+ saveObject();
+
+ if ( m_bLinkObj )
+ storeLinkToStorage();
+
+ saveStorageAsFileURI( aFileURI );
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ ex,
+ "Exception during 'save as' operation in SaveMenuItem:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+ }
+ }
+ else
+ JOptionPane.showMessageDialog( m_aFrame, "No document is embedded!", "Error:", JOptionPane.ERROR_MESSAGE );
+ }
+ else if ( m_pActionsList[ nInd ] == NEW_OBJECT )
+ {
+ // remove current object an init a new one
+ clearObjectAndStorage();
+
+ 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] );
+
+ if ( selectedValue != null )
+ {
+ m_xStorage = createTempStorage();
+
+ if ( m_xStorage != null )
+ m_xEmbedObj = createEmbedObject( selectedValue );
+ else
+ JOptionPane.showMessageDialog( m_aFrame,
+ "Can't create temporary storage!",
+ "Error:",
+ JOptionPane.ERROR_MESSAGE );
+
+
+ if ( m_xEmbedObj != null )
+ {
+ try {
+ m_xEmbedObj.setClientSite( EmbedContApp.this );
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ ex,
+ "Exception in NewObjectMenuItem:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+
+ generateNewImage();
+ repaint();
+ }
+ else if ( m_pActionsList[ nInd ] == OBJECT_FROM_FILE )
+ {
+ // first remove current object
+ clearObjectAndStorage();
+
+ // 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 = aFile.toURI().toASCIIString();
+ m_xStorage = createTempStorage();
+
+ if ( m_xStorage != null )
+ m_xEmbedObj = loadEmbedObject( aFileURI );
+
+ if ( m_xEmbedObj != null )
+ {
+ try {
+ m_xEmbedObj.setClientSite( EmbedContApp.this );
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ ex,
+ "Exception in LoadObjectMenuItem:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+ }
+
+ generateNewImage();
+ repaint();
+ }
+ else if ( m_pActionsList[ nInd ] == LINK_FROM_FILE )
+ {
+ // first remove current object
+ clearObjectAndStorage();
+
+ // 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 )
+ {
+ m_xStorage = createTempStorage();
+
+ String aFileName = aFileDialog.getDirectory() + aFileDialog.getFile();
+ File aFile = new File( aFileName );
+ if ( aFile != null )
+ {
+ // create object from specified file
+ String aFileURI = aFile.toURI().toASCIIString();
+
+ m_xEmbedObj = createLinkObject( aFileURI );
+
+ if ( m_xEmbedObj != null )
+ {
+ m_aLinkURI = aFileURI;
+ m_bLinkObj = true;
+
+ try {
+ m_xEmbedObj.setClientSite( EmbedContApp.this );
+ }
+ catch( Exception ex )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ ex,
+ "Exception in LinkObjectMenuItem:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+ }
+
+ generateNewImage();
+ repaint();
+ }
+ else if ( m_pActionsList[ nInd ] == CONVERT_LINK_TO_OBJECT )
+ {
+ if ( !m_bLinkObj )
+ {
+ JOptionPane.showMessageDialog( m_aFrame, "The object is not a link!", "Error:", JOptionPane.ERROR_MESSAGE );
+ return;
+ }
+
+ 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
+ JOptionPane.showMessageDialog( m_aFrame,
+ "No XLinkageSupport in ConvertLink... !",
+ "Error:",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ catch( Exception e1 )
+ {
+ JOptionPane.showMessageDialog( m_aFrame,
+ e1,
+ "Exception in ConvertLinkToEmbed:try 1 :",
+ JOptionPane.ERROR_MESSAGE );
+ }
+ }
+ }
+ }
+ else
+ {
+ System.out.println( "Unknoun action is requested: " + m_pActionsList[nInd] + "\n" );
+ }
+ }
+
+ m_nActionsNumber = 0;
+ }
+ }
+
+ public void actionRegister( byte nActionID )
+ {
+ synchronized( this )
+ {
+ if ( m_nActionsNumber < 199
+ && ( m_nActionsNumber == 0 || m_pActionsList[ m_nActionsNumber - 1 ] != DESTROY ) )
+ m_pActionsList[ m_nActionsNumber++ ] = nActionID;
+ }
+ }
+
+ public void destroy()
+ {
+ // redirect the call through the timer and call super.destroy();
+ actionRegister( DESTROY );
+
+ 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 );
@@ -186,17 +606,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
{
if( e.getModifiers() == InputEvent.BUTTON1_MASK )
{
- // activate object if exists and not active
- if ( m_xEmbedObj != null )
- {
- try {
- m_xEmbedObj.changeState( EmbedStates.EMBED_ACTIVE );
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame, ex, "Exception on mouse click", JOptionPane.ERROR_MESSAGE );
- }
- }
+ actionRegister( MOUSE_CLICKED );
}
}
@@ -247,10 +657,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- // clear everything
- clearObjectAndStorage();
-
- repaint();
+ actionRegister( NEW_DOCUMENT );
}
}
@@ -264,40 +671,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- // open SaveAs dialog and store
-
- 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 = aFile.toURI().toASCIIString();
- try {
- saveObject();
-
- if ( m_bLinkObj )
- storeLinkToStorage();
-
- saveStorageAsFileURI( aFileURI );
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- ex,
- "Exception in SaveAsMenuItem:",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- }
- }
- else
- JOptionPane.showMessageDialog( m_aFrame, "No document is embedded!", "Error:", JOptionPane.ERROR_MESSAGE );
+ actionRegister( SAVE_AS );
}
}
@@ -311,42 +685,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- // clear everything
- clearObjectAndStorage();
-
- // 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 = aFile.toURI().toASCIIString();
-
- // load from specified file
- loadFileURI( aFileURI );
-
- if ( m_xEmbedObj != null )
- {
- try {
- m_xEmbedObj.setClientSite( EmbedContApp.this );
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- ex,
- "Exception in OpenFileMenuItem:",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- }
- }
-
- generateNewImage();
- repaint();
+ actionRegister( OPEN_FILE );
}
}
@@ -360,73 +699,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- // if has persistance 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 oned file!",
- "Error:",
- JOptionPane.ERROR_MESSAGE );
- return;
- }
-
- try {
- saveObject();
-
- if ( m_bLinkObj )
- storeLinkToStorage();
-
- XTransactedObject xTransact = (XTransactedObject)UnoRuntime.queryInterface( XTransactedObject.class,
- m_xStorage );
- if ( xTransact != null )
- xTransact.commit();
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- ex,
- "Exception during save operation in SaveMenuItem:",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- else
- {
- 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 = aFile.toURI().toASCIIString();
- try {
- saveObject();
-
- if ( m_bLinkObj )
- storeLinkToStorage();
-
- saveStorageAsFileURI( aFileURI );
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- ex,
- "Exception during 'save as' operation in SaveMenuItem:",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- }
- }
- }
- else
- JOptionPane.showMessageDialog( m_aFrame, "No document is embedded!", "Error:", JOptionPane.ERROR_MESSAGE );
+ actionRegister( SAVE );
}
}
@@ -440,51 +713,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- // remove current object an init a new one
- clearObjectAndStorage();
-
- 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" };
-
- String selectedValue = (String)JOptionPane.showInputDialog( null, "DocumentType", "Select",
- JOptionPane.INFORMATION_MESSAGE, null,
- possibleValues, possibleValues[0] );
-
- if ( selectedValue != null )
- {
- m_xStorage = createTempStorage();
-
- if ( m_xStorage != null )
- m_xEmbedObj = createEmbedObject( selectedValue );
- else
- JOptionPane.showMessageDialog( m_aFrame,
- "Can't create temporary storage!",
- "Error:",
- JOptionPane.ERROR_MESSAGE );
-
-
- if ( m_xEmbedObj != null )
- {
- try {
- m_xEmbedObj.setClientSite( EmbedContApp.this );
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- ex,
- "Exception in NewObjectMenuItem:",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- }
-
- generateNewImage();
- repaint();
+ actionRegister( NEW_OBJECT );
}
}
@@ -498,43 +727,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- // first remove current object
- clearObjectAndStorage();
-
- // 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 = aFile.toURI().toASCIIString();
- m_xStorage = createTempStorage();
-
- if ( m_xStorage != null )
- m_xEmbedObj = loadEmbedObject( aFileURI );
-
- if ( m_xEmbedObj != null )
- {
- try {
- m_xEmbedObj.setClientSite( EmbedContApp.this );
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- ex,
- "Exception in LoadObjectMenuItem:",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- }
- }
-
- generateNewImage();
- repaint();
+ actionRegister( OBJECT_FROM_FILE );
}
}
@@ -548,46 +741,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- // first remove current object
- clearObjectAndStorage();
-
- // 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 )
- {
- m_xStorage = createTempStorage();
-
- String aFileName = aFileDialog.getDirectory() + aFileDialog.getFile();
- File aFile = new File( aFileName );
- if ( aFile != null )
- {
- // create object from specified file
- String aFileURI = aFile.toURI().toASCIIString();
-
- m_xEmbedObj = createLinkObject( aFileURI );
-
- if ( m_xEmbedObj != null )
- {
- m_aLinkURI = aFileURI;
- m_bLinkObj = true;
-
- try {
- m_xEmbedObj.setClientSite( EmbedContApp.this );
- }
- catch( Exception ex )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- ex,
- "Exception in LinkObjectMenuItem:",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- }
- }
-
- generateNewImage();
- repaint();
+ actionRegister( LINK_FROM_FILE );
}
}
@@ -601,45 +755,7 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
public void actionPerformed( ActionEvent e )
{
- if ( !m_bLinkObj )
- {
- JOptionPane.showMessageDialog( m_aFrame, "The object is not a link!", "Error:", JOptionPane.ERROR_MESSAGE );
- return;
- }
-
- 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
- JOptionPane.showMessageDialog( m_aFrame,
- "No XLinkageSupport in ConvertLink... !",
- "Error:",
- JOptionPane.ERROR_MESSAGE );
- }
- catch( Exception e1 )
- {
- JOptionPane.showMessageDialog( m_aFrame,
- e1,
- "Exception in ConvertLinkToEmbed:try 1 :",
- JOptionPane.ERROR_MESSAGE );
- }
- }
- }
+ actionRegister( CONVERT_LINK_TO_OBJECT );
}
}
@@ -698,6 +814,13 @@ public class EmbedContApp extends Applet implements MouseListener, XEmbeddedClie
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 )
{
diff --git a/embeddedobj/util/makefile.mk b/embeddedobj/util/makefile.mk
index ed1f6c9af70a..93e5aceda317 100644
--- a/embeddedobj/util/makefile.mk
+++ b/embeddedobj/util/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.2 $
+# $Revision: 1.3 $
#
-# last change: $Author: mav $ $Date: 2003-10-29 08:32:00 $
+# last change: $Author: mav $ $Date: 2003-11-14 15:24:28 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -88,12 +88,27 @@ SHL1OBJS= \
$(SLO)$/closepreventer.obj\
$(SLO)$/intercept.obj
+SHL1OBJS+= \
+ $(SLO)$/olecomponent.obj\
+ $(SLO)$/olepersist.obj\
+ $(SLO)$/oleembed.obj\
+ $(SLO)$/olevisual.obj\
+ $(SLO)$/olemisc.obj\
+ $(SLO)$/olewrapclient.obj\
+ $(SLO)$/advisesink.obj
+
SHL1STDLIBS=\
$(SALLIB)\
$(CPPULIB)\
$(CPPUHELPERLIB)
+SHL1STDLIBS +=\
+ ole32.lib\
+ gdi32.lib\
+ uuid.lib\
+ oleaut32.lib
+
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME= $(SHL1TARGET)