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 Jagielski//this script acts as a handler for the buttons in the Highlight dialog 22*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.uno.UnoRuntime); 23*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.uno.Type); 24*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.uno.AnyConverter); 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XButton); 27*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XControl); 28*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.ActionEvent); 29*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XControlModel); 30*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XControlContainer); 31*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XDialog); 32*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.awt.XTextComponent); 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.util.XReplaceable); 35*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.util.XReplaceDescriptor); 36*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.util.XPropertyReplace); 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.beans.XPropertySet); 39*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.beans.PropertyValue); 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski// Scripting Framework DialogFactory class 42*b1cdbd2cSJim JagielskiimportClass(Packages.com.sun.star.script.framework.browse.DialogFactory); 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski// Get the ActionEvent object from the ARGUMENTS list 45*b1cdbd2cSJim Jagielskievent = ARGUMENTS[0]; 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski// Each argument is of type Any so we must use the AnyConverter class to 48*b1cdbd2cSJim Jagielski// convert it into the interface or primitive type we expect 49*b1cdbd2cSJim Jagielskibutton = AnyConverter.toObject(new Type(XButton), event.Source); 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski// We can now query for the model of the button and get its properties 52*b1cdbd2cSJim Jagielskicontrol = UnoRuntime.queryInterface(XControl, button); 53*b1cdbd2cSJim Jagielskicmodel = control.getModel(); 54*b1cdbd2cSJim Jagielskipset = UnoRuntime.queryInterface(XPropertySet, cmodel); 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielskiif (pset.getPropertyValue("Label").equals("Exit")) 57*b1cdbd2cSJim Jagielski{ 58*b1cdbd2cSJim Jagielski // We can get the XDialog in which this control appears by calling 59*b1cdbd2cSJim Jagielski // getContext() on the XControl interface 60*b1cdbd2cSJim Jagielski xDialog = UnoRuntime.queryInterface( 61*b1cdbd2cSJim Jagielski XDialog, control.getContext()); 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski // Close the dialog 64*b1cdbd2cSJim Jagielski xDialog.endExecute(); 65*b1cdbd2cSJim Jagielski} 66*b1cdbd2cSJim Jagielskielse 67*b1cdbd2cSJim Jagielski{ 68*b1cdbd2cSJim Jagielski // We can get the list of controls for this dialog by calling 69*b1cdbd2cSJim Jagielski // getContext() on the XControl interface of the button 70*b1cdbd2cSJim Jagielski controls = UnoRuntime.queryInterface( 71*b1cdbd2cSJim Jagielski XControlContainer, control.getContext()); 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski // Now get the text field control from the list 74*b1cdbd2cSJim Jagielski textField = 75*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( 76*b1cdbd2cSJim Jagielski XTextComponent, controls.getControl("HighlightTextField")); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski searchKey = textField.getText(); 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski // highlight the text in red 81*b1cdbd2cSJim Jagielski red = java.awt.Color.red.getRGB(); 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski replaceable = 84*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XReplaceable, XSCRIPTCONTEXT.getDocument()); 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski descriptor = replaceable.createReplaceDescriptor(); 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski // Gets a XPropertyReplace object for altering the properties 89*b1cdbd2cSJim Jagielski // of the replaced text 90*b1cdbd2cSJim Jagielski xPropertyReplace = UnoRuntime.queryInterface(XPropertyReplace, descriptor); 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski // Sets the replaced text property fontweight value to Bold 93*b1cdbd2cSJim Jagielski wv = new PropertyValue("CharWeight", -1, 94*b1cdbd2cSJim Jagielski new java.lang.Float(Packages.com.sun.star.awt.FontWeight.BOLD), 95*b1cdbd2cSJim Jagielski Packages.com.sun.star.beans.PropertyState.DIRECT_VALUE); 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski // Sets the replaced text property color value to RGB parameter 98*b1cdbd2cSJim Jagielski cv = new PropertyValue("CharColor", -1, 99*b1cdbd2cSJim Jagielski new java.lang.Integer(red), 100*b1cdbd2cSJim Jagielski Packages.com.sun.star.beans.PropertyState.DIRECT_VALUE); 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski // Apply the properties 103*b1cdbd2cSJim Jagielski props = new Array; 104*b1cdbd2cSJim Jagielski props[0] = cv; 105*b1cdbd2cSJim Jagielski props[1] = wv; 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski try { 108*b1cdbd2cSJim Jagielski xPropertyReplace.setReplaceAttributes(props); 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski // Only matches whole words and case sensitive 111*b1cdbd2cSJim Jagielski descriptor.setPropertyValue( 112*b1cdbd2cSJim Jagielski "SearchCaseSensitive", new java.lang.Boolean(true)); 113*b1cdbd2cSJim Jagielski descriptor.setPropertyValue("SearchWords", new java.lang.Boolean(true)); 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski // Replaces all instances of searchKey with new Text properties 116*b1cdbd2cSJim Jagielski // and gets the number of instances of the searchKey 117*b1cdbd2cSJim Jagielski descriptor.setSearchString(searchKey); 118*b1cdbd2cSJim Jagielski descriptor.setReplaceString(searchKey); 119*b1cdbd2cSJim Jagielski replaceable.replaceAll(descriptor); 120*b1cdbd2cSJim Jagielski } 121*b1cdbd2cSJim Jagielski catch (e) { 122*b1cdbd2cSJim Jagielski java.lang.System.err.println("Error setting up search properties" 123*b1cdbd2cSJim Jagielski + e.getMessage()); 124*b1cdbd2cSJim Jagielski } 125*b1cdbd2cSJim Jagielski} 126