Server IP : 195.201.23.43 / Your IP : 18.218.24.244 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/self/root/lib/libreoffice/share/Scripts/beanshell/Highlight/ |
Upload File : |
/* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ import com.sun.star.uno.UnoRuntime; import com.sun.star.util.XReplaceable; import com.sun.star.util.XReplaceDescriptor; import com.sun.star.util.XPropertyReplace; import com.sun.star.beans.PropertyValue; import com.sun.star.text.XTextDocument; import com.sun.star.script.provider.XScriptContext; int replaceText(searchKey, color, bold) { result = 0; try { // Create an XReplaceable object and an XReplaceDescriptor replaceable = (XReplaceable) UnoRuntime.queryInterface(XReplaceable.class, xTextDocument); descriptor = (XReplaceDescriptor) replaceable.createReplaceDescriptor(); // Gets a XPropertyReplace object for altering the properties // of the replaced text xPropertyReplace = (XPropertyReplace) UnoRuntime.queryInterface(XPropertyReplace.class, descriptor); // Sets the replaced text property fontweight value to Bold or Normal wv = null; if (bold) { wv = new PropertyValue("CharWeight", -1, new Float(com.sun.star.awt.FontWeight.BOLD), com.sun.star.beans.PropertyState.DIRECT_VALUE); } else { wv = new PropertyValue("CharWeight", -1, new Float(com.sun.star.awt.FontWeight.NORMAL), com.sun.star.beans.PropertyState.DIRECT_VALUE); } // Sets the replaced text property color value to RGB color parameter cv = new PropertyValue("CharColor", -1, new Integer(color), com.sun.star.beans.PropertyState.DIRECT_VALUE); // Apply the properties PropertyValue[] props = { cv, wv }; xPropertyReplace.setReplaceAttributes(props); // Only matches whole words and case sensitive descriptor.setPropertyValue("SearchCaseSensitive", new Boolean(true)); descriptor.setPropertyValue("SearchWords", new Boolean(true)); // Replaces all instances of searchKey with new Text properties // and gets the number of instances of the searchKey descriptor.setSearchString(searchKey); descriptor.setReplaceString(searchKey); result = replaceable.replaceAll(descriptor); } catch (Exception e) { } return result; } searchKey = ""; // The XSCRIPTCONTEXT variable is of type XScriptContext and is available to // all BeanShell scripts executed by the Script Framework xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, XSCRIPTCONTEXT.getDocument()); // Create a JButton and add an ActionListener // When clicked the value for the searchKey is read and passed to replaceText myListener = new ActionListener() { actionPerformed(ActionEvent e) { searchKey = findTextBox.getText(); if(searchKey.equalsIgnoreCase("")) { JOptionPane.showMessageDialog(null, "No text entered for search", "No text", JOptionPane.INFORMATION_MESSAGE); } else { // highlight the text in red cRed = new Color(255, 0, 0); red = cRed.getRGB(); num = replaceText(searchKey, red, true); if(num > 0) { int response = JOptionPane.showConfirmDialog(null, searchKey + " was found " + num + " times\nDo you wish to keep the text highlighted?", "Confirm highlight", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (response == 1) { cBlack = new Color(255, 255, 255); black = cBlack.getRGB(); replaceText(searchKey, black, false); } } else { JOptionPane.showMessageDialog(null, "No matches were found", "Not found", JOptionPane.INFORMATION_MESSAGE); } } } }; exitListener = new ActionListener() { actionPerformed(ActionEvent e) { frame.dispose(); } }; searchButton = new JButton("Highlight"); searchButton.addActionListener(myListener); exitButton = new JButton("Exit"); exitButton.addActionListener(exitListener); buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout()); buttonPanel.add(searchButton); buttonPanel.add(exitButton); // Create a JPanel containing one JTextField for the search text. searchPanel = new JPanel(); searchPanel.setLayout(new FlowLayout()); findTextBox = new JTextField(20); findWhat = new JLabel("Find What: "); searchPanel.add(findWhat); searchPanel.add(findTextBox); // Create frame and add a window listener frame = new JFrame("Highlight Text"); frame.setSize(350,130); frame.setLocation(430,430); frame.setResizable(false); // Add the panel and button to the frame frame.getContentPane().setLayout(new GridLayout(2,1,10,10)); frame.getContentPane().add(searchPanel); frame.getContentPane().add(buttonPanel); frame.setVisible(true); frame.pack();Private