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 package complex.embedding; 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 25*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 26*b1cdbd2cSJim Jagielski import com.sun.star.lang.XSingleServiceFactory; 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski import com.sun.star.bridge.XUnoUrlResolver; 29*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 30*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 31*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 32*b1cdbd2cSJim Jagielski import com.sun.star.frame.XLoadable; 33*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPagesSupplier; 34*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPages; 35*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPage; 36*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShape; 37*b1cdbd2cSJim Jagielski import com.sun.star.graphic.XGraphic; 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski import com.sun.star.embed.*; 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski import share.LogWriter; 42*b1cdbd2cSJim Jagielski import complex.embedding.TestHelper; 43*b1cdbd2cSJim Jagielski import complex.embedding.EmbeddingTest; 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski public class Test01 implements EmbeddingTest { 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski XMultiServiceFactory m_xMSF; 48*b1cdbd2cSJim Jagielski TestHelper m_aTestHelper; 49*b1cdbd2cSJim Jagielski Test01( XMultiServiceFactory xMSF, LogWriter aLogWriter )50*b1cdbd2cSJim Jagielski public Test01( XMultiServiceFactory xMSF, LogWriter aLogWriter ) 51*b1cdbd2cSJim Jagielski { 52*b1cdbd2cSJim Jagielski m_xMSF = xMSF; 53*b1cdbd2cSJim Jagielski m_aTestHelper = new TestHelper( aLogWriter, "Test01: " ); 54*b1cdbd2cSJim Jagielski } 55*b1cdbd2cSJim Jagielski test()56*b1cdbd2cSJim Jagielski public boolean test() 57*b1cdbd2cSJim Jagielski { 58*b1cdbd2cSJim Jagielski try 59*b1cdbd2cSJim Jagielski { 60*b1cdbd2cSJim Jagielski Object oDoc = m_xMSF.createInstance( "com.sun.star.comp.Draw.DrawingDocument" ); 61*b1cdbd2cSJim Jagielski XLoadable xLoad = (XLoadable) UnoRuntime.queryInterface( XLoadable.class, oDoc ); 62*b1cdbd2cSJim Jagielski if ( xLoad == null ) 63*b1cdbd2cSJim Jagielski { 64*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Can not get XLoadable!" ); 65*b1cdbd2cSJim Jagielski return false; 66*b1cdbd2cSJim Jagielski } 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski xLoad.initNew(); 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski XDrawPagesSupplier xDPSupply = (XDrawPagesSupplier) UnoRuntime.queryInterface( XDrawPagesSupplier.class, oDoc ); 71*b1cdbd2cSJim Jagielski if ( xDPSupply == null ) 72*b1cdbd2cSJim Jagielski { 73*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Can not get XDrawPagesSupplier!" ); 74*b1cdbd2cSJim Jagielski return false; 75*b1cdbd2cSJim Jagielski } 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xDPSupply.getDrawPages(); 78*b1cdbd2cSJim Jagielski if ( xDrawPages == null ) 79*b1cdbd2cSJim Jagielski { 80*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Can not get XDrawPages object!" ); 81*b1cdbd2cSJim Jagielski return false; 82*b1cdbd2cSJim Jagielski } 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski if ( xDrawPages.getCount() == 0 ) 85*b1cdbd2cSJim Jagielski { 86*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "There must be at least one page in the document!" ); 87*b1cdbd2cSJim Jagielski return false; 88*b1cdbd2cSJim Jagielski } 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski Object oPage = xDrawPages.getByIndex( 0 ); 91*b1cdbd2cSJim Jagielski XDrawPage xPage = (XDrawPage) UnoRuntime.queryInterface( XDrawPage.class, oPage ); 92*b1cdbd2cSJim Jagielski if ( xPage == null ) 93*b1cdbd2cSJim Jagielski { 94*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Can not get access to drawing page!" ); 95*b1cdbd2cSJim Jagielski return false; 96*b1cdbd2cSJim Jagielski } 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski XMultiServiceFactory xDrFactory = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, 99*b1cdbd2cSJim Jagielski oDoc ); 100*b1cdbd2cSJim Jagielski if ( xDrFactory == null ) 101*b1cdbd2cSJim Jagielski { 102*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Can not get drawing factory!" ); 103*b1cdbd2cSJim Jagielski return false; 104*b1cdbd2cSJim Jagielski } 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski Object oShape = xDrFactory.createInstance( "com.sun.star.drawing.OLE2Shape" ); 107*b1cdbd2cSJim Jagielski XShape xShape = ( XShape ) UnoRuntime.queryInterface( XShape.class, oShape ); 108*b1cdbd2cSJim Jagielski if ( xShape == null ) 109*b1cdbd2cSJim Jagielski { 110*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Can not create new shape!" ); 111*b1cdbd2cSJim Jagielski return false; 112*b1cdbd2cSJim Jagielski } 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski XPropertySet xShapeProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, oShape ); 115*b1cdbd2cSJim Jagielski if ( xShapeProps == null ) 116*b1cdbd2cSJim Jagielski { 117*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Can not get access to shapes properties!" ); 118*b1cdbd2cSJim Jagielski return false; 119*b1cdbd2cSJim Jagielski } 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski xPage.add( xShape ); 122*b1cdbd2cSJim Jagielski xShapeProps.setPropertyValue( "CLSID", "078B7ABA-54FC-457F-8551-6147e776a997" ); 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski Object oEmbObj = xShapeProps.getPropertyValue( "EmbeddedObject" ); 125*b1cdbd2cSJim Jagielski XEmbeddedObject xEmbObj = ( XEmbeddedObject ) UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); 126*b1cdbd2cSJim Jagielski if ( xEmbObj == null ) 127*b1cdbd2cSJim Jagielski { 128*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Embedded object can not be accessed!" ); 129*b1cdbd2cSJim Jagielski return false; 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski XEmbeddedClient xClient = xEmbObj.getClientSite(); 133*b1cdbd2cSJim Jagielski if ( xClient == null ) 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "The client for the object must be set!" ); 136*b1cdbd2cSJim Jagielski return false; 137*b1cdbd2cSJim Jagielski } 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski Object oReplacement = xShapeProps.getPropertyValue( "Graphic" ); 140*b1cdbd2cSJim Jagielski XGraphic xReplGraph = ( XGraphic ) UnoRuntime.queryInterface( XGraphic.class, oReplacement ); 141*b1cdbd2cSJim Jagielski if ( xReplGraph == null ) 142*b1cdbd2cSJim Jagielski { 143*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "The replacement graphic should be available!" ); 144*b1cdbd2cSJim Jagielski return false; 145*b1cdbd2cSJim Jagielski } 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski return true; 148*b1cdbd2cSJim Jagielski } 149*b1cdbd2cSJim Jagielski catch( Exception e ) 150*b1cdbd2cSJim Jagielski { 151*b1cdbd2cSJim Jagielski m_aTestHelper.Error( "Exception: " + e ); 152*b1cdbd2cSJim Jagielski return false; 153*b1cdbd2cSJim Jagielski } 154*b1cdbd2cSJim Jagielski } 155*b1cdbd2cSJim Jagielski } 156*b1cdbd2cSJim Jagielski 157