Kaydet (Commit) aec29756 authored tarafından Mikhail Voitenko's avatar Mikhail Voitenko

#112923# ole implementation related changes

üst 5ea5c0af
......@@ -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
......@@ -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;
......
......@@ -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
......
......@@ -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,
......
......@@ -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 ) ) )
{
......
......@@ -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 );
......
......@@ -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 )
{
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment