1// ************************************************************* 2// 3// Licensed to the Apache Software Foundation (ASF) under one 4// or more contributor license agreements. See the NOTICE file 5// distributed with this work for additional information 6// regarding copyright ownership. The ASF licenses this file 7// to you under the Apache License, Version 2.0 (the 8// "License"); you may not use this file except in compliance 9// with the License. You may obtain a copy of the License at 10// 11// http://www.apache.org/licenses/LICENSE-2.0 12// 13// Unless required by applicable law or agreed to in writing, 14// software distributed under the License is distributed on an 15// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16// KIND, either express or implied. See the License for the 17// specific language governing permissions and limitations 18// under the License. 19// 20// ************************************************************* 21//this script acts as a handler for the buttons in the Highlight dialog 22importClass(Packages.com.sun.star.uno.UnoRuntime); 23importClass(Packages.com.sun.star.uno.Type); 24importClass(Packages.com.sun.star.uno.AnyConverter); 25 26importClass(Packages.com.sun.star.awt.XButton); 27importClass(Packages.com.sun.star.awt.XControl); 28importClass(Packages.com.sun.star.awt.ActionEvent); 29importClass(Packages.com.sun.star.awt.XControlModel); 30importClass(Packages.com.sun.star.awt.XControlContainer); 31importClass(Packages.com.sun.star.awt.XDialog); 32importClass(Packages.com.sun.star.awt.XTextComponent); 33 34importClass(Packages.com.sun.star.util.XReplaceable); 35importClass(Packages.com.sun.star.util.XReplaceDescriptor); 36importClass(Packages.com.sun.star.util.XPropertyReplace); 37 38importClass(Packages.com.sun.star.beans.XPropertySet); 39importClass(Packages.com.sun.star.beans.PropertyValue); 40 41// Scripting Framework DialogFactory class 42importClass(Packages.com.sun.star.script.framework.browse.DialogFactory); 43 44// Get the ActionEvent object from the ARGUMENTS list 45event = ARGUMENTS[0]; 46 47// Each argument is of type Any so we must use the AnyConverter class to 48// convert it into the interface or primitive type we expect 49button = AnyConverter.toObject(new Type(XButton), event.Source); 50 51// We can now query for the model of the button and get its properties 52control = UnoRuntime.queryInterface(XControl, button); 53cmodel = control.getModel(); 54pset = UnoRuntime.queryInterface(XPropertySet, cmodel); 55 56if (pset.getPropertyValue("Label").equals("Exit")) 57{ 58 // We can get the XDialog in which this control appears by calling 59 // getContext() on the XControl interface 60 xDialog = UnoRuntime.queryInterface( 61 XDialog, control.getContext()); 62 63 // Close the dialog 64 xDialog.endExecute(); 65} 66else 67{ 68 // We can get the list of controls for this dialog by calling 69 // getContext() on the XControl interface of the button 70 controls = UnoRuntime.queryInterface( 71 XControlContainer, control.getContext()); 72 73 // Now get the text field control from the list 74 textField = 75 UnoRuntime.queryInterface( 76 XTextComponent, controls.getControl("HighlightTextField")); 77 78 searchKey = textField.getText(); 79 80 // highlight the text in red 81 red = java.awt.Color.red.getRGB(); 82 83 replaceable = 84 UnoRuntime.queryInterface(XReplaceable, XSCRIPTCONTEXT.getDocument()); 85 86 descriptor = replaceable.createReplaceDescriptor(); 87 88 // Gets a XPropertyReplace object for altering the properties 89 // of the replaced text 90 xPropertyReplace = UnoRuntime.queryInterface(XPropertyReplace, descriptor); 91 92 // Sets the replaced text property fontweight value to Bold 93 wv = new PropertyValue("CharWeight", -1, 94 new java.lang.Float(Packages.com.sun.star.awt.FontWeight.BOLD), 95 Packages.com.sun.star.beans.PropertyState.DIRECT_VALUE); 96 97 // Sets the replaced text property color value to RGB parameter 98 cv = new PropertyValue("CharColor", -1, 99 new java.lang.Integer(red), 100 Packages.com.sun.star.beans.PropertyState.DIRECT_VALUE); 101 102 // Apply the properties 103 props = new Array; 104 props[0] = cv; 105 props[1] = wv; 106 107 try { 108 xPropertyReplace.setReplaceAttributes(props); 109 110 // Only matches whole words and case sensitive 111 descriptor.setPropertyValue( 112 "SearchCaseSensitive", new java.lang.Boolean(true)); 113 descriptor.setPropertyValue("SearchWords", new java.lang.Boolean(true)); 114 115 // Replaces all instances of searchKey with new Text properties 116 // and gets the number of instances of the searchKey 117 descriptor.setSearchString(searchKey); 118 descriptor.setReplaceString(searchKey); 119 replaceable.replaceAll(descriptor); 120 } 121 catch (e) { 122 java.lang.System.err.println("Error setting up search properties" 123 + e.getMessage()); 124 } 125} 126