1113d1ee9SAndrew Rist /************************************************************** 2113d1ee9SAndrew Rist * 3113d1ee9SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4113d1ee9SAndrew Rist * or more contributor license agreements. See the NOTICE file 5113d1ee9SAndrew Rist * distributed with this work for additional information 6113d1ee9SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7113d1ee9SAndrew Rist * to you under the Apache License, Version 2.0 (the 8113d1ee9SAndrew Rist * "License"); you may not use this file except in compliance 9113d1ee9SAndrew Rist * with the License. You may obtain a copy of the License at 10113d1ee9SAndrew Rist * 11113d1ee9SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12113d1ee9SAndrew Rist * 13113d1ee9SAndrew Rist * Unless required by applicable law or agreed to in writing, 14113d1ee9SAndrew Rist * software distributed under the License is distributed on an 15113d1ee9SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16113d1ee9SAndrew Rist * KIND, either express or implied. See the License for the 17113d1ee9SAndrew Rist * specific language governing permissions and limitations 18113d1ee9SAndrew Rist * under the License. 19113d1ee9SAndrew Rist * 20113d1ee9SAndrew Rist *************************************************************/ 21113d1ee9SAndrew Rist 22cdf0e10cSrcweir package complex.embedding; 23cdf0e10cSrcweir 24cdf0e10cSrcweir import com.sun.star.uno.XInterface; 25cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 26cdf0e10cSrcweir import com.sun.star.lang.XSingleServiceFactory; 27cdf0e10cSrcweir 28cdf0e10cSrcweir import com.sun.star.bridge.XUnoUrlResolver; 29cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 30cdf0e10cSrcweir import com.sun.star.uno.XInterface; 31cdf0e10cSrcweir import com.sun.star.beans.XPropertySet; 32cdf0e10cSrcweir import com.sun.star.frame.XLoadable; 33cdf0e10cSrcweir import com.sun.star.drawing.XDrawPagesSupplier; 34cdf0e10cSrcweir import com.sun.star.drawing.XDrawPages; 35cdf0e10cSrcweir import com.sun.star.drawing.XDrawPage; 36cdf0e10cSrcweir import com.sun.star.drawing.XShape; 37cdf0e10cSrcweir import com.sun.star.graphic.XGraphic; 38cdf0e10cSrcweir 39cdf0e10cSrcweir import com.sun.star.embed.*; 40cdf0e10cSrcweir 41cdf0e10cSrcweir import complex.embedding.TestHelper; 42cdf0e10cSrcweir 4305ff6674SDamjan Jovanovic public class Test01 { 44cdf0e10cSrcweir 4505ff6674SDamjan Jovanovic XMultiServiceFactory m_xMSF; 4605ff6674SDamjan Jovanovic TestHelper m_aTestHelper; 47cdf0e10cSrcweir Test01( XMultiServiceFactory xMSF )4805ff6674SDamjan Jovanovic public Test01( XMultiServiceFactory xMSF ) 4905ff6674SDamjan Jovanovic { 5005ff6674SDamjan Jovanovic m_xMSF = xMSF; 5105ff6674SDamjan Jovanovic m_aTestHelper = new TestHelper( "Test01: " ); 5205ff6674SDamjan Jovanovic } 53cdf0e10cSrcweir test()54cdf0e10cSrcweir public boolean test() 5505ff6674SDamjan Jovanovic { 5605ff6674SDamjan Jovanovic try 5705ff6674SDamjan Jovanovic { 5805ff6674SDamjan Jovanovic Object oDoc = m_xMSF.createInstance( "com.sun.star.comp.Draw.DrawingDocument" ); 5905ff6674SDamjan Jovanovic XLoadable xLoad = (XLoadable) UnoRuntime.queryInterface( XLoadable.class, oDoc ); 6005ff6674SDamjan Jovanovic if ( xLoad == null ) 6105ff6674SDamjan Jovanovic { 6205ff6674SDamjan Jovanovic m_aTestHelper.Error( "Can not get XLoadable!" ); 6305ff6674SDamjan Jovanovic return false; 6405ff6674SDamjan Jovanovic } 6505ff6674SDamjan Jovanovic 6605ff6674SDamjan Jovanovic xLoad.initNew(); 6705ff6674SDamjan Jovanovic 6805ff6674SDamjan Jovanovic XDrawPagesSupplier xDPSupply = (XDrawPagesSupplier) UnoRuntime.queryInterface( XDrawPagesSupplier.class, oDoc ); 6905ff6674SDamjan Jovanovic if ( xDPSupply == null ) 7005ff6674SDamjan Jovanovic { 7105ff6674SDamjan Jovanovic m_aTestHelper.Error( "Can not get XDrawPagesSupplier!" ); 7205ff6674SDamjan Jovanovic return false; 7305ff6674SDamjan Jovanovic } 7405ff6674SDamjan Jovanovic 7505ff6674SDamjan Jovanovic XDrawPages xDrawPages = xDPSupply.getDrawPages(); 7605ff6674SDamjan Jovanovic if ( xDrawPages == null ) 7705ff6674SDamjan Jovanovic { 7805ff6674SDamjan Jovanovic m_aTestHelper.Error( "Can not get XDrawPages object!" ); 7905ff6674SDamjan Jovanovic return false; 8005ff6674SDamjan Jovanovic } 8105ff6674SDamjan Jovanovic 8205ff6674SDamjan Jovanovic if ( xDrawPages.getCount() == 0 ) 8305ff6674SDamjan Jovanovic { 8405ff6674SDamjan Jovanovic m_aTestHelper.Error( "There must be at least one page in the document!" ); 8505ff6674SDamjan Jovanovic return false; 8605ff6674SDamjan Jovanovic } 8705ff6674SDamjan Jovanovic 8805ff6674SDamjan Jovanovic Object oPage = xDrawPages.getByIndex( 0 ); 8905ff6674SDamjan Jovanovic XDrawPage xPage = (XDrawPage) UnoRuntime.queryInterface( XDrawPage.class, oPage ); 9005ff6674SDamjan Jovanovic if ( xPage == null ) 9105ff6674SDamjan Jovanovic { 9205ff6674SDamjan Jovanovic m_aTestHelper.Error( "Can not get access to drawing page!" ); 9305ff6674SDamjan Jovanovic return false; 9405ff6674SDamjan Jovanovic } 9505ff6674SDamjan Jovanovic 9605ff6674SDamjan Jovanovic XMultiServiceFactory xDrFactory = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, oDoc ); 9705ff6674SDamjan Jovanovic if ( xDrFactory == null ) 9805ff6674SDamjan Jovanovic { 9905ff6674SDamjan Jovanovic m_aTestHelper.Error( "Can not get drawing factory!" ); 10005ff6674SDamjan Jovanovic return false; 10105ff6674SDamjan Jovanovic } 10205ff6674SDamjan Jovanovic 10305ff6674SDamjan Jovanovic Object oShape = xDrFactory.createInstance( "com.sun.star.drawing.OLE2Shape" ); 10405ff6674SDamjan Jovanovic XShape xShape = ( XShape ) UnoRuntime.queryInterface( XShape.class, oShape ); 10505ff6674SDamjan Jovanovic if ( xShape == null ) 10605ff6674SDamjan Jovanovic { 10705ff6674SDamjan Jovanovic m_aTestHelper.Error( "Can not create new shape!" ); 10805ff6674SDamjan Jovanovic return false; 10905ff6674SDamjan Jovanovic } 11005ff6674SDamjan Jovanovic 11105ff6674SDamjan Jovanovic XPropertySet xShapeProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, oShape ); 11205ff6674SDamjan Jovanovic if ( xShapeProps == null ) 11305ff6674SDamjan Jovanovic { 11405ff6674SDamjan Jovanovic m_aTestHelper.Error( "Can not get access to shapes properties!" ); 11505ff6674SDamjan Jovanovic return false; 11605ff6674SDamjan Jovanovic } 11705ff6674SDamjan Jovanovic 11805ff6674SDamjan Jovanovic xPage.add( xShape ); 11905ff6674SDamjan Jovanovic xShapeProps.setPropertyValue( "CLSID", "078B7ABA-54FC-457F-8551-6147e776a997" ); 12005ff6674SDamjan Jovanovic 12105ff6674SDamjan Jovanovic Object oEmbObj = xShapeProps.getPropertyValue( "EmbeddedObject" ); 12205ff6674SDamjan Jovanovic XEmbeddedObject xEmbObj = ( XEmbeddedObject ) UnoRuntime.queryInterface( XEmbeddedObject.class, oEmbObj ); 12305ff6674SDamjan Jovanovic if ( xEmbObj == null ) 12405ff6674SDamjan Jovanovic { 12505ff6674SDamjan Jovanovic m_aTestHelper.Error( "Embedded object can not be accessed!" ); 12605ff6674SDamjan Jovanovic return false; 12705ff6674SDamjan Jovanovic } 12805ff6674SDamjan Jovanovic 12905ff6674SDamjan Jovanovic XEmbeddedClient xClient = xEmbObj.getClientSite(); 13005ff6674SDamjan Jovanovic if ( xClient == null ) 13105ff6674SDamjan Jovanovic { 13205ff6674SDamjan Jovanovic m_aTestHelper.Error( "The client for the object must be set!" ); 13305ff6674SDamjan Jovanovic return false; 13405ff6674SDamjan Jovanovic } 13505ff6674SDamjan Jovanovic 13605ff6674SDamjan Jovanovic Object oReplacement = xShapeProps.getPropertyValue( "Graphic" ); 13705ff6674SDamjan Jovanovic XGraphic xReplGraph = ( XGraphic ) UnoRuntime.queryInterface( XGraphic.class, oReplacement ); 13805ff6674SDamjan Jovanovic if ( xReplGraph == null ) 13905ff6674SDamjan Jovanovic { 14005ff6674SDamjan Jovanovic m_aTestHelper.Error( "The replacement graphic should be available!" ); 14105ff6674SDamjan Jovanovic return false; 14205ff6674SDamjan Jovanovic } 14305ff6674SDamjan Jovanovic 14405ff6674SDamjan Jovanovic return true; 14505ff6674SDamjan Jovanovic } 14605ff6674SDamjan Jovanovic catch( Exception e ) 14705ff6674SDamjan Jovanovic { 14805ff6674SDamjan Jovanovic m_aTestHelper.Error( "Exception: " + e ); 14905ff6674SDamjan Jovanovic return false; 15005ff6674SDamjan Jovanovic } 151cdf0e10cSrcweir } 152cdf0e10cSrcweir } 153cdf0e10cSrcweir 154