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