1ef39d40dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3ef39d40dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4ef39d40dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5ef39d40dSAndrew Rist * distributed with this work for additional information 6ef39d40dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7ef39d40dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8ef39d40dSAndrew Rist * "License"); you may not use this file except in compliance 9ef39d40dSAndrew Rist * with the License. You may obtain a copy of the License at 10ef39d40dSAndrew Rist * 11ef39d40dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12ef39d40dSAndrew Rist * 13ef39d40dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14ef39d40dSAndrew Rist * software distributed under the License is distributed on an 15ef39d40dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16ef39d40dSAndrew Rist * KIND, either express or implied. See the License for the 17ef39d40dSAndrew Rist * specific language governing permissions and limitations 18ef39d40dSAndrew Rist * under the License. 19ef39d40dSAndrew Rist * 20ef39d40dSAndrew Rist *************************************************************/ 21ef39d40dSAndrew Rist 22ef39d40dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package ifc.text; 25cdf0e10cSrcweir 26cdf0e10cSrcweir import com.sun.star.beans.XPropertySet; 27cdf0e10cSrcweir import com.sun.star.container.XEnumeration; 28cdf0e10cSrcweir import com.sun.star.container.XEnumerationAccess; 29cdf0e10cSrcweir import com.sun.star.container.XIndexAccess; 30cdf0e10cSrcweir import com.sun.star.container.XNameAccess; 31cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 32cdf0e10cSrcweir import com.sun.star.sheet.XSpreadsheet; 33cdf0e10cSrcweir import com.sun.star.sheet.XSpreadsheetDocument; 34cdf0e10cSrcweir import com.sun.star.sheet.XSpreadsheets; 35cdf0e10cSrcweir import com.sun.star.table.XCell; 36cdf0e10cSrcweir import com.sun.star.text.XDependentTextField; 37cdf0e10cSrcweir import com.sun.star.text.XText; 38cdf0e10cSrcweir import com.sun.star.text.XTextContent; 39cdf0e10cSrcweir import com.sun.star.text.XTextCursor; 40cdf0e10cSrcweir import com.sun.star.text.XTextFieldsSupplier; 41cdf0e10cSrcweir import com.sun.star.uno.AnyConverter; 42cdf0e10cSrcweir import com.sun.star.uno.Type; 43cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 44cdf0e10cSrcweir import com.sun.star.uno.XInterface; 45cdf0e10cSrcweir import java.io.PrintWriter; 46cdf0e10cSrcweir import lib.MultiMethodTest; 47cdf0e10cSrcweir import lib.StatusException; 48cdf0e10cSrcweir 49cdf0e10cSrcweir /** 50cdf0e10cSrcweir * 51cdf0e10cSrcweir */ 52cdf0e10cSrcweir public class _XTextFieldsSupplier extends MultiMethodTest { 53cdf0e10cSrcweir 54cdf0e10cSrcweir public XTextFieldsSupplier oObj = null; // oObj filled by MultiMethodTest 55cdf0e10cSrcweir private boolean mDispose = false; 56cdf0e10cSrcweir private boolean mbCreateFieldMaster = true; 57cdf0e10cSrcweir 58cdf0e10cSrcweir /** 59cdf0e10cSrcweir * Insert some text fields into a cell on the sheet, so this interface test 60cdf0e10cSrcweir * makes sense. 61cdf0e10cSrcweir */ before()62cdf0e10cSrcweir protected void before() { 63cdf0e10cSrcweir Object o = tEnv.getObjRelation("XTextFieldsSupplier.MAKEENTRY"); 64cdf0e10cSrcweir if (o != null && ((Boolean)o).booleanValue()) { 65cdf0e10cSrcweir mDispose = true; 66cdf0e10cSrcweir mbCreateFieldMaster = false; 67cdf0e10cSrcweir XCell xCell = (XCell)tEnv.getObjRelation("MAKEENTRYINCELL"); 68cdf0e10cSrcweir 69cdf0e10cSrcweir XSpreadsheetDocument xSheetDoc = (XSpreadsheetDocument)tEnv.getObjRelation("SPREADSHEET"); 70cdf0e10cSrcweir 71cdf0e10cSrcweir XInterface oObj = null; 72cdf0e10cSrcweir XText oText = null; 73cdf0e10cSrcweir XTextContent oContent = null; 74cdf0e10cSrcweir XInterface aField = null; 75cdf0e10cSrcweir 76cdf0e10cSrcweir try { 77cdf0e10cSrcweir // we want to create an instance of ScCellFieldObj. 78cdf0e10cSrcweir // to do this we must get an MultiServiceFactory. 79cdf0e10cSrcweir 80cdf0e10cSrcweir XMultiServiceFactory _oMSF = (XMultiServiceFactory) 81cdf0e10cSrcweir UnoRuntime.queryInterface(XMultiServiceFactory.class, xSheetDoc); 82cdf0e10cSrcweir 83cdf0e10cSrcweir aField = (XInterface) 84cdf0e10cSrcweir _oMSF.createInstance("com.sun.star.text.TextField.URL"); 85cdf0e10cSrcweir oContent = (XTextContent) 86cdf0e10cSrcweir UnoRuntime.queryInterface(XTextContent.class, aField); 87cdf0e10cSrcweir 88cdf0e10cSrcweir XSpreadsheets oSheets = xSheetDoc.getSheets() ; 89cdf0e10cSrcweir XIndexAccess oIndexSheets = (XIndexAccess) 90cdf0e10cSrcweir UnoRuntime.queryInterface(XIndexAccess.class, oSheets); 91cdf0e10cSrcweir XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( 92cdf0e10cSrcweir new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); 93cdf0e10cSrcweir 94cdf0e10cSrcweir String[] services = _oMSF.getAvailableServiceNames(); 95cdf0e10cSrcweir for (int i=0; i<services.length; i++) { 96cdf0e10cSrcweir if (services[i].startsWith("com.sun.star.text.FieldMaster")) { 97cdf0e10cSrcweir mbCreateFieldMaster = true; 98cdf0e10cSrcweir log.println("service " + i + ": " + services[i]); 99cdf0e10cSrcweir } 100cdf0e10cSrcweir } 101cdf0e10cSrcweir 102cdf0e10cSrcweir if (mbCreateFieldMaster) { 103cdf0e10cSrcweir Object FieldMaster = _oMSF.createInstance("com.sun.star.text.FieldMaster.User"); 104cdf0e10cSrcweir XPropertySet PFieldMaster = (XPropertySet) UnoRuntime.queryInterface 105cdf0e10cSrcweir (XPropertySet.class,(XInterface) FieldMaster); 106cdf0e10cSrcweir 107cdf0e10cSrcweir XDependentTextField xTF = (XDependentTextField) 108cdf0e10cSrcweir UnoRuntime.queryInterface(XDependentTextField.class,aField); 109cdf0e10cSrcweir 110cdf0e10cSrcweir PFieldMaster.setPropertyValue("Content","Some content"); 111cdf0e10cSrcweir 112cdf0e10cSrcweir xTF.attachTextFieldMaster(PFieldMaster); 113cdf0e10cSrcweir } 114cdf0e10cSrcweir 115cdf0e10cSrcweir oText = (XText)UnoRuntime.queryInterface(XText.class, xCell); 116cdf0e10cSrcweir XTextCursor the_Cursor = oText.createTextCursor(); 117cdf0e10cSrcweir 118cdf0e10cSrcweir oText.insertTextContent( 119cdf0e10cSrcweir the_Cursor, oContent, true); 120cdf0e10cSrcweir 121cdf0e10cSrcweir } catch (com.sun.star.lang.WrappedTargetException e) { 122bb6af6bcSPedro Giffuni log.println("Exception occurred while creating test Object."); 123cdf0e10cSrcweir e.printStackTrace(log); 124cdf0e10cSrcweir throw new StatusException("Couldn't insert textField.URL", e); 125cdf0e10cSrcweir } catch (com.sun.star.lang.IndexOutOfBoundsException e) { 126bb6af6bcSPedro Giffuni log.println("Exception occurred while creating test Object."); 127cdf0e10cSrcweir e.printStackTrace(log); 128cdf0e10cSrcweir throw new StatusException("Couldn't insert textField.URL", e); 129cdf0e10cSrcweir } catch (com.sun.star.lang.IllegalArgumentException e) { 130bb6af6bcSPedro Giffuni log.println("Exception occurred while creating test Object."); 131cdf0e10cSrcweir e.printStackTrace(log); 132cdf0e10cSrcweir throw new StatusException("Couldn't insert textField.URL", e); 133cdf0e10cSrcweir } catch (com.sun.star.uno.Exception e) { 134bb6af6bcSPedro Giffuni log.println("Exception occurred while creating test Object."); 135cdf0e10cSrcweir e.printStackTrace(log); 136cdf0e10cSrcweir throw new StatusException("Couldn't insert textField.URL", e); 137cdf0e10cSrcweir } 138cdf0e10cSrcweir 139cdf0e10cSrcweir } 140cdf0e10cSrcweir } 141cdf0e10cSrcweir _getTextFields()142cdf0e10cSrcweir public void _getTextFields() { 143cdf0e10cSrcweir XEnumerationAccess xEnumAccess = oObj.getTextFields(); 144cdf0e10cSrcweir XEnumeration xEnum = xEnumAccess.createEnumeration(); 145cdf0e10cSrcweir while(xEnum != null && xEnum.hasMoreElements()) { 146cdf0e10cSrcweir try { 147cdf0e10cSrcweir Object o = xEnum.nextElement(); 148cdf0e10cSrcweir } 149cdf0e10cSrcweir catch(com.sun.star.container.NoSuchElementException e) { 150cdf0e10cSrcweir setMethodFalse("getTextFields()", e); 151cdf0e10cSrcweir } 152cdf0e10cSrcweir catch(com.sun.star.lang.WrappedTargetException e) { 153cdf0e10cSrcweir setMethodFalse("getTextFields()", e); 154cdf0e10cSrcweir } 155cdf0e10cSrcweir } 156cdf0e10cSrcweir tRes.tested("getTextFields()", xEnum != null); 157cdf0e10cSrcweir } 158cdf0e10cSrcweir _getTextFieldMasters()159cdf0e10cSrcweir public void _getTextFieldMasters() { 160cdf0e10cSrcweir if (mbCreateFieldMaster) { 161cdf0e10cSrcweir XNameAccess xName = oObj.getTextFieldMasters(); 162cdf0e10cSrcweir util.dbg.printInterfaces(xName); 163cdf0e10cSrcweir tRes.tested("getTextFieldMasters()", xName != null); 164cdf0e10cSrcweir } 165cdf0e10cSrcweir else { 166cdf0e10cSrcweir log.println("Could not test 'getTextFieldMasters' because no field masters can be created on this object."); 167cdf0e10cSrcweir tRes.tested("getTextFieldMasters()", true); 168cdf0e10cSrcweir } 169cdf0e10cSrcweir } 170cdf0e10cSrcweir 171cdf0e10cSrcweir /** 172cdf0e10cSrcweir * Just for convenience: log the exception and set the method false. 173cdf0e10cSrcweir * @param method The name of the method to set to false. 174bb6af6bcSPedro Giffuni * @param e The Exception that occurred. 175cdf0e10cSrcweir */ setMethodFalse(String method, Exception e)176cdf0e10cSrcweir private void setMethodFalse(String method, Exception e) { 177cdf0e10cSrcweir log.println("Exception while executing '" + method + "'"); 178cdf0e10cSrcweir e.printStackTrace((PrintWriter)log); 179cdf0e10cSrcweir tRes.tested(method, false); 180cdf0e10cSrcweir } 181cdf0e10cSrcweir after()182cdf0e10cSrcweir protected void after() { 183cdf0e10cSrcweir if (mDispose) 184cdf0e10cSrcweir disposeEnvironment(); 185cdf0e10cSrcweir } 186cdf0e10cSrcweir 187cdf0e10cSrcweir } 188