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 package util; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import java.util.Hashtable; 26*b1cdbd2cSJim Jagielski // access the implementations via names 27*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 28*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 31*b1cdbd2cSJim Jagielski // staroffice interfaces to provide desktop and componentloader 32*b1cdbd2cSJim Jagielski // and components i.e. spreadsheets, writerdocs etc. 33*b1cdbd2cSJim Jagielski import com.sun.star.frame.XDesktop; 34*b1cdbd2cSJim Jagielski import com.sun.star.frame.XComponentLoader; 35*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 36*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski // name - value pair 39*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 40*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyState; 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski // additional classes required for testcase 43*b1cdbd2cSJim Jagielski import com.sun.star.sheet.*; 44*b1cdbd2cSJim Jagielski import com.sun.star.text.*; 45*b1cdbd2cSJim Jagielski import com.sun.star.container.*; 46*b1cdbd2cSJim Jagielski import com.sun.star.chart.*; 47*b1cdbd2cSJim Jagielski import com.sun.star.drawing.*; 48*b1cdbd2cSJim Jagielski import com.sun.star.awt.*; 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski public class SOfficeFactory { 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski private static Hashtable lookup = new Hashtable(10); 53*b1cdbd2cSJim Jagielski protected XComponentLoader oCLoader; 54*b1cdbd2cSJim Jagielski SOfficeFactory(XMultiServiceFactory xMSF)55*b1cdbd2cSJim Jagielski private SOfficeFactory(XMultiServiceFactory xMSF) { 56*b1cdbd2cSJim Jagielski // get XInterface of Desktop service 57*b1cdbd2cSJim Jagielski Object oInterface; 58*b1cdbd2cSJim Jagielski try { 59*b1cdbd2cSJim Jagielski oInterface = xMSF.createInstance("com.sun.star.frame.Desktop"); 60*b1cdbd2cSJim Jagielski } catch (com.sun.star.uno.Exception e) { 61*b1cdbd2cSJim Jagielski throw new IllegalArgumentException( 62*b1cdbd2cSJim Jagielski "Desktop Service not available"); 63*b1cdbd2cSJim Jagielski } 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski // query the desktop interface and then it's componentloader 66*b1cdbd2cSJim Jagielski XDesktop oDesktop = (XDesktop) UnoRuntime.queryInterface( 67*b1cdbd2cSJim Jagielski XDesktop.class, oInterface); 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski oCLoader = (XComponentLoader) UnoRuntime.queryInterface( 70*b1cdbd2cSJim Jagielski XComponentLoader.class, oDesktop); 71*b1cdbd2cSJim Jagielski } 72*b1cdbd2cSJim Jagielski getFactory(XMultiServiceFactory xMSF)73*b1cdbd2cSJim Jagielski public static SOfficeFactory getFactory(XMultiServiceFactory xMSF) { 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski SOfficeFactory soFactory = (SOfficeFactory) lookup.get(new Integer(xMSF.hashCode()).toString()); 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski if (soFactory == null) { 78*b1cdbd2cSJim Jagielski soFactory = new SOfficeFactory(xMSF); 79*b1cdbd2cSJim Jagielski lookup.put(new Integer(xMSF.hashCode()).toString(), soFactory); 80*b1cdbd2cSJim Jagielski } 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski return soFactory; 83*b1cdbd2cSJim Jagielski } 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski // ********************************************************* 86*b1cdbd2cSJim Jagielski // Document creation. The documents needed are created here. 87*b1cdbd2cSJim Jagielski // ********************************************************* 88*b1cdbd2cSJim Jagielski /** 89*b1cdbd2cSJim Jagielski * method which opens a new TextDocument 90*b1cdbd2cSJim Jagielski * 91*b1cdbd2cSJim Jagielski * @see XTextDocument 92*b1cdbd2cSJim Jagielski */ createTextDoc(String frameName)93*b1cdbd2cSJim Jagielski public XTextDocument createTextDoc(String frameName) 94*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski XComponent oDoc = openDoc("swriter", frameName); 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski if (oDoc != null) { 99*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 100*b1cdbd2cSJim Jagielski return (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, oDoc); 101*b1cdbd2cSJim Jagielski } else { 102*b1cdbd2cSJim Jagielski return null; 103*b1cdbd2cSJim Jagielski } 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski } // finished createTextDoc 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski /** 108*b1cdbd2cSJim Jagielski * method which opens a new TextDocument 109*b1cdbd2cSJim Jagielski * 110*b1cdbd2cSJim Jagielski * @see XTextDocument 111*b1cdbd2cSJim Jagielski */ createTextDoc(String frameName, PropertyValue[] mediaDescriptor)112*b1cdbd2cSJim Jagielski public XTextDocument createTextDoc(String frameName, PropertyValue[] mediaDescriptor) 113*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski XComponent oDoc = openDoc("swriter", frameName, mediaDescriptor); 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski if (oDoc != null) { 118*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 119*b1cdbd2cSJim Jagielski return (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, oDoc); 120*b1cdbd2cSJim Jagielski } else { 121*b1cdbd2cSJim Jagielski return null; 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski } // finished createTextDoc 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski /** 126*b1cdbd2cSJim Jagielski * method which opens a new SpreadsheetDocument 127*b1cdbd2cSJim Jagielski * 128*b1cdbd2cSJim Jagielski * @see XSpreadsheetDocument 129*b1cdbd2cSJim Jagielski */ createCalcDoc(String frameName)130*b1cdbd2cSJim Jagielski public XSpreadsheetDocument createCalcDoc(String frameName) 131*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski XComponent oDoc = openDoc("scalc", frameName); 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski if (oDoc != null) { 136*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 137*b1cdbd2cSJim Jagielski return (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, oDoc); 138*b1cdbd2cSJim Jagielski } else { 139*b1cdbd2cSJim Jagielski return null; 140*b1cdbd2cSJim Jagielski } 141*b1cdbd2cSJim Jagielski } // finished createCalcDoc 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski /** 144*b1cdbd2cSJim Jagielski * method which opens a new SpreadsheetDocument 145*b1cdbd2cSJim Jagielski * 146*b1cdbd2cSJim Jagielski * @see XSpreadsheetDocument 147*b1cdbd2cSJim Jagielski */ createCalcDoc(String frameName, PropertyValue[] mediaDescriptor)148*b1cdbd2cSJim Jagielski public XSpreadsheetDocument createCalcDoc(String frameName, PropertyValue[] mediaDescriptor) 149*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski XComponent oDoc = openDoc("scalc", frameName, mediaDescriptor); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski if (oDoc != null) { 154*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 155*b1cdbd2cSJim Jagielski return (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, oDoc); 156*b1cdbd2cSJim Jagielski } else { 157*b1cdbd2cSJim Jagielski return null; 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski } // finished createCalcDoc 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski /** 162*b1cdbd2cSJim Jagielski * method which opens a new DrawDocument 163*b1cdbd2cSJim Jagielski */ createDrawDoc(String frameName)164*b1cdbd2cSJim Jagielski public XComponent createDrawDoc(String frameName) 165*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski return openDoc("sdraw", frameName); 168*b1cdbd2cSJim Jagielski } // finished createDrawDoc 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski /** 171*b1cdbd2cSJim Jagielski * method which opens a new ImpressDocument 172*b1cdbd2cSJim Jagielski */ 173*b1cdbd2cSJim Jagielski /** 174*b1cdbd2cSJim Jagielski * method which opens a new DrawDocument 175*b1cdbd2cSJim Jagielski */ createDrawDoc(String frameName, PropertyValue[] mediaDescriptor)176*b1cdbd2cSJim Jagielski public XComponent createDrawDoc(String frameName, PropertyValue[] mediaDescriptor) 177*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski return openDoc("sdraw", frameName, mediaDescriptor); 180*b1cdbd2cSJim Jagielski } // finished createDrawDoc 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski /** 183*b1cdbd2cSJim Jagielski * method which opens a new ImpressDocument 184*b1cdbd2cSJim Jagielski */ createImpressDoc(String frameName)185*b1cdbd2cSJim Jagielski public XComponent createImpressDoc(String frameName) 186*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski return openDoc("simpress", frameName); 189*b1cdbd2cSJim Jagielski } // finished createImpressDoc 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski /** 192*b1cdbd2cSJim Jagielski * method which opens a new ImpressDocument 193*b1cdbd2cSJim Jagielski */ createImpressDoc(String frameName, PropertyValue[] mediaDescriptor)194*b1cdbd2cSJim Jagielski public XComponent createImpressDoc(String frameName, PropertyValue[] mediaDescriptor) 195*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski return openDoc("simpress", frameName, mediaDescriptor); 198*b1cdbd2cSJim Jagielski } // finished createImpressDoc 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim Jagielski /** 201*b1cdbd2cSJim Jagielski * method which opens a new MathDocument 202*b1cdbd2cSJim Jagielski */ createMathDoc(String frameName)203*b1cdbd2cSJim Jagielski public XComponent createMathDoc(String frameName) 204*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski return openDoc("smath", frameName); 207*b1cdbd2cSJim Jagielski } // finished createMathDoc 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski /** 210*b1cdbd2cSJim Jagielski * method which opens a new MathDocument 211*b1cdbd2cSJim Jagielski */ createMathDoc(String frameName, PropertyValue[] mediaDescriptor)212*b1cdbd2cSJim Jagielski public XComponent createMathDoc(String frameName, PropertyValue[] mediaDescriptor) 213*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski return openDoc("smath", frameName, mediaDescriptor); 216*b1cdbd2cSJim Jagielski } // finished createMathDoc 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski /** 219*b1cdbd2cSJim Jagielski * method which opens a new ChartDocument 220*b1cdbd2cSJim Jagielski * 221*b1cdbd2cSJim Jagielski * @see XChartDocument 222*b1cdbd2cSJim Jagielski */ createChartDoc(String frameName)223*b1cdbd2cSJim Jagielski public XChartDocument createChartDoc(String frameName) 224*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski // XComponent oDoc = loadDocument( 227*b1cdbd2cSJim Jagielski // util.utils.getFullTestURL("emptyChart.sds")); 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski XComponent oDoc = loadDocument("private:factory/schart"); 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski if (oDoc != null) { 232*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 233*b1cdbd2cSJim Jagielski return (XChartDocument) UnoRuntime.queryInterface(XChartDocument.class, oDoc); 234*b1cdbd2cSJim Jagielski } else { 235*b1cdbd2cSJim Jagielski return null; 236*b1cdbd2cSJim Jagielski } 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski } // finished createChartDoc 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski /** 241*b1cdbd2cSJim Jagielski * creates a simple TextTable defaultet to 2 rows and 2 columns 242*b1cdbd2cSJim Jagielski */ createTextTable(XTextDocument xTextDoc)243*b1cdbd2cSJim Jagielski public static XTextTable createTextTable(XTextDocument xTextDoc) 244*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski TableDsc tDsc = new TableDsc(); 247*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(xTextDoc, tDsc); 248*b1cdbd2cSJim Jagielski 249*b1cdbd2cSJim Jagielski XTextTable oTable = (XTextTable) instCreate.getInstance(); 250*b1cdbd2cSJim Jagielski return oTable; 251*b1cdbd2cSJim Jagielski } 252*b1cdbd2cSJim Jagielski 253*b1cdbd2cSJim Jagielski /** 254*b1cdbd2cSJim Jagielski * creates a TextTable with a specified count of rows and columns 255*b1cdbd2cSJim Jagielski */ createTextTable(XTextDocument xTextDoc, int rows, int columns)256*b1cdbd2cSJim Jagielski public static XTextTable createTextTable(XTextDocument xTextDoc, 257*b1cdbd2cSJim Jagielski int rows, int columns) 258*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski TableDsc tDsc = new TableDsc(rows, columns); 261*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(xTextDoc, tDsc); 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski XTextTable oTable = (XTextTable) instCreate.getInstance(); 264*b1cdbd2cSJim Jagielski return oTable; 265*b1cdbd2cSJim Jagielski } 266*b1cdbd2cSJim Jagielski 267*b1cdbd2cSJim Jagielski /** 268*b1cdbd2cSJim Jagielski * creates a simple TextFrame 269*b1cdbd2cSJim Jagielski * ... to be continued 270*b1cdbd2cSJim Jagielski */ createTextFrame(XTextDocument xTextDoc)271*b1cdbd2cSJim Jagielski public static XTextFrame createTextFrame(XTextDocument xTextDoc) 272*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski FrameDsc tDsc = new FrameDsc(); 275*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(xTextDoc, tDsc); 276*b1cdbd2cSJim Jagielski 277*b1cdbd2cSJim Jagielski XTextFrame oFrame = (XTextFrame) instCreate.getInstance(); 278*b1cdbd2cSJim Jagielski return oFrame; 279*b1cdbd2cSJim Jagielski } 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski /** 282*b1cdbd2cSJim Jagielski * creates a simple TextFrame 283*b1cdbd2cSJim Jagielski * ... to be continued 284*b1cdbd2cSJim Jagielski */ createTextFrame(XTextDocument xTextDoc, int height, int width)285*b1cdbd2cSJim Jagielski public static XTextFrame createTextFrame(XTextDocument xTextDoc, 286*b1cdbd2cSJim Jagielski int height, int width) { 287*b1cdbd2cSJim Jagielski 288*b1cdbd2cSJim Jagielski FrameDsc tDsc = new FrameDsc(height, width); 289*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(xTextDoc, tDsc); 290*b1cdbd2cSJim Jagielski 291*b1cdbd2cSJim Jagielski XTextFrame oFrame = (XTextFrame) instCreate.getInstance(); 292*b1cdbd2cSJim Jagielski return oFrame; 293*b1cdbd2cSJim Jagielski } 294*b1cdbd2cSJim Jagielski insertString(XTextDocument xTextDoc, String cString)295*b1cdbd2cSJim Jagielski public static void insertString(XTextDocument xTextDoc, String cString) 296*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 297*b1cdbd2cSJim Jagielski XText xText = xTextDoc.getText(); 298*b1cdbd2cSJim Jagielski XText oText = (XText) UnoRuntime.queryInterface( 299*b1cdbd2cSJim Jagielski XText.class, xText); 300*b1cdbd2cSJim Jagielski 301*b1cdbd2cSJim Jagielski XTextCursor oCursor = oText.createTextCursor(); 302*b1cdbd2cSJim Jagielski oText.insertString(oCursor, cString, false); 303*b1cdbd2cSJim Jagielski } 304*b1cdbd2cSJim Jagielski insertTextContent(XTextDocument xTextDoc, XTextContent xCont)305*b1cdbd2cSJim Jagielski public static void insertTextContent(XTextDocument xTextDoc, 306*b1cdbd2cSJim Jagielski XTextContent xCont) 307*b1cdbd2cSJim Jagielski throws com.sun.star.lang.IllegalArgumentException { 308*b1cdbd2cSJim Jagielski XText xText = xTextDoc.getText(); 309*b1cdbd2cSJim Jagielski XText oText = (XText) UnoRuntime.queryInterface( 310*b1cdbd2cSJim Jagielski XText.class, xText); 311*b1cdbd2cSJim Jagielski 312*b1cdbd2cSJim Jagielski XTextCursor oCursor = oText.createTextCursor(); 313*b1cdbd2cSJim Jagielski oText.insertTextContent(oCursor, xCont, false); 314*b1cdbd2cSJim Jagielski } 315*b1cdbd2cSJim Jagielski getFirstTableCell( XTextContent oTable)316*b1cdbd2cSJim Jagielski public static com.sun.star.table.XCell getFirstTableCell( 317*b1cdbd2cSJim Jagielski XTextContent oTable) { 318*b1cdbd2cSJim Jagielski 319*b1cdbd2cSJim Jagielski String CellNames[] = ((XTextTable) oTable).getCellNames(); 320*b1cdbd2cSJim Jagielski 321*b1cdbd2cSJim Jagielski com.sun.star.table.XCell oCell = ((XTextTable) oTable).getCellByName( 322*b1cdbd2cSJim Jagielski CellNames[0]); 323*b1cdbd2cSJim Jagielski return oCell; 324*b1cdbd2cSJim Jagielski 325*b1cdbd2cSJim Jagielski } 326*b1cdbd2cSJim Jagielski 327*b1cdbd2cSJim Jagielski /** 328*b1cdbd2cSJim Jagielski * the method createBookmark 329*b1cdbd2cSJim Jagielski */ createBookmark(XTextDocument xTextDoc)330*b1cdbd2cSJim Jagielski public static XTextContent createBookmark(XTextDocument xTextDoc) 331*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 332*b1cdbd2cSJim Jagielski 333*b1cdbd2cSJim Jagielski BookmarkDsc tDsc = new BookmarkDsc(); 334*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(xTextDoc, tDsc); 335*b1cdbd2cSJim Jagielski 336*b1cdbd2cSJim Jagielski XTextContent oBookmark = (XTextContent) instCreate.getInstance(); 337*b1cdbd2cSJim Jagielski return oBookmark; 338*b1cdbd2cSJim Jagielski 339*b1cdbd2cSJim Jagielski } /// finish createBookmark 340*b1cdbd2cSJim Jagielski 341*b1cdbd2cSJim Jagielski /** 342*b1cdbd2cSJim Jagielski * the method createReferenceMark 343*b1cdbd2cSJim Jagielski */ createReferenceMark(XTextDocument xTextDoc)344*b1cdbd2cSJim Jagielski public static XTextContent createReferenceMark(XTextDocument xTextDoc) 345*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 346*b1cdbd2cSJim Jagielski 347*b1cdbd2cSJim Jagielski ReferenceMarkDsc tDsc = new ReferenceMarkDsc(); 348*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(xTextDoc, tDsc); 349*b1cdbd2cSJim Jagielski 350*b1cdbd2cSJim Jagielski XTextContent oReferenceMark = (XTextContent) instCreate.getInstance(); 351*b1cdbd2cSJim Jagielski return oReferenceMark; 352*b1cdbd2cSJim Jagielski 353*b1cdbd2cSJim Jagielski } /// finish createReferenceMark 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim Jagielski /** 356*b1cdbd2cSJim Jagielski * the method createFootnote 357*b1cdbd2cSJim Jagielski */ createFootnote(XTextDocument xTextDoc)358*b1cdbd2cSJim Jagielski public static XTextContent createFootnote(XTextDocument xTextDoc) 359*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 360*b1cdbd2cSJim Jagielski 361*b1cdbd2cSJim Jagielski FootnoteDsc tDsc = new FootnoteDsc(); 362*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(xTextDoc, tDsc); 363*b1cdbd2cSJim Jagielski 364*b1cdbd2cSJim Jagielski XTextContent oFootnote = (XTextContent) instCreate.getInstance(); 365*b1cdbd2cSJim Jagielski return oFootnote; 366*b1cdbd2cSJim Jagielski 367*b1cdbd2cSJim Jagielski } /// finish createFootnote 368*b1cdbd2cSJim Jagielski 369*b1cdbd2cSJim Jagielski /** 370*b1cdbd2cSJim Jagielski * the method create Index 371*b1cdbd2cSJim Jagielski */ createIndex(XTextDocument xTextDoc, String kind)372*b1cdbd2cSJim Jagielski public static XTextContent createIndex(XTextDocument xTextDoc, String kind) 373*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 374*b1cdbd2cSJim Jagielski 375*b1cdbd2cSJim Jagielski XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, 376*b1cdbd2cSJim Jagielski xTextDoc); 377*b1cdbd2cSJim Jagielski 378*b1cdbd2cSJim Jagielski Object oInt = oDocMSF.createInstance(kind); 379*b1cdbd2cSJim Jagielski 380*b1cdbd2cSJim Jagielski XTextContent xTC = (XTextContent) UnoRuntime.queryInterface(XDocumentIndex.class, oInt); 381*b1cdbd2cSJim Jagielski 382*b1cdbd2cSJim Jagielski return xTC; 383*b1cdbd2cSJim Jagielski 384*b1cdbd2cSJim Jagielski } 385*b1cdbd2cSJim Jagielski createSpreadsheet(XSpreadsheetDocument oDoc)386*b1cdbd2cSJim Jagielski public static XSpreadsheet createSpreadsheet(XSpreadsheetDocument oDoc) 387*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 388*b1cdbd2cSJim Jagielski 389*b1cdbd2cSJim Jagielski XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, oDoc); 390*b1cdbd2cSJim Jagielski 391*b1cdbd2cSJim Jagielski Object oInt = oDocMSF.createInstance( 392*b1cdbd2cSJim Jagielski "com.sun.star.sheet.Spreadsheet"); 393*b1cdbd2cSJim Jagielski 394*b1cdbd2cSJim Jagielski XSpreadsheet oSpreadsheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, oInt); 395*b1cdbd2cSJim Jagielski 396*b1cdbd2cSJim Jagielski return oSpreadsheet; 397*b1cdbd2cSJim Jagielski } 398*b1cdbd2cSJim Jagielski getTableCollection(XTextDocument oDoc)399*b1cdbd2cSJim Jagielski public static XIndexAccess getTableCollection(XTextDocument oDoc) { 400*b1cdbd2cSJim Jagielski 401*b1cdbd2cSJim Jagielski XTextTablesSupplier oTTS = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, oDoc); 402*b1cdbd2cSJim Jagielski 403*b1cdbd2cSJim Jagielski XNameAccess oNA = oTTS.getTextTables(); 404*b1cdbd2cSJim Jagielski XIndexAccess oIA = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, oNA); 405*b1cdbd2cSJim Jagielski 406*b1cdbd2cSJim Jagielski return oIA; 407*b1cdbd2cSJim Jagielski } 408*b1cdbd2cSJim Jagielski getUniqueName(XInterface oInterface, String prefix)409*b1cdbd2cSJim Jagielski public static String getUniqueName(XInterface oInterface, String prefix) { 410*b1cdbd2cSJim Jagielski XNameAccess oNameAccess = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, oInterface); 411*b1cdbd2cSJim Jagielski if (oNameAccess == null) { 412*b1cdbd2cSJim Jagielski return null; 413*b1cdbd2cSJim Jagielski } 414*b1cdbd2cSJim Jagielski int i; 415*b1cdbd2cSJim Jagielski for (i = 0; oNameAccess.hasByName(prefix + i); i++) { 416*b1cdbd2cSJim Jagielski } 417*b1cdbd2cSJim Jagielski return prefix + i; 418*b1cdbd2cSJim Jagielski } 419*b1cdbd2cSJim Jagielski createShape(XComponent oDoc, int height, int width, int x, int y, String kind)420*b1cdbd2cSJim Jagielski public XShape createShape(XComponent oDoc, int height, int width, int x, int y, String kind) { 421*b1cdbd2cSJim Jagielski //possible values for kind are 'Ellipse', 'Line' and 'Rectangle' 422*b1cdbd2cSJim Jagielski 423*b1cdbd2cSJim Jagielski ShapeDsc sDsc = new ShapeDsc(height, width, x, y, kind); 424*b1cdbd2cSJim Jagielski InstCreator instCreate = new InstCreator(oDoc, sDsc); 425*b1cdbd2cSJim Jagielski 426*b1cdbd2cSJim Jagielski XShape oShape = (XShape) instCreate.getInstance(); 427*b1cdbd2cSJim Jagielski 428*b1cdbd2cSJim Jagielski return oShape; 429*b1cdbd2cSJim Jagielski 430*b1cdbd2cSJim Jagielski } 431*b1cdbd2cSJim Jagielski 432*b1cdbd2cSJim Jagielski /** 433*b1cdbd2cSJim Jagielski * creates a Diagram wich specified in kind(String) 434*b1cdbd2cSJim Jagielski */ createDiagram(XComponent oDoc, String kind)435*b1cdbd2cSJim Jagielski public XDiagram createDiagram(XComponent oDoc, String kind) { 436*b1cdbd2cSJim Jagielski XInterface oInterface = null; 437*b1cdbd2cSJim Jagielski XDiagram oDiagram = null; 438*b1cdbd2cSJim Jagielski 439*b1cdbd2cSJim Jagielski //get LineDiagram 440*b1cdbd2cSJim Jagielski XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, oDoc); 441*b1cdbd2cSJim Jagielski 442*b1cdbd2cSJim Jagielski try { 443*b1cdbd2cSJim Jagielski oInterface = (XInterface) oDocMSF.createInstance("com.sun.star.chart." + kind); 444*b1cdbd2cSJim Jagielski oDiagram = (XDiagram) UnoRuntime.queryInterface(XDiagram.class, oInterface); 445*b1cdbd2cSJim Jagielski } catch (Exception e) { 446*b1cdbd2cSJim Jagielski // Some exception occures.FAILED 447*b1cdbd2cSJim Jagielski System.out.println("Couldn't create " + kind + "-Diagram " + e); 448*b1cdbd2cSJim Jagielski } 449*b1cdbd2cSJim Jagielski return oDiagram; 450*b1cdbd2cSJim Jagielski } 451*b1cdbd2cSJim Jagielski 452*b1cdbd2cSJim Jagielski /* 453*b1cdbd2cSJim Jagielski // create a Control-Instance which specified in kind(String) 454*b1cdbd2cSJim Jagielski */ createControl(XComponent oDoc, String kind)455*b1cdbd2cSJim Jagielski public XInterface createControl(XComponent oDoc, String kind) { 456*b1cdbd2cSJim Jagielski 457*b1cdbd2cSJim Jagielski XInterface oControl = null; 458*b1cdbd2cSJim Jagielski 459*b1cdbd2cSJim Jagielski XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, oDoc); 460*b1cdbd2cSJim Jagielski 461*b1cdbd2cSJim Jagielski try { 462*b1cdbd2cSJim Jagielski oControl = (XInterface) oDocMSF.createInstance("com.sun.star.form.component." + kind); 463*b1cdbd2cSJim Jagielski } catch (Exception e) { 464*b1cdbd2cSJim Jagielski // Some exception occures.FAILED 465*b1cdbd2cSJim Jagielski System.out.println("Couldn't create instance " + kind + ": " + e); 466*b1cdbd2cSJim Jagielski } 467*b1cdbd2cSJim Jagielski return oControl; 468*b1cdbd2cSJim Jagielski } 469*b1cdbd2cSJim Jagielski 470*b1cdbd2cSJim Jagielski /* 471*b1cdbd2cSJim Jagielski // create an Instance which is specified in kind(String) 472*b1cdbd2cSJim Jagielski */ createInstance(XComponent oDoc, String kind)473*b1cdbd2cSJim Jagielski public Object createInstance(XComponent oDoc, String kind) { 474*b1cdbd2cSJim Jagielski 475*b1cdbd2cSJim Jagielski Object oInstance = null; 476*b1cdbd2cSJim Jagielski 477*b1cdbd2cSJim Jagielski XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, oDoc); 478*b1cdbd2cSJim Jagielski 479*b1cdbd2cSJim Jagielski try { 480*b1cdbd2cSJim Jagielski oInstance = (Object) oDocMSF.createInstance(kind); 481*b1cdbd2cSJim Jagielski } catch (Exception e) { 482*b1cdbd2cSJim Jagielski // Some exception occures.FAILED 483*b1cdbd2cSJim Jagielski System.out.println("Couldn't create instance " + kind + ": " + e); 484*b1cdbd2cSJim Jagielski } 485*b1cdbd2cSJim Jagielski return oInstance; 486*b1cdbd2cSJim Jagielski } 487*b1cdbd2cSJim Jagielski createControlShape(XComponent oDoc, int height, int width, int x, int y, String kind)488*b1cdbd2cSJim Jagielski public XControlShape createControlShape(XComponent oDoc, int height, int width, int x, int y, String kind) { 489*b1cdbd2cSJim Jagielski 490*b1cdbd2cSJim Jagielski Size size = new Size(); 491*b1cdbd2cSJim Jagielski Point position = new Point(); 492*b1cdbd2cSJim Jagielski XControlShape oCShape = null; 493*b1cdbd2cSJim Jagielski XControlModel aControl = null; 494*b1cdbd2cSJim Jagielski 495*b1cdbd2cSJim Jagielski //get MSF 496*b1cdbd2cSJim Jagielski XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, oDoc); 497*b1cdbd2cSJim Jagielski 498*b1cdbd2cSJim Jagielski try { 499*b1cdbd2cSJim Jagielski Object oInt = oDocMSF.createInstance("com.sun.star.drawing.ControlShape"); 500*b1cdbd2cSJim Jagielski Object aCon = oDocMSF.createInstance("com.sun.star.form.component." + kind); 501*b1cdbd2cSJim Jagielski aControl = (XControlModel) UnoRuntime.queryInterface(XControlModel.class, aCon); 502*b1cdbd2cSJim Jagielski oCShape = (XControlShape) UnoRuntime.queryInterface(XControlShape.class, oInt); 503*b1cdbd2cSJim Jagielski size.Height = height; 504*b1cdbd2cSJim Jagielski size.Width = width; 505*b1cdbd2cSJim Jagielski position.X = x; 506*b1cdbd2cSJim Jagielski position.Y = y; 507*b1cdbd2cSJim Jagielski oCShape.setSize(size); 508*b1cdbd2cSJim Jagielski oCShape.setPosition(position); 509*b1cdbd2cSJim Jagielski 510*b1cdbd2cSJim Jagielski 511*b1cdbd2cSJim Jagielski } catch (Exception e) { 512*b1cdbd2cSJim Jagielski // Some exception occures.FAILED 513*b1cdbd2cSJim Jagielski System.out.println("Couldn't create instance " + e); 514*b1cdbd2cSJim Jagielski } 515*b1cdbd2cSJim Jagielski 516*b1cdbd2cSJim Jagielski try { 517*b1cdbd2cSJim Jagielski oCShape.setControl(aControl); 518*b1cdbd2cSJim Jagielski } catch (Exception e) { 519*b1cdbd2cSJim Jagielski // Some exception occures.FAILED 520*b1cdbd2cSJim Jagielski System.out.println("Couldn't get Control " + e); 521*b1cdbd2cSJim Jagielski } 522*b1cdbd2cSJim Jagielski 523*b1cdbd2cSJim Jagielski 524*b1cdbd2cSJim Jagielski return oCShape; 525*b1cdbd2cSJim Jagielski 526*b1cdbd2cSJim Jagielski } 527*b1cdbd2cSJim Jagielski loadDocument(String fileName)528*b1cdbd2cSJim Jagielski public XComponent loadDocument(String fileName) 529*b1cdbd2cSJim Jagielski throws com.sun.star.lang.IllegalArgumentException, 530*b1cdbd2cSJim Jagielski com.sun.star.io.IOException, 531*b1cdbd2cSJim Jagielski com.sun.star.uno.Exception { 532*b1cdbd2cSJim Jagielski 533*b1cdbd2cSJim Jagielski // that noargs thing for load attributes 534*b1cdbd2cSJim Jagielski PropertyValue[] szEmptyArgs = new PropertyValue[0]; 535*b1cdbd2cSJim Jagielski String frameName = "_blank"; 536*b1cdbd2cSJim Jagielski 537*b1cdbd2cSJim Jagielski XComponent oDoc = oCLoader.loadComponentFromURL( 538*b1cdbd2cSJim Jagielski fileName, frameName, 0, szEmptyArgs); 539*b1cdbd2cSJim Jagielski 540*b1cdbd2cSJim Jagielski if (oDoc == null) { 541*b1cdbd2cSJim Jagielski return null; 542*b1cdbd2cSJim Jagielski } 543*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 544*b1cdbd2cSJim Jagielski return oDoc; 545*b1cdbd2cSJim Jagielski } 546*b1cdbd2cSJim Jagielski loadDocument(String fileName, PropertyValue[] Args)547*b1cdbd2cSJim Jagielski public XComponent loadDocument(String fileName, PropertyValue[] Args) 548*b1cdbd2cSJim Jagielski throws com.sun.star.lang.IllegalArgumentException, 549*b1cdbd2cSJim Jagielski com.sun.star.io.IOException, 550*b1cdbd2cSJim Jagielski com.sun.star.uno.Exception { 551*b1cdbd2cSJim Jagielski 552*b1cdbd2cSJim Jagielski // that noargs thing for load attributes 553*b1cdbd2cSJim Jagielski String frameName = "_blank"; 554*b1cdbd2cSJim Jagielski 555*b1cdbd2cSJim Jagielski XComponent oDoc = oCLoader.loadComponentFromURL( 556*b1cdbd2cSJim Jagielski fileName, frameName, 0, Args); 557*b1cdbd2cSJim Jagielski 558*b1cdbd2cSJim Jagielski if (oDoc == null) { 559*b1cdbd2cSJim Jagielski return null; 560*b1cdbd2cSJim Jagielski } 561*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 562*b1cdbd2cSJim Jagielski 563*b1cdbd2cSJim Jagielski return oDoc; 564*b1cdbd2cSJim Jagielski } 565*b1cdbd2cSJim Jagielski openDoc(String kind, String frameName)566*b1cdbd2cSJim Jagielski public XComponent openDoc(String kind, String frameName) 567*b1cdbd2cSJim Jagielski throws com.sun.star.lang.IllegalArgumentException, 568*b1cdbd2cSJim Jagielski com.sun.star.io.IOException, 569*b1cdbd2cSJim Jagielski com.sun.star.uno.Exception { 570*b1cdbd2cSJim Jagielski 571*b1cdbd2cSJim Jagielski // that noargs thing for load attributes 572*b1cdbd2cSJim Jagielski PropertyValue[] Args = null; 573*b1cdbd2cSJim Jagielski if (kind.equals("simpress")) { 574*b1cdbd2cSJim Jagielski Args = new PropertyValue[1]; 575*b1cdbd2cSJim Jagielski PropertyValue Arg = new PropertyValue(); 576*b1cdbd2cSJim Jagielski Arg.Name = "OpenFlags"; 577*b1cdbd2cSJim Jagielski Arg.Value = "S"; 578*b1cdbd2cSJim Jagielski Arg.Handle = -1; 579*b1cdbd2cSJim Jagielski Arg.State = PropertyState.DEFAULT_VALUE; 580*b1cdbd2cSJim Jagielski Args[0] = Arg; 581*b1cdbd2cSJim Jagielski } else { 582*b1cdbd2cSJim Jagielski Args = new PropertyValue[0]; 583*b1cdbd2cSJim Jagielski } 584*b1cdbd2cSJim Jagielski 585*b1cdbd2cSJim Jagielski if (frameName == null) { 586*b1cdbd2cSJim Jagielski frameName = "_blank"; 587*b1cdbd2cSJim Jagielski } 588*b1cdbd2cSJim Jagielski // load a blank a doc 589*b1cdbd2cSJim Jagielski XComponent oDoc = oCLoader.loadComponentFromURL("private:factory/" + kind, frameName, 40, Args); 590*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 591*b1cdbd2cSJim Jagielski 592*b1cdbd2cSJim Jagielski return oDoc; 593*b1cdbd2cSJim Jagielski 594*b1cdbd2cSJim Jagielski } // finished openDoc 595*b1cdbd2cSJim Jagielski openDoc(String kind, String frameName, PropertyValue[] mediaDescriptor)596*b1cdbd2cSJim Jagielski public XComponent openDoc(String kind, String frameName, PropertyValue[] mediaDescriptor) 597*b1cdbd2cSJim Jagielski throws com.sun.star.lang.IllegalArgumentException, 598*b1cdbd2cSJim Jagielski com.sun.star.io.IOException, 599*b1cdbd2cSJim Jagielski com.sun.star.uno.Exception { 600*b1cdbd2cSJim Jagielski 601*b1cdbd2cSJim Jagielski if (frameName == null) { 602*b1cdbd2cSJim Jagielski frameName = "_blank"; 603*b1cdbd2cSJim Jagielski } 604*b1cdbd2cSJim Jagielski // load a blank a doc 605*b1cdbd2cSJim Jagielski XComponent oDoc = oCLoader.loadComponentFromURL( 606*b1cdbd2cSJim Jagielski "private:factory/" + kind, frameName, 40, mediaDescriptor); 607*b1cdbd2cSJim Jagielski DesktopTools.bringWindowToFront(oDoc); 608*b1cdbd2cSJim Jagielski 609*b1cdbd2cSJim Jagielski return oDoc; 610*b1cdbd2cSJim Jagielski 611*b1cdbd2cSJim Jagielski } // finished openDoc 612*b1cdbd2cSJim Jagielski 613*b1cdbd2cSJim Jagielski // query for XServiceInfo queryXServiceInfo(Object oObj)614*b1cdbd2cSJim Jagielski public Object queryXServiceInfo(Object oObj) { 615*b1cdbd2cSJim Jagielski if (oObj != null) { 616*b1cdbd2cSJim Jagielski XServiceInfo oInfo = (XServiceInfo) UnoRuntime.queryInterface( 617*b1cdbd2cSJim Jagielski XServiceInfo.class, oObj); 618*b1cdbd2cSJim Jagielski System.out.println("!!!! XServiceInfo n.a. !!!! "); 619*b1cdbd2cSJim Jagielski } else { 620*b1cdbd2cSJim Jagielski System.out.println("Object is empty!!!! "); 621*b1cdbd2cSJim Jagielski } 622*b1cdbd2cSJim Jagielski return null; 623*b1cdbd2cSJim Jagielski } // finish queryXServiceInfo 624*b1cdbd2cSJim Jagielski } 625