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 mod._forms; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 26*b1cdbd2cSJim Jagielski import java.io.PrintWriter; 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski import lib.StatusException; 29*b1cdbd2cSJim Jagielski import lib.TestCase; 30*b1cdbd2cSJim Jagielski import lib.TestEnvironment; 31*b1cdbd2cSJim Jagielski import lib.TestParameters; 32*b1cdbd2cSJim Jagielski import util.DrawTools; 33*b1cdbd2cSJim Jagielski import util.FormTools; 34*b1cdbd2cSJim Jagielski import util.SOfficeFactory; 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski import com.sun.star.container.XNameContainer; 37*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPage; 38*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 39*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 40*b1cdbd2cSJim Jagielski import com.sun.star.uno.AnyConverter; 41*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 42*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 43*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 44*b1cdbd2cSJim Jagielski import com.sun.star.util.XCloseable; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski /** 48*b1cdbd2cSJim Jagielski * Test for object which is represented by service 49*b1cdbd2cSJim Jagielski * <code>com.sun.star.form.component.HiddenControl</code>. <p> 50*b1cdbd2cSJim Jagielski * Object implements the following interfaces : 51*b1cdbd2cSJim Jagielski * <ul> 52*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::io::XPersistObject</code></li> 53*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::container::XChild</code></li> 54*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::form::FormControlModel</code></li> 55*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::form::component::HiddenControl</code></li> 56*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::form::FormComponent</code></li> 57*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::beans::XPropertyAccess</code></li> 58*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::beans::XPropertyContainer</code></li> 59*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::beans::XPropertySet</code></li> 60*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::beans::XFastPropertySet</code></li> 61*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::beans::XPropertyState</code></li> 62*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::container::XNamed</code></li> 63*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::beans::XMultiPropertySet</code></li> 64*b1cdbd2cSJim Jagielski * <li> <code>com::sun::star::lang::XComponent</code></li> 65*b1cdbd2cSJim Jagielski * </ul> <p> 66*b1cdbd2cSJim Jagielski * This object test <b> is NOT </b> designed to be run in several 67*b1cdbd2cSJim Jagielski * threads concurently. 68*b1cdbd2cSJim Jagielski * @see com.sun.star.io.XPersistObject 69*b1cdbd2cSJim Jagielski * @see com.sun.star.container.XChild 70*b1cdbd2cSJim Jagielski * @see com.sun.star.form 71*b1cdbd2cSJim Jagielski * @see com.sun.star.form.component.HiddenControl 72*b1cdbd2cSJim Jagielski * @see com.sun.star.form.FormComponent 73*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XPropertyAccess 74*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XPropertyContainer 75*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XPropertySet 76*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XFastPropertySet 77*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XPropertyState 78*b1cdbd2cSJim Jagielski * @see com.sun.star.container.XNamed 79*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XMultiPropertySet 80*b1cdbd2cSJim Jagielski * @see com.sun.star.lang.XComponent 81*b1cdbd2cSJim Jagielski * @see ifc.io._XPersistObject 82*b1cdbd2cSJim Jagielski * @see ifc.container._XChild 83*b1cdbd2cSJim Jagielski * @see ifc.form._FormControlModel 84*b1cdbd2cSJim Jagielski * @see ifc.form.component._HiddenControl 85*b1cdbd2cSJim Jagielski * @see ifc.form._FormComponent 86*b1cdbd2cSJim Jagielski * @see ifc.beans._XPropertySet 87*b1cdbd2cSJim Jagielski * @see ifc.beans._XFastPropertySet 88*b1cdbd2cSJim Jagielski * @see ifc.beans._XPropertyState 89*b1cdbd2cSJim Jagielski * @see ifc.container._XNamed 90*b1cdbd2cSJim Jagielski * @see ifc.beans._XMultiPropertySet 91*b1cdbd2cSJim Jagielski * @see ifc.lang._XComponent 92*b1cdbd2cSJim Jagielski */ 93*b1cdbd2cSJim Jagielski public class OHiddenModel extends TestCase { 94*b1cdbd2cSJim Jagielski XComponent xDrawDoc; 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski /** 97*b1cdbd2cSJim Jagielski * Creates Drawing document. 98*b1cdbd2cSJim Jagielski */ initialize(TestParameters tParam, PrintWriter log)99*b1cdbd2cSJim Jagielski protected void initialize(TestParameters tParam, PrintWriter log) { 100*b1cdbd2cSJim Jagielski SOfficeFactory SOF = SOfficeFactory.getFactory(((XMultiServiceFactory) tParam.getMSF())); 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski try { 103*b1cdbd2cSJim Jagielski log.println("creating a draw document"); 104*b1cdbd2cSJim Jagielski xDrawDoc = SOF.createDrawDoc(null); 105*b1cdbd2cSJim Jagielski } catch (com.sun.star.uno.Exception e) { 106*b1cdbd2cSJim Jagielski // Some exception occures.FAILED 107*b1cdbd2cSJim Jagielski e.printStackTrace(log); 108*b1cdbd2cSJim Jagielski throw new StatusException("Couldn't create document", e); 109*b1cdbd2cSJim Jagielski } 110*b1cdbd2cSJim Jagielski } 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski /** 113*b1cdbd2cSJim Jagielski * Disposes drawing document. 114*b1cdbd2cSJim Jagielski */ cleanup(TestParameters tParam, PrintWriter log)115*b1cdbd2cSJim Jagielski protected void cleanup(TestParameters tParam, PrintWriter log) { 116*b1cdbd2cSJim Jagielski log.println(" disposing xDrawDoc "); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski try { 119*b1cdbd2cSJim Jagielski XCloseable closer = (XCloseable) UnoRuntime.queryInterface( 120*b1cdbd2cSJim Jagielski XCloseable.class, xDrawDoc); 121*b1cdbd2cSJim Jagielski closer.close(true); 122*b1cdbd2cSJim Jagielski } catch (com.sun.star.util.CloseVetoException e) { 123*b1cdbd2cSJim Jagielski log.println("couldn't close document"); 124*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.DisposedException e) { 125*b1cdbd2cSJim Jagielski log.println("couldn't close document"); 126*b1cdbd2cSJim Jagielski } 127*b1cdbd2cSJim Jagielski } 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski /** 130*b1cdbd2cSJim Jagielski * Creates hidden component, then adds Form into draw page, 131*b1cdbd2cSJim Jagielski * and inserts the component into Form components' collection. 132*b1cdbd2cSJim Jagielski * Object relations created : 133*b1cdbd2cSJim Jagielski * <ul> 134*b1cdbd2cSJim Jagielski * <li> <code>'OBJNAME'</code> for 135*b1cdbd2cSJim Jagielski * {@link ifc.io._XPersistObject} : name of service which is 136*b1cdbd2cSJim Jagielski * represented by this object. </li> 137*b1cdbd2cSJim Jagielski * </ul> 138*b1cdbd2cSJim Jagielski */ createTestEnvironment(TestParameters Param, PrintWriter log)139*b1cdbd2cSJim Jagielski protected synchronized TestEnvironment createTestEnvironment(TestParameters Param, 140*b1cdbd2cSJim Jagielski PrintWriter log) { 141*b1cdbd2cSJim Jagielski XInterface oObj = null; 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski // creation of testobject here 145*b1cdbd2cSJim Jagielski // first we write what we are intend to do to log file 146*b1cdbd2cSJim Jagielski log.println("creating a test environment"); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski // get a soffice factory object 149*b1cdbd2cSJim Jagielski SOfficeFactory SOF = SOfficeFactory.getFactory(((XMultiServiceFactory) Param.getMSF())); 150*b1cdbd2cSJim Jagielski String objName = "HiddenControl"; 151*b1cdbd2cSJim Jagielski XInterface ctrl = SOF.createControl(xDrawDoc, objName); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski try { 154*b1cdbd2cSJim Jagielski XDrawPage oDP = DrawTools.getDrawPage(xDrawDoc, 0); 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski XNameContainer nc = FormTools.getForms(oDP); 157*b1cdbd2cSJim Jagielski FormTools.insertForm(xDrawDoc, nc, "OHiddenModelForm"); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski Object frm = nc.getByName("OHiddenModelForm"); 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski XNameContainer frmNC = (XNameContainer) UnoRuntime.queryInterface( 162*b1cdbd2cSJim Jagielski XNameContainer.class, frm); 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski frmNC.insertByName("OHiddenModel", ctrl); 165*b1cdbd2cSJim Jagielski oObj = (XInterface) AnyConverter.toObject( 166*b1cdbd2cSJim Jagielski new Type(XInterface.class), 167*b1cdbd2cSJim Jagielski frmNC.getByName("OHiddenModel")); 168*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException e) { 169*b1cdbd2cSJim Jagielski e.printStackTrace(log); 170*b1cdbd2cSJim Jagielski throw new StatusException("Can't create and add control", e); 171*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 172*b1cdbd2cSJim Jagielski e.printStackTrace(log); 173*b1cdbd2cSJim Jagielski throw new StatusException("Can't create and add control", e); 174*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException e) { 175*b1cdbd2cSJim Jagielski e.printStackTrace(log); 176*b1cdbd2cSJim Jagielski throw new StatusException("Can't create and add control", e); 177*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.ElementExistException e) { 178*b1cdbd2cSJim Jagielski e.printStackTrace(log); 179*b1cdbd2cSJim Jagielski throw new StatusException("Can't create and add control", e); 180*b1cdbd2cSJim Jagielski } 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski log.println("creating a new environment for drawpage object"); 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski TestEnvironment tEnv = new TestEnvironment(oObj); 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski util.dbg.getSuppServices(oObj); 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski log.println("adding DrawDocument as obj relation to environment"); 189*b1cdbd2cSJim Jagielski tEnv.addObjRelation("OBJNAME", "stardiv.one.form.component.Hidden"); 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski PropertyValue prop = new PropertyValue(); 192*b1cdbd2cSJim Jagielski prop.Name = "Name"; 193*b1cdbd2cSJim Jagielski prop.Value = "new Text since XPropertyAccess"; 194*b1cdbd2cSJim Jagielski tEnv.addObjRelation("XPropertyAccess.propertyToChange", prop); 195*b1cdbd2cSJim Jagielski tEnv.addObjRelation("XPropertyContainer.propertyNotRemovable", "Name"); 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski return tEnv; 198*b1cdbd2cSJim Jagielski } // finish method getTestEnvironment 199*b1cdbd2cSJim Jagielski } // finish class OHiddenModel 200