1*6e91df0bSDamjan Jovanovic /************************************************************** 2*6e91df0bSDamjan Jovanovic * 3*6e91df0bSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*6e91df0bSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*6e91df0bSDamjan Jovanovic * distributed with this work for additional information 6*6e91df0bSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*6e91df0bSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*6e91df0bSDamjan Jovanovic * "License"); you may not use this file except in compliance 9*6e91df0bSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*6e91df0bSDamjan Jovanovic * 11*6e91df0bSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*6e91df0bSDamjan Jovanovic * 13*6e91df0bSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*6e91df0bSDamjan Jovanovic * software distributed under the License is distributed on an 15*6e91df0bSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*6e91df0bSDamjan Jovanovic * KIND, either express or implied. See the License for the 17*6e91df0bSDamjan Jovanovic * specific language governing permissions and limitations 18*6e91df0bSDamjan Jovanovic * under the License. 19*6e91df0bSDamjan Jovanovic * 20*6e91df0bSDamjan Jovanovic *************************************************************/ 21*6e91df0bSDamjan Jovanovic 22*6e91df0bSDamjan Jovanovic package complex.embedding; 23*6e91df0bSDamjan Jovanovic 24*6e91df0bSDamjan Jovanovic import com.sun.star.uno.XInterface; 25*6e91df0bSDamjan Jovanovic import com.sun.star.lang.XMultiServiceFactory; 26*6e91df0bSDamjan Jovanovic import com.sun.star.lang.XSingleServiceFactory; 27*6e91df0bSDamjan Jovanovic 28*6e91df0bSDamjan Jovanovic import com.sun.star.bridge.XUnoUrlResolver; 29*6e91df0bSDamjan Jovanovic import com.sun.star.uno.UnoRuntime; 30*6e91df0bSDamjan Jovanovic import com.sun.star.uno.XInterface; 31*6e91df0bSDamjan Jovanovic import com.sun.star.beans.XPropertySet; 32*6e91df0bSDamjan Jovanovic import com.sun.star.frame.XLoadable; 33*6e91df0bSDamjan Jovanovic import com.sun.star.drawing.XDrawPagesSupplier; 34*6e91df0bSDamjan Jovanovic import com.sun.star.drawing.XDrawPages; 35*6e91df0bSDamjan Jovanovic import com.sun.star.drawing.XDrawPage; 36*6e91df0bSDamjan Jovanovic import com.sun.star.drawing.XShape; 37*6e91df0bSDamjan Jovanovic import com.sun.star.graphic.XGraphic; 38*6e91df0bSDamjan Jovanovic 39*6e91df0bSDamjan Jovanovic import com.sun.star.embed.*; 40*6e91df0bSDamjan Jovanovic 41*6e91df0bSDamjan Jovanovic import complex.embedding.TestHelper; 42*6e91df0bSDamjan Jovanovic 43*6e91df0bSDamjan Jovanovic public class Test01 { 44*6e91df0bSDamjan Jovanovic 45*6e91df0bSDamjan Jovanovic XMultiServiceFactory m_xMSF; 46*6e91df0bSDamjan Jovanovic TestHelper m_aTestHelper; 47*6e91df0bSDamjan Jovanovic Test01( XMultiServiceFactory xMSF )48*6e91df0bSDamjan Jovanovic public Test01( XMultiServiceFactory xMSF ) 49*6e91df0bSDamjan Jovanovic { 50*6e91df0bSDamjan Jovanovic m_xMSF = xMSF; 51*6e91df0bSDamjan Jovanovic m_aTestHelper = new TestHelper( "Test01: " ); 52*6e91df0bSDamjan Jovanovic } 53*6e91df0bSDamjan Jovanovic test()54*6e91df0bSDamjan Jovanovic public boolean test() 55*6e91df0bSDamjan Jovanovic { 56*6e91df0bSDamjan Jovanovic try 57*6e91df0bSDamjan Jovanovic { 58*6e91df0bSDamjan Jovanovic Object oDoc = m_xMSF.createInstance( "com.sun.star.comp.Draw.DrawingDocument" ); 59*6e91df0bSDamjan Jovanovic XLoadable xLoad = (XLoadable) UnoRuntime.queryInterface( XLoadable.class, oDoc ); 60*6e91df0bSDamjan Jovanovic if ( xLoad == null ) 61*6e91df0bSDamjan Jovanovic { 62*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Can not get XLoadable!" ); 63*6e91df0bSDamjan Jovanovic return false; 64*6e91df0bSDamjan Jovanovic } 65*6e91df0bSDamjan Jovanovic 66*6e91df0bSDamjan Jovanovic xLoad.initNew(); 67*6e91df0bSDamjan Jovanovic 68*6e91df0bSDamjan Jovanovic XDrawPagesSupplier xDPSupply = (XDrawPagesSupplier) UnoRuntime.queryInterface( XDrawPagesSupplier.class, oDoc ); 69*6e91df0bSDamjan Jovanovic if ( xDPSupply == null ) 70*6e91df0bSDamjan Jovanovic { 71*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Can not get XDrawPagesSupplier!" ); 72*6e91df0bSDamjan Jovanovic return false; 73*6e91df0bSDamjan Jovanovic } 74*6e91df0bSDamjan Jovanovic 75*6e91df0bSDamjan Jovanovic XDrawPages xDrawPages = xDPSupply.getDrawPages(); 76*6e91df0bSDamjan Jovanovic if ( xDrawPages == null ) 77*6e91df0bSDamjan Jovanovic { 78*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Can not get XDrawPages object!" ); 79*6e91df0bSDamjan Jovanovic return false; 80*6e91df0bSDamjan Jovanovic } 81*6e91df0bSDamjan Jovanovic 82*6e91df0bSDamjan Jovanovic if ( xDrawPages.getCount() == 0 ) 83*6e91df0bSDamjan Jovanovic { 84*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "There must be at least one page in the document!" ); 85*6e91df0bSDamjan Jovanovic return false; 86*6e91df0bSDamjan Jovanovic } 87*6e91df0bSDamjan Jovanovic 88*6e91df0bSDamjan Jovanovic Object oPage = xDrawPages.getByIndex( 0 ); 89*6e91df0bSDamjan Jovanovic XDrawPage xPage = (XDrawPage) UnoRuntime.queryInterface( XDrawPage.class, oPage ); 90*6e91df0bSDamjan Jovanovic if ( xPage == null ) 91*6e91df0bSDamjan Jovanovic { 92*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Can not get access to drawing page!" ); 93*6e91df0bSDamjan Jovanovic return false; 94*6e91df0bSDamjan Jovanovic } 95*6e91df0bSDamjan Jovanovic 96*6e91df0bSDamjan Jovanovic XMultiServiceFactory xDrFactory = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, oDoc ); 97*6e91df0bSDamjan Jovanovic if ( xDrFactory == null ) 98*6e91df0bSDamjan Jovanovic { 99*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Can not get drawing factory!" ); 100*6e91df0bSDamjan Jovanovic return false; 101*6e91df0bSDamjan Jovanovic } 102*6e91df0bSDamjan Jovanovic 103*6e91df0bSDamjan Jovanovic Object oShape = xDrFactory.createInstance( "com.sun.star.drawing.OLE2Shape" ); 104*6e91df0bSDamjan Jovanovic XShape xShape = ( XShape ) UnoRuntime.queryInterface( XShape.class, oShape ); 105*6e91df0bSDamjan Jovanovic if ( xShape == null ) 106*6e91df0bSDamjan Jovanovic { 107*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Can not create new shape!" ); 108*6e91df0bSDamjan Jovanovic return false; 109*6e91df0bSDamjan Jovanovic } 110*6e91df0bSDamjan Jovanovic 111*6e91df0bSDamjan Jovanovic XPropertySet xShapeProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, oShape ); 112*6e91df0bSDamjan Jovanovic if ( xShapeProps == null ) 113*6e91df0bSDamjan Jovanovic { 114*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Can not get access to shapes properties!" ); 115*6e91df0bSDamjan Jovanovic return false; 116*6e91df0bSDamjan Jovanovic } 117*6e91df0bSDamjan Jovanovic 118*6e91df0bSDamjan Jovanovic xPage.add( xShape ); 119*6e91df0bSDamjan Jovanovic xShapeProps.setPropertyValue( "CLSID", "078B7ABA-54FC-457F-8551-6147e776a997" ); 120*6e91df0bSDamjan Jovanovic 121*6e91df0bSDamjan Jovanovic Object oEmbObj = xShapeProps.getPropertyValue( "EmbeddedObject" ); 122*6e91df0bSDamjan Jovanovic XEmbeddedObject xEmbObj = ( XEmbeddedObject ) UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); 123*6e91df0bSDamjan Jovanovic if ( xEmbObj == null ) 124*6e91df0bSDamjan Jovanovic { 125*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Embedded object can not be accessed!" ); 126*6e91df0bSDamjan Jovanovic return false; 127*6e91df0bSDamjan Jovanovic } 128*6e91df0bSDamjan Jovanovic 129*6e91df0bSDamjan Jovanovic XEmbeddedClient xClient = xEmbObj.getClientSite(); 130*6e91df0bSDamjan Jovanovic if ( xClient == null ) 131*6e91df0bSDamjan Jovanovic { 132*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "The client for the object must be set!" ); 133*6e91df0bSDamjan Jovanovic return false; 134*6e91df0bSDamjan Jovanovic } 135*6e91df0bSDamjan Jovanovic 136*6e91df0bSDamjan Jovanovic Object oReplacement = xShapeProps.getPropertyValue( "Graphic" ); 137*6e91df0bSDamjan Jovanovic XGraphic xReplGraph = ( XGraphic ) UnoRuntime.queryInterface( XGraphic.class, oReplacement ); 138*6e91df0bSDamjan Jovanovic if ( xReplGraph == null ) 139*6e91df0bSDamjan Jovanovic { 140*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "The replacement graphic should be available!" ); 141*6e91df0bSDamjan Jovanovic return false; 142*6e91df0bSDamjan Jovanovic } 143*6e91df0bSDamjan Jovanovic 144*6e91df0bSDamjan Jovanovic return true; 145*6e91df0bSDamjan Jovanovic } 146*6e91df0bSDamjan Jovanovic catch( Exception e ) 147*6e91df0bSDamjan Jovanovic { 148*6e91df0bSDamjan Jovanovic m_aTestHelper.Error( "Exception: " + e ); 149*6e91df0bSDamjan Jovanovic return false; 150*6e91df0bSDamjan Jovanovic } 151*6e91df0bSDamjan Jovanovic } 152*6e91df0bSDamjan Jovanovic } 153