1*b1cdbd2cSJim Jagielski// ************************************************************* 2*b1cdbd2cSJim Jagielski// 3*b1cdbd2cSJim Jagielski// Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski// or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski// distributed with this work for additional information 6*b1cdbd2cSJim Jagielski// regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski// to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski// "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski// with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski// 11*b1cdbd2cSJim Jagielski// http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski// 13*b1cdbd2cSJim Jagielski// Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski// software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski// KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski// specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski// under the License. 19*b1cdbd2cSJim Jagielski// 20*b1cdbd2cSJim Jagielski// ************************************************************* 21*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.uno.UnoRuntime); 22*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.lang.XMultiComponentFactory); 23*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XDialogProvider); 24*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XDialog); 25*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.uno.Exception); 26*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.script.provider.XScriptContext); 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim JagielskiimportClass(java.lang.Thread); 29*b1cdbd2cSJim JagielskiimportClass(java.lang.System); 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielskifunction tryLoadingLibrary( xmcf, context, name ) 32*b1cdbd2cSJim Jagielski{ 33*b1cdbd2cSJim Jagielski try 34*b1cdbd2cSJim Jagielski { 35*b1cdbd2cSJim Jagielski obj = xmcf.createInstanceWithContext( 36*b1cdbd2cSJim Jagielski "com.sun.star.script.Application" + name + "LibraryContainer", 37*b1cdbd2cSJim Jagielski context.getComponentContext()); 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski xLibraryContainer = UnoRuntime.queryInterface(XLibraryContainer, obj); 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski System.err.println("Got XLibraryContainer"); 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski serviceObj = context.getComponentContext().getValueByName( 44*b1cdbd2cSJim Jagielski "/singletons/com.sun.star.util.theMacroExpander"); 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski xme = AnyConverter.toObject(new Type(XMacroExpander), serviceObj); 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski bootstrapName = "bootstraprc"; 49*b1cdbd2cSJim Jagielski if (System.getProperty("os.name").startsWith("Windows")) 50*b1cdbd2cSJim Jagielski { 51*b1cdbd2cSJim Jagielski bootstrapName = "bootstrap.ini"; 52*b1cdbd2cSJim Jagielski } 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski libURL = xme.expandMacros( 55*b1cdbd2cSJim Jagielski "${$OOO_BASE_DIR/program/" + bootstrapName + "::BaseInstallation}" + 56*b1cdbd2cSJim Jagielski "/share/basic/ScriptBindingLibrary/" + 57*b1cdbd2cSJim Jagielski name.toLowerCase() + ".xlb/"); 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski System.err.println("libURL is: " + libURL); 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski xLibraryContainer.createLibraryLink( 62*b1cdbd2cSJim Jagielski "ScriptBindingLibrary", libURL, false); 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski System.err.println("liblink created"); 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski } 67*b1cdbd2cSJim Jagielski catch (e) 68*b1cdbd2cSJim Jagielski { 69*b1cdbd2cSJim Jagielski System.err.println("Got an exception loading lib: " + e.getMessage()); 70*b1cdbd2cSJim Jagielski return false; 71*b1cdbd2cSJim Jagielski } 72*b1cdbd2cSJim Jagielski return true; 73*b1cdbd2cSJim Jagielski} 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielskifunction getDialogProvider() 76*b1cdbd2cSJim Jagielski{ 77*b1cdbd2cSJim Jagielski // UNO awt components of the Highlight dialog 78*b1cdbd2cSJim Jagielski //get the XMultiServiceFactory 79*b1cdbd2cSJim Jagielski xmcf = XSCRIPTCONTEXT.getComponentContext().getServiceManager(); 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski args = new Array; 82*b1cdbd2cSJim Jagielski //get the XDocument from the context 83*b1cdbd2cSJim Jagielski args[0] = XSCRIPTCONTEXT.getDocument(); 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski //try to create the DialogProvider 86*b1cdbd2cSJim Jagielski try { 87*b1cdbd2cSJim Jagielski obj = xmcf.createInstanceWithArgumentsAndContext( 88*b1cdbd2cSJim Jagielski "com.sun.star.awt.DialogProvider", args, 89*b1cdbd2cSJim Jagielski XSCRIPTCONTEXT.getComponentContext()); 90*b1cdbd2cSJim Jagielski } 91*b1cdbd2cSJim Jagielski catch (e) { 92*b1cdbd2cSJim Jagielski System.err.println("Error getting DialogProvider object"); 93*b1cdbd2cSJim Jagielski return null; 94*b1cdbd2cSJim Jagielski } 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski return UnoRuntime.queryInterface(XDialogProvider, obj); 97*b1cdbd2cSJim Jagielski} 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski//get the DialogProvider 100*b1cdbd2cSJim JagielskixDialogProvider = getDialogProvider(); 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielskiif (xDialogProvider != null) 103*b1cdbd2cSJim Jagielski{ 104*b1cdbd2cSJim Jagielski //try to create the Highlight dialog (found in the ScriptBinding library) 105*b1cdbd2cSJim Jagielski try 106*b1cdbd2cSJim Jagielski { 107*b1cdbd2cSJim Jagielski findDialog = xDialogProvider.createDialog("vnd.sun.star.script:" + 108*b1cdbd2cSJim Jagielski "ScriptBindingLibrary.Highlight?location=application"); 109*b1cdbd2cSJim Jagielski if( findDialog == null ) 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski if (tryLoadingLibrary(xmcf, XSCRIPTCONTEXT, "Dialog") == false || 112*b1cdbd2cSJim Jagielski tryLoadingLibrary(xmcf, XSCRIPTCONTEXT, "Script") == false) 113*b1cdbd2cSJim Jagielski { 114*b1cdbd2cSJim Jagielski System.err.println("Error loading ScriptBindingLibrary"); 115*b1cdbd2cSJim Jagielski } 116*b1cdbd2cSJim Jagielski else 117*b1cdbd2cSJim Jagielski { 118*b1cdbd2cSJim Jagielski // try to create the Highlight dialog (found in the 119*b1cdbd2cSJim Jagielski // ScriptBindingLibrary) 120*b1cdbd2cSJim Jagielski findDialog = xDialogProvider.createDialog("vnd.sun.star.script:" + 121*b1cdbd2cSJim Jagielski "ScriptBindingLibrary.Highlight?location=application"); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski } 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski //launch the dialog 126*b1cdbd2cSJim Jagielski if ( findDialog != null ) 127*b1cdbd2cSJim Jagielski { 128*b1cdbd2cSJim Jagielski findDialog.execute(); 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski catch (e) { 132*b1cdbd2cSJim Jagielski System.err.println("Got exception on first creating dialog: " + 133*b1cdbd2cSJim Jagielski e.getMessage()); 134*b1cdbd2cSJim Jagielski } 135*b1cdbd2cSJim Jagielski} 136