Antoine POURCHEZ wrote:
Hello,
I want to load and next update an ODT in a java program. To do that, i
write this code :
Object vDesktop = OoBootstrap.createDesktop();
XComponentLoader vCompLoader = (XComponentLoader)
UnoRuntime.queryInterface(XComponentLoader.class, vDesktop);
String vUrl = "_file://".concat(((File_)
pSrc).toURL().toExternalForm().substring(5));
PropertyValue vProps[] = new PropertyValue[1];
vProps[0] = new PropertyValue();
vProps[0].Name = "Hidden";
vProps[0].Value = Boolean.TRUE;
Object vDocSrc = vCompLoader.loadComponentFromURL(vUrl,
"_blank", 0, vProps);
XFrame vFrameDoc = ((XModel)
UnoRuntime.queryInterface(XModel.class,
vDocSrc)).getCurrentController().getFrame();
XDispatchHelper vDipatchHelper =
(XDispatchHelper)UnoRuntime.queryInterface(XDispatchHelper.class,
OoBootstrap.createService("com.sun.star.frame.DispatchHelper"));
vDipatchHelper.executeDispatch((XDispatchProvider)UnoRuntime.queryInterface(XDispatchProvider.class,
vFrameDoc), ".uno:UpdateAllIndexes", "", 0, null);
In some big documents, this generate a crash of openOffice : i think
that the document is not totaly load when "executeDispatch" is execute.
The document is loaded completely after loadComponentFromURL() returned
the model. But might be there are some asynchronous layout routines.
On the other side such asynchronous layout must deal with the situation
that it will be disturbed from outside. And further you loaded the
document with HIDDEN=TRUE so there is no need for such operations after
loading.
For me it looks like a "simple .-)" bug. If it can be reproduced by you
with some special documents, please file an issue attaching one or two
test documents.
Can XComponentLoader generate an event when all the document is load?
There is already such event. But it's not generated by the component
loader itself. It's generated by the document, which was loaded and will
be broadcasted by another singleton instance named
com.sun.star.frame.GlobalEventBroadcaster (which implements the
interface css.document.XEventBroadcaster.
The callback css.document.XEventListener.notifyEvent() contains a
reference to the model. For loading (or creating empty) documents exists
different events.
OnNew => for creating a new empty (visible) doc
OnLoad => for loading an existing doc (visible) from disc
OnCreate => for creating an empty (hidden) doc
OnLoadFinished => for loading an existing doc (hidden) from disc
Thank you.
Antoine POURCHEZ
[EMAIL PROTECTED]
Regards
Andreas
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]