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 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski //*************************************************************************** 25*b1cdbd2cSJim Jagielski // comment: Step 1: get the Desktop object from the office 26*b1cdbd2cSJim Jagielski // Step 2: open an empty text document 27*b1cdbd2cSJim Jagielski // Step 3: enter a example text 28*b1cdbd2cSJim Jagielski // Step 4: replace some english spelled words with US spelled 29*b1cdbd2cSJim Jagielski //*************************************************************************** 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski public class TextReplace { 35*b1cdbd2cSJim Jagielski main(String args[])36*b1cdbd2cSJim Jagielski public static void main(String args[]) { 37*b1cdbd2cSJim Jagielski // You need the desktop to create a document 38*b1cdbd2cSJim Jagielski // The getDesktop method does the UNO bootstrapping, gets the 39*b1cdbd2cSJim Jagielski // remote servie manager and the desktop object. 40*b1cdbd2cSJim Jagielski com.sun.star.frame.XDesktop xDesktop = null; 41*b1cdbd2cSJim Jagielski xDesktop = getDesktop(); 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski com.sun.star.text.XTextDocument xTextDocument = 44*b1cdbd2cSJim Jagielski createTextdocument( xDesktop ); 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski createExampleData( xTextDocument ); 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski String mBritishWords[] = {"colour", "neighbour", "centre", "behaviour", 49*b1cdbd2cSJim Jagielski "metre", "through" }; 50*b1cdbd2cSJim Jagielski String mUSWords[] = { "color", "neighbor", "center", "behavior", 51*b1cdbd2cSJim Jagielski "meter", "thru" }; 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski try { 54*b1cdbd2cSJim Jagielski com.sun.star.util.XReplaceDescriptor xReplaceDescr = null; 55*b1cdbd2cSJim Jagielski com.sun.star.util.XSearchDescriptor xSearchDescriptor = null; 56*b1cdbd2cSJim Jagielski com.sun.star.util.XReplaceable xReplaceable = null; 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski xReplaceable = (com.sun.star.util.XReplaceable) 59*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( 60*b1cdbd2cSJim Jagielski com.sun.star.util.XReplaceable.class, xTextDocument); 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski // You need a descriptor to set properies for Replace 63*b1cdbd2cSJim Jagielski xReplaceDescr = (com.sun.star.util.XReplaceDescriptor) 64*b1cdbd2cSJim Jagielski xReplaceable.createReplaceDescriptor(); 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski System.out.println("Change all occurrences of ..."); 67*b1cdbd2cSJim Jagielski for( int iArrayCounter = 0; iArrayCounter < mBritishWords.length; 68*b1cdbd2cSJim Jagielski iArrayCounter++ ) 69*b1cdbd2cSJim Jagielski { 70*b1cdbd2cSJim Jagielski System.out.println(mBritishWords[iArrayCounter] + 71*b1cdbd2cSJim Jagielski " -> " + mUSWords[iArrayCounter]); 72*b1cdbd2cSJim Jagielski // Set the properties the replace method need 73*b1cdbd2cSJim Jagielski xReplaceDescr.setSearchString(mBritishWords[iArrayCounter] ); 74*b1cdbd2cSJim Jagielski xReplaceDescr.setReplaceString(mUSWords[iArrayCounter] ); 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski // Replace all words 77*b1cdbd2cSJim Jagielski xReplaceable.replaceAll( xReplaceDescr ); 78*b1cdbd2cSJim Jagielski } 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski } 81*b1cdbd2cSJim Jagielski catch( Exception e) { 82*b1cdbd2cSJim Jagielski e.printStackTrace(System.err); 83*b1cdbd2cSJim Jagielski } 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski System.out.println("Done"); 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski System.exit(0); 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski } 90*b1cdbd2cSJim Jagielski createExampleData( com.sun.star.text.XTextDocument xTextDocument )91*b1cdbd2cSJim Jagielski protected static void createExampleData( 92*b1cdbd2cSJim Jagielski com.sun.star.text.XTextDocument xTextDocument ) 93*b1cdbd2cSJim Jagielski { 94*b1cdbd2cSJim Jagielski // Create textdocument and insert example text 95*b1cdbd2cSJim Jagielski com.sun.star.text.XTextCursor xTextCursor = null; 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski try { 98*b1cdbd2cSJim Jagielski xTextCursor = (com.sun.star.text.XTextCursor) 99*b1cdbd2cSJim Jagielski xTextDocument.getText().createTextCursor(); 100*b1cdbd2cSJim Jagielski com.sun.star.text.XText xText = (com.sun.star.text.XText) 101*b1cdbd2cSJim Jagielski xTextDocument.getText(); 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski xText.insertString( xTextCursor, 104*b1cdbd2cSJim Jagielski "He nervously looked all around. Suddenly he saw his ", false ); 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski xText.insertString( xTextCursor, "neighbour ", true ); 107*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet xCPS = (com.sun.star.beans.XPropertySet) 108*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( 109*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet.class, xTextCursor); 110*b1cdbd2cSJim Jagielski // Set the word blue 111*b1cdbd2cSJim Jagielski xCPS.setPropertyValue( "CharColor", new Integer( 255 ) ); 112*b1cdbd2cSJim Jagielski // Go to last character 113*b1cdbd2cSJim Jagielski xTextCursor.gotoEnd(false); 114*b1cdbd2cSJim Jagielski xCPS.setPropertyValue( "CharColor", new Integer( 0 ) ); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski xText.insertString( xTextCursor, "in the alley. Like lightening he darted off to the left and disappeared between the two warehouses almost falling over the trash can lying in the ", false ); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski xText.insertString( xTextCursor, "centre ", true ); 119*b1cdbd2cSJim Jagielski xCPS = (com.sun.star.beans.XPropertySet)UnoRuntime.queryInterface( 120*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet.class, xTextCursor); 121*b1cdbd2cSJim Jagielski // Set the word blue 122*b1cdbd2cSJim Jagielski xCPS.setPropertyValue( "CharColor", new Integer( 255 ) ); 123*b1cdbd2cSJim Jagielski // Go to last character 124*b1cdbd2cSJim Jagielski xTextCursor.gotoEnd(false); 125*b1cdbd2cSJim Jagielski xCPS.setPropertyValue( "CharColor", new Integer( 0 ) ); 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski xText.insertString( xTextCursor, "of the sidewalk.", false ); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski xText.insertControlCharacter( xTextCursor, 130*b1cdbd2cSJim Jagielski com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, false ); 131*b1cdbd2cSJim Jagielski xText.insertString( xTextCursor, "He tried to nervously tap his way along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the way he had come.", false ); 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski xTextCursor.gotoStart(false); 134*b1cdbd2cSJim Jagielski } 135*b1cdbd2cSJim Jagielski catch( Exception e) { 136*b1cdbd2cSJim Jagielski e.printStackTrace(System.err); 137*b1cdbd2cSJim Jagielski } 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski } 140*b1cdbd2cSJim Jagielski getDesktop()141*b1cdbd2cSJim Jagielski public static com.sun.star.frame.XDesktop getDesktop() { 142*b1cdbd2cSJim Jagielski com.sun.star.frame.XDesktop xDesktop = null; 143*b1cdbd2cSJim Jagielski com.sun.star.lang.XMultiComponentFactory xMCF = null; 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski try { 146*b1cdbd2cSJim Jagielski com.sun.star.uno.XComponentContext xContext = null; 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski // get the remote office component context 149*b1cdbd2cSJim Jagielski xContext = com.sun.star.comp.helper.Bootstrap.bootstrap(); 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski // get the remote office service manager 152*b1cdbd2cSJim Jagielski xMCF = xContext.getServiceManager(); 153*b1cdbd2cSJim Jagielski if( xMCF != null ) { 154*b1cdbd2cSJim Jagielski System.out.println("Connected to a running office ..."); 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski Object oDesktop = xMCF.createInstanceWithContext( 157*b1cdbd2cSJim Jagielski "com.sun.star.frame.Desktop", xContext); 158*b1cdbd2cSJim Jagielski xDesktop = (com.sun.star.frame.XDesktop) UnoRuntime.queryInterface( 159*b1cdbd2cSJim Jagielski com.sun.star.frame.XDesktop.class, oDesktop); 160*b1cdbd2cSJim Jagielski } 161*b1cdbd2cSJim Jagielski else 162*b1cdbd2cSJim Jagielski System.out.println( "Can't create a desktop. No connection, no remote office servicemanager available!" ); 163*b1cdbd2cSJim Jagielski } 164*b1cdbd2cSJim Jagielski catch( Exception e) { 165*b1cdbd2cSJim Jagielski e.printStackTrace(System.err); 166*b1cdbd2cSJim Jagielski System.exit(1); 167*b1cdbd2cSJim Jagielski } 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski return xDesktop; 171*b1cdbd2cSJim Jagielski } 172*b1cdbd2cSJim Jagielski createTextdocument( com.sun.star.frame.XDesktop xDesktop )173*b1cdbd2cSJim Jagielski public static com.sun.star.text.XTextDocument createTextdocument( 174*b1cdbd2cSJim Jagielski com.sun.star.frame.XDesktop xDesktop ) 175*b1cdbd2cSJim Jagielski { 176*b1cdbd2cSJim Jagielski com.sun.star.text.XTextDocument aTextDocument = null; 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski try { 179*b1cdbd2cSJim Jagielski com.sun.star.lang.XComponent xComponent = CreateNewDocument(xDesktop, 180*b1cdbd2cSJim Jagielski "swriter"); 181*b1cdbd2cSJim Jagielski aTextDocument = (com.sun.star.text.XTextDocument) 182*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( 183*b1cdbd2cSJim Jagielski com.sun.star.text.XTextDocument.class, xComponent); 184*b1cdbd2cSJim Jagielski } 185*b1cdbd2cSJim Jagielski catch( Exception e) { 186*b1cdbd2cSJim Jagielski e.printStackTrace(System.err); 187*b1cdbd2cSJim Jagielski } 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski return aTextDocument; 190*b1cdbd2cSJim Jagielski } 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski CreateNewDocument( com.sun.star.frame.XDesktop xDesktop, String sDocumentType )193*b1cdbd2cSJim Jagielski protected static com.sun.star.lang.XComponent CreateNewDocument( 194*b1cdbd2cSJim Jagielski com.sun.star.frame.XDesktop xDesktop, 195*b1cdbd2cSJim Jagielski String sDocumentType ) 196*b1cdbd2cSJim Jagielski { 197*b1cdbd2cSJim Jagielski String sURL = "private:factory/" + sDocumentType; 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski com.sun.star.lang.XComponent xComponent = null; 200*b1cdbd2cSJim Jagielski com.sun.star.frame.XComponentLoader xComponentLoader = null; 201*b1cdbd2cSJim Jagielski com.sun.star.beans.PropertyValue xValues[] = 202*b1cdbd2cSJim Jagielski new com.sun.star.beans.PropertyValue[1]; 203*b1cdbd2cSJim Jagielski com.sun.star.beans.PropertyValue xEmptyArgs[] = 204*b1cdbd2cSJim Jagielski new com.sun.star.beans.PropertyValue[0]; 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski try { 207*b1cdbd2cSJim Jagielski xComponentLoader = (com.sun.star.frame.XComponentLoader) 208*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( 209*b1cdbd2cSJim Jagielski com.sun.star.frame.XComponentLoader.class, xDesktop); 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski xComponent = xComponentLoader.loadComponentFromURL( 212*b1cdbd2cSJim Jagielski sURL, "_blank", 0, xEmptyArgs); 213*b1cdbd2cSJim Jagielski } 214*b1cdbd2cSJim Jagielski catch( Exception e) { 215*b1cdbd2cSJim Jagielski e.printStackTrace(System.err); 216*b1cdbd2cSJim Jagielski } 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski return xComponent ; 219*b1cdbd2cSJim Jagielski } 220*b1cdbd2cSJim Jagielski } 221