Hi Denis,
Denis Camargo wrote:
I would like to thank everyone for the hints and tips and code
supplied. I have deployed a new version of my Java macro, and its
performance has improved by staggering 3,500%. The class in my last
post is working fine, I am able to activate the autofilters now
easily.
I would like to suggest adding that class to the code snippets
project. How can I do it?
you can find infos on the main site
http://codesnippets.services.openoffice.org/index.xml. there you will
find also a link to Paolo's useful SnippetCreator extension.
Juergen
<code>
import com.sun.star.beans.PropertyValue;
import com.sun.star.frame.XDispatchHelper;
import com.sun.star.frame.XDispatchProvider;
import com.sun.star.frame.XFrame;
import com.sun.star.frame.XModel;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.script.provider.XScriptContext;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
/** This class might work within OpenOffice.org Java / BeanShell
Macros.<br>
* it has static methods only (so no object creation is required by
the caller)<br>
* OOo makes available a XSriptContext object called XSCRIPTCONTEXT in
the macro.<br>
* This object is the starting point for the method calls.<br>
*Please note that the <a
href="http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XDispatchHelper.html">
* interface XDispatchHelper</a> has a return value. If that is of any
interest to you, change the return values.
*<br><br>Disclaimer:<br>
*<p> This class is provided as is (no warranties of any kind), and
contains draft code.
*It was not tested and probably is ripe with all kinds of bugs. <br>
*It is meant as an <strong>example</strong> on how to work your way
into the XDispatchHelper
*interface and execute a UNO dispatch in a Java / BeanShell macro
context. </p>
*/
public class DispatchUNOCommand {
/** Creates a new instance of DispatchUNOCommand <br>
* There is no need to do it, since everything is static anyway.
*/
private DispatchUNOCommand() { }
/** Executes a dispatch, taking the same params the interface
* <a
href="http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XDispatchHelper.html">
* interface XDispatchHelper</a>.
*
[EMAIL PROTECTED] xsc a XScriptContext object. In OOo macros, there is
always one available called XSCRIPTCONTEXT.
[EMAIL PROTECTED] unoUrl describes the feature which should be supported by
internally used dispatch object
[EMAIL PROTECTED] targetFrame specifies the frame which should be the target
for this request
[EMAIL PROTECTED] searchFlags optional search parameter for finding the
frame if no special TargetFrameName was used
[EMAIL PROTECTED] arguments optional arguments for this request. They depend
on the real implementation of the dispatch object.
*/
public static void execute(XScriptContext xsc, String unoUrl,
String targetFrame,
int searchFlags, PropertyValue[] arguments) throws
com.sun.star.uno.Exception {
// get the model and frame from the script context. No need to
go to the desktop.
XModel xm = xsc.getDocument();
final XFrame xf = xm.getCurrentController().getFrame();
// we could nest these two below in the "helper" creation below.
XComponentContext xcc = xsc.getComponentContext();
XMultiComponentFactory xmcf = xcc.getServiceManager();
final Object helper = xmcf.createInstanceWithContext
("com.sun.star.frame.DispatchHelper", xcc);
XDispatchHelper xdh = (XDispatchHelper)UnoRuntime.queryInterface
(XDispatchHelper.class, helper);
XDispatchProvider xdp = (XDispatchProvider)UnoRuntime.queryInterface
(XDispatchProvider.class, xf);
xdh.executeDispatch(xdp, unoUrl, targetFrame, searchFlags , arguments);
}
/** Executes a dispatch taking only the URL param of
* <a
href="http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XDispatchHelper.html">
* interface XDispatchHelper</a> . <br>
* The call assumes targetFrame = "", searchFlags = 0 and empty arguments.
[EMAIL PROTECTED] xsc a XScriptContext object. In OOo macros, there is
always one available called XSCRIPTCONTEXT.
[EMAIL PROTECTED] unoUrl describes the feature which should be supported by
internally used dispatch object
*/
public static void execute(XScriptContext xsc, String unoUrl)
throws com.sun.star.uno.Exception {
execute(xsc, unoUrl, "", 0, new PropertyValue[0]);
}
}
</code>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]