I went a bit more further?
The answer to the previous question:
is it right to query the XContextMenuInterception interface from the controller of the TextDocument?
is
"Yes".
The registering is OK and works.
But I still have the problem of where to place it.
My intention was to use the
OnLoadFinished event as described in the code I submitted in the previous post but I met the following problem/
1- the constructor of my add-on is called a number of times corresponding to the number of commands in the add-on and this at each loading of a new document.
It seems that this problem also occurs with
a quasi empty skeleton provided by the NetBeans IDE.
2- After the last call of the constructor the loading of the document occurs but I get a great number of event that triggers the Event Listener so that even with a filter on the name event and a flag to prevents multiple registerings, things are very disordered.
In the following code, the System.Out.println() lines help understanding what happens.
Code: Select all
public class MyEventListener implements XEventListener {
public void notifyEvent(com.sun.star.document.EventObject arg0) {
System.out.println(arg0.EventName+" notifying");
if (arg0.EventName.contentEquals("OnLoadFinished") &&
(ContextMenuInterceptorRegistered == false)) {
System.out.println(arg0.EventName+" registering");
ContextMenuInterceptorRegistered = true;
XComponent xCurrentComponent = xdesktop.getCurrentComponent();
XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(
XTextDocument.class, xCurrentComponent);
XModel xModel = (XModel) UnoRuntime.queryInterface(XModel.class, xTextDocument);
XController xController = xModel.getCurrentController();
xCTMIntercept = (XContextMenuInterception) UnoRuntime.queryInterface(
XContextMenuInterception.class, xController);
m_ContextMenuInterceptor = new ContextMenuInterceptor();
xCTMIntercept.registerContextMenuInterceptor(m_ContextMenuInterceptor);
System.out.println("valeur de m_ContextMenuInterceptor " + m_ContextMenuInterceptor.toString() +
"boolean " + Boolean.valueOf(ContextMenuInterceptorRegistered));//debug
} else {
System.out.println("value of Event name different from OnLoadFinished, boolean flag " +
Boolean.valueOf(ContextMenuInterceptorRegistered));
}
}
Assuming that the boolean flag ContextMenuInterceptorRegistered is set to false in the constructor of the addon, here is the out put.
Code: Select all
setting up UNO environment ...
build UNO idl files finished
uno-idl-compile:
init:
deps-jar:
init:
deps-jar:
compile:
jar:
compile:
Building jar: /home/jaaf/NetBeansProjects/Java/Jilt/dist/Jilt.jar
Updating property file: /home/jaaf/NetBeansProjects/Java/Jilt/build/regclass.properties
Updating property file: /home/jaaf/NetBeansProjects/Java/Jilt/build/regclass.properties
jar:
Building jar: /home/jaaf/NetBeansProjects/Java/Jilt/dist/Jilt.jar
images:
Created dir: /home/jaaf/NetBeansProjects/Java/Jilt/build/img/images
Copying 10 files to /home/jaaf/NetBeansProjects/Java/Jilt/build/img/images
registry:
Created dir: /home/jaaf/NetBeansProjects/Java/Jilt/build/cpreg/registry
Copying 4 files to /home/jaaf/NetBeansProjects/Java/Jilt/build/cpreg/registry
Building zip: /home/jaaf/NetBeansProjects/Java/Jilt/dist/Jilt.oxt
Updating zip: /home/jaaf/NetBeansProjects/Java/Jilt/dist/Jilt.oxt
creating UNO extension package ...
Updating zip: /home/jaaf/NetBeansProjects/Java/Jilt/dist/Jilt.oxt
uno-package:
debugging UNO extension package ...
/usr/lib/openoffice/program/unopkg gui -f /home/jaaf/NetBeansProjects/Java/Jilt/dist/Jilt.oxt
starting the Office with ...
user installation: file:///home/jaaf/NetBeansProjects/Java/Jilt/build/soffice_debug
debug options: "-Xdebug" "-Xrunjdwp:transport=dt_socket,address=jaaf-desktop:37532"
/usr/lib/openoffice/program/soffice
Picked up JAVA_TOOL_OPTIONS: "-Xdebug" "-Xrunjdwp:transport=dt_socket,address=jaaf-desktop:37532"
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag false
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag false
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag false
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag false
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag false
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnNew notifying
value of Event name different from OnLoadFinished, boolean flag false
OnNew notifying
value of Event name different from OnLoadFinished, boolean flag false
OnNew notifying
value of Event name different from OnLoadFinished, boolean flag false
OnNew notifying
value of Event name different from OnLoadFinished, boolean flag false
OnNew notifying
value of Event name different from OnLoadFinished, boolean flag false
OnNew notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareViewClosing notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareViewClosing notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareViewClosing notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareViewClosing notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareViewClosing notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareViewClosing notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareUnload notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareUnload notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareUnload notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareUnload notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareUnload notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPrepareUnload notifying
value of Event name different from OnLoadFinished, boolean flag false
OnLoadFinished notifying
OnLoadFinished registering
valeur de m_ContextMenuInterceptor com.zoraldia.openoffice.Jilt$ContextMenuInterceptor@e49d67cboolean true
OnLoadFinished notifying
OnLoadFinished registering
valeur de m_ContextMenuInterceptor com.zoraldia.openoffice.Jilt$ContextMenuInterceptor@1264ab4dboolean true
OnLoadFinished notifying
OnLoadFinished registering
valeur de m_ContextMenuInterceptor com.zoraldia.openoffice.Jilt$ContextMenuInterceptor@245e13adboolean true
OnLoadFinished notifying
OnLoadFinished registering
valeur de m_ContextMenuInterceptor com.zoraldia.openoffice.Jilt$ContextMenuInterceptor@546c585aboolean true
OnLoadFinished notifying
OnLoadFinished registering
valeur de m_ContextMenuInterceptor com.zoraldia.openoffice.Jilt$ContextMenuInterceptor@c5a67c9boolean true
OnLoadFinished notifying
OnLoadFinished registering
valeur de m_ContextMenuInterceptor com.zoraldia.openoffice.Jilt$ContextMenuInterceptor@70453807boolean true
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag true
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag true
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag true
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag true
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag true
OnTitleChanged notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewClosed notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewClosed notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewClosed notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewClosed notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewClosed notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewClosed notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnload notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnload notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnload notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnload notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnload notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnload notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnfocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnfocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnfocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnfocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnfocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnUnfocus notifying
value of Event name different from OnLoadFinished, boolean flag true
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag false
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnFocus notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag false
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag true
OnViewCreated notifying
value of Event name different from OnLoadFinished, boolean flag true
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag false
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag true
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag true
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag true
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag true
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag true
OnPageCountChange notifying
value of Event name different from OnLoadFinished, boolean flag true
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag false
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag false
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag false
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag false
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag false
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag false
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag true
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag true
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag true
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag true
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag true
OnLoad notifying
value of Event name different from OnLoadFinished, boolean flag true
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag false
notifying
value of Event name different from OnLoadFinished, boolean flag true
notifying
value of Event name different from OnLoadFinished, boolean flag true
notifying
value of Event name different from OnLoadFinished, boolean flag true
notifying
value of Event name different from OnLoadFinished, boolean flag true
notifying
value of Event name different from OnLoadFinished, boolean flag true
notifying
value of Event name different from OnLoadFinished, boolean flag true
From this, it can be seen that there are two series of
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
Printed from the constructor of the addon
Printed from Initialize
The first one occurs when opening writer and loading a blank document and the second when manually loading a file.
After that the interception doesn't work. But if a put the code lines behind a menu command after it works but it is tedious for the user.
Has somebody an idea of how to make this work automatically?
Thanks.