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