List Info

Thread: Re: Some Calc Java Macro Issues:




Re: Some Calc Java Macro Issues:
user name
2007-07-19 07:58:31
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-unsubscribeapi.openoffice.org
For additional commands, e-mail: dev-helpapi.openoffice.org


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )