xref: /trunk/main/embeddedobj/qa/complex/embedding/Test01.java (revision 3309286857f19787ae62bd793a98b5af4edd2ad3)
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