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