2004/09/16 14:26:45 dfoster 1.2.22.4: #i33670# Rename the context variable to XSCRIPTCONTEXT 2004/09/14 15:27:51 dfoster 1.2.22.3: #i30252# Fix the Highlight examples so that (a) they try to load the library if they can't get the dialog on first attempt, (b) the dialog contains bindings to the BeanShell handler code. 2004/08/03 16:12:49 dfoster 1.2.22.2: #i32502# 2004/07/23 09:55:17 dfoster 1.2.22.1: #i30606# Add descriptions to code in examples.
125 lines
4.1 KiB
Plaintext
125 lines
4.1 KiB
Plaintext
// this script serves as an example of how to launch a Basic Dialog
|
|
// from a script
|
|
import com.sun.star.uno.UnoRuntime;
|
|
import com.sun.star.script.provider.XScriptContext;
|
|
import com.sun.star.lang.XMultiComponentFactory;
|
|
import com.sun.star.lang.EventObject;
|
|
import com.sun.star.uno.Type;
|
|
import com.sun.star.uno.AnyConverter;
|
|
import com.sun.star.text.XTextDocument;
|
|
import com.sun.star.beans.PropertyValue;
|
|
import com.sun.star.script.XLibraryContainer;
|
|
import com.sun.star.awt.*;
|
|
import com.sun.star.util.*;
|
|
|
|
boolean tryLoadingLibrary( xmcf, context, name )
|
|
{
|
|
try
|
|
{
|
|
obj = xmcf.createInstanceWithContext(
|
|
"com.sun.star.script.Application" + name + "LibraryContainer",
|
|
context.getComponentContext());
|
|
|
|
xLibraryContainer = (XLibraryContainer)
|
|
UnoRuntime.queryInterface(XLibraryContainer.class, obj);
|
|
|
|
System.err.println("Got XLibraryContainer");
|
|
|
|
serviceObj = context.getComponentContext().getValueByName(
|
|
"/singletons/com.sun.star.util.theMacroExpander");
|
|
|
|
xme = (XMacroExpander) AnyConverter.toObject(
|
|
new Type(XMacroExpander.class), serviceObj);
|
|
|
|
bootstrapName = "bootstraprc";
|
|
if (System.getProperty("os.name").startsWith("Windows"))
|
|
{
|
|
bootstrapName = "bootstrap.ini";
|
|
}
|
|
|
|
libURL = xme.expandMacros(
|
|
"${$SYSBINDIR/" + bootstrapName + "::BaseInstallation}" +
|
|
"/share/basic/ScriptBindingLibrary/" +
|
|
name.toLowerCase() + ".xlb/");
|
|
|
|
System.err.println("libURL is: " + libURL);
|
|
|
|
xLibraryContainer.createLibraryLink(
|
|
"ScriptBindingLibrary", libURL, false);
|
|
|
|
System.err.println("liblink created");
|
|
|
|
}
|
|
catch (com.sun.star.uno.Exception e)
|
|
{
|
|
System.err.println("Got an exception loading lib: " + e.getMessage());
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// get the XMultiComponentFactory from the XSCRIPTCONTEXT
|
|
XMultiComponentFactory xmcf =
|
|
XSCRIPTCONTEXT.getComponentContext().getServiceManager();
|
|
|
|
Object[] args = new Object[1];
|
|
args[0] = XSCRIPTCONTEXT.getDocument();
|
|
|
|
Object obj;
|
|
try {
|
|
// try to create an instance of the DialogProvider
|
|
obj = xmcf.createInstanceWithArgumentsAndContext(
|
|
"com.sun.star.awt.DialogProvider", args,
|
|
XSCRIPTCONTEXT.getComponentContext());
|
|
/*
|
|
obj = xmcf.createInstanceWithContext(
|
|
"com.sun.star.awt.DialogProvider",
|
|
XSCRIPTCONTEXT.getComponentContext());
|
|
*/
|
|
}
|
|
catch (com.sun.star.uno.Exception e) {
|
|
System.err.println("Error getting DialogProvider object");
|
|
return 0;
|
|
}
|
|
|
|
// get the XDialogProvider interface from the object created above
|
|
XDialogProvider xDialogProvider = (XDialogProvider)
|
|
UnoRuntime.queryInterface(XDialogProvider.class, obj);
|
|
|
|
System.err.println("Got DialogProvider, now get dialog");
|
|
|
|
try {
|
|
// try to create the Highlight dialog (found in the ScriptBindingLibrary)
|
|
findDialog = xDialogProvider.createDialog("vnd.sun.star.script:" +
|
|
"ScriptBindingLibrary.Highlight?location=application");
|
|
if( findDialog == null )
|
|
{
|
|
if (tryLoadingLibrary(xmcf, XSCRIPTCONTEXT, "Dialog") == false ||
|
|
tryLoadingLibrary(xmcf, XSCRIPTCONTEXT, "Script") == false)
|
|
{
|
|
System.err.println("Error loading ScriptBindingLibrary");
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
// try to create the Highlight dialog (found in the ScriptBindingLibrary)
|
|
findDialog = xDialogProvider.createDialog("vnd.sun.star.script:" +
|
|
"ScriptBindingLibrary.Highlight?location=application");
|
|
}
|
|
}
|
|
}
|
|
catch (java.lang.Exception e) {
|
|
System.err.println("Got exception on first creating dialog: " +
|
|
e.getMessage());
|
|
}
|
|
|
|
// execute the dialog in a new thread (so that this script can finish)
|
|
Thread t = new Thread() {
|
|
public void run() {
|
|
findDialog.execute();
|
|
}
|
|
};
|
|
t.start();
|
|
|
|
return 0;
|