Here is the Snippet:
<?xml version="1.0"?>
<!--
$RCSfile: $
last change: $Revision: $ $Author: $ $Date: $
(c)2003 by the copyright holders listed with the
author-tags.
If no explicit copyright holder is mentioned with a certain
author,
the author him-/herself is the copyright holder. All rights
reserved.
Public Documentation License Notice:
The contents of this Documentation are subject to the
Public Documentation License Version 1.0 (the
"License");
you may only use this Documentation if you comply with
the terms of this License. A copy of the License is
available at http://ww
w.openoffice.org/licenses/PDL.html
The Original Documentation can be found in the CVS archives
of openoffice.org at the place specified by RCSfile: in this
header.
The Initial Writer(s) of the Original Documentation are
listed
with the author-tags below.
The Contributor(s) are listed with the author-tags below
without the marker for being an initial author.
All Rights Reserved.
-->
<snippet language="Java"
application="Office">
<keywords>
<keyword>Dispatch</keyword>
<keyword>UNO Command</keyword>
<keyword>Java</keyword>
</keywords>
<authors>
</authors>
<question heading="Java Dispatch">
</question>
<answer>
</answer>
<versions>
<version number="2.0.x"
status="tested"/>
</versions>
<operating-systems>
<operating-system name="All"/>
</operating-systems>
<changelog>
<change author-id=""
date="2007-07-19">Initial
version</change>
</changelog>
<code>
/* Thanks to everyone in the API Mailing List
* for the help. In special to Jan Füssel who provided the
sample code
* that evolved into this class.
*/
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).
*It was tested under Ooo 2.1, and works <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>.
*
* param xsc a XScriptContext object. In OOo macros,
there is always
one available called XSCRIPTCONTEXT.
* param unoUrl describes the feature which should be
supported by
internally used dispatch object
* param targetFrame specifies the frame which should be
the target
for this request
* param searchFlags optional search parameter for
finding the frame
if no special TargetFrameName was used
* param 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.
* param xsc a XScriptContext object. In OOo macros,
there is always
one available called XSCRIPTCONTEXT.
* param 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>
</snippet>
------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribe api.openoffice.org
For additional commands, e-mail: dev-help api.openoffice.org
|