Hi, everyone. I am making the changes to the code. locking the
controllers and using data arrays. As for dispatch, I modified the
code Jan sent a bit, and turned it into the class below. Can anyone
give it a look to see if its right?

<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]

Reply via email to