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 
23*b1cdbd2cSJim Jagielski package complex.bean;
24*b1cdbd2cSJim Jagielski 
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski // import complexlib.ComplexTestCase;
27*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory;
28*b1cdbd2cSJim Jagielski import java.awt.event.*;
29*b1cdbd2cSJim Jagielski import java.awt.event.KeyEvent;
30*b1cdbd2cSJim Jagielski import com.sun.star.comp.beans.OOoBean;
31*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski import java.awt.*;
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski // import org.junit.After;
36*b1cdbd2cSJim Jagielski import org.junit.AfterClass;
37*b1cdbd2cSJim Jagielski // import org.junit.Before;
38*b1cdbd2cSJim Jagielski import org.junit.BeforeClass;
39*b1cdbd2cSJim Jagielski import org.junit.Test;
40*b1cdbd2cSJim Jagielski import org.openoffice.test.OfficeConnection;
41*b1cdbd2cSJim Jagielski import static org.junit.Assert.*;
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski class PrivateLocalOfficeConnection extends com.sun.star.comp.beans.LocalOfficeConnection
44*b1cdbd2cSJim Jagielski {
PrivateLocalOfficeConnection(com.sun.star.uno.XComponentContext xContext)45*b1cdbd2cSJim Jagielski     public PrivateLocalOfficeConnection(com.sun.star.uno.XComponentContext xContext)
46*b1cdbd2cSJim Jagielski     {
47*b1cdbd2cSJim Jagielski         super(xContext);
48*b1cdbd2cSJim Jagielski     }
49*b1cdbd2cSJim Jagielski }
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski public class OOoBeanTest
52*b1cdbd2cSJim Jagielski {
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski //    public String[] getTestMethodNames()
55*b1cdbd2cSJim Jagielski //    {
56*b1cdbd2cSJim Jagielski //        // TODO think about trigger of sub-tests from outside
57*b1cdbd2cSJim Jagielski //        return new String[]
58*b1cdbd2cSJim Jagielski //        {
59*b1cdbd2cSJim Jagielski //              "test1",
60*b1cdbd2cSJim Jagielski //              "test2",
61*b1cdbd2cSJim Jagielski //              "test3",
62*b1cdbd2cSJim Jagielski //              "test4",
63*b1cdbd2cSJim Jagielski //              "test5",
64*b1cdbd2cSJim Jagielski //              "test6",
65*b1cdbd2cSJim Jagielski //              "test6a",
66*b1cdbd2cSJim Jagielski //              "test7",
67*b1cdbd2cSJim Jagielski //              "test8"
68*b1cdbd2cSJim Jagielski //        };
69*b1cdbd2cSJim Jagielski //    }
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski     /** For X-Windows we need to prolong the time between painting windows. Because
72*b1cdbd2cSJim Jagielski         it takes longer than on Windows.
73*b1cdbd2cSJim Jagielski     */
getSleepTime(int time)74*b1cdbd2cSJim Jagielski     private int getSleepTime(int time)
75*b1cdbd2cSJim Jagielski     {
76*b1cdbd2cSJim Jagielski         int ret = time;
77*b1cdbd2cSJim Jagielski         if (isWindows() == false)
78*b1cdbd2cSJim Jagielski         {
79*b1cdbd2cSJim Jagielski             return time * 5;
80*b1cdbd2cSJim Jagielski         }
81*b1cdbd2cSJim Jagielski         return time;
82*b1cdbd2cSJim Jagielski     }
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski     /** If it cannot be determined if we run on Windows then we assume
85*b1cdbd2cSJim Jagielski         that we do not.
86*b1cdbd2cSJim Jagielski     */
isWindows()87*b1cdbd2cSJim Jagielski     private boolean isWindows()
88*b1cdbd2cSJim Jagielski     {
89*b1cdbd2cSJim Jagielski         boolean ret = false;
90*b1cdbd2cSJim Jagielski         String os = System.getProperty("os.name");
91*b1cdbd2cSJim Jagielski         if (os != null)
92*b1cdbd2cSJim Jagielski         {
93*b1cdbd2cSJim Jagielski             os = os.trim();
94*b1cdbd2cSJim Jagielski             if (os.toLowerCase().indexOf("win") == 0)
95*b1cdbd2cSJim Jagielski             {
96*b1cdbd2cSJim Jagielski                 ret = true;
97*b1cdbd2cSJim Jagielski             }
98*b1cdbd2cSJim Jagielski         }
99*b1cdbd2cSJim Jagielski         return ret;
100*b1cdbd2cSJim Jagielski     }
101*b1cdbd2cSJim Jagielski 
getText(OOoBean bean)102*b1cdbd2cSJim Jagielski     private String getText(OOoBean bean) throws Exception
103*b1cdbd2cSJim Jagielski     {
104*b1cdbd2cSJim Jagielski         com.sun.star.frame.XModel model = (com.sun.star.frame.XModel)bean.getDocument();
105*b1cdbd2cSJim Jagielski         com.sun.star.text.XTextDocument myDoc =
106*b1cdbd2cSJim Jagielski             UnoRuntime.queryInterface(com.sun.star.text.XTextDocument.class, model);
107*b1cdbd2cSJim Jagielski         com.sun.star.text.XText xText = myDoc.getText();
108*b1cdbd2cSJim Jagielski         return xText.getString();
109*b1cdbd2cSJim Jagielski     }
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski     /** 1.Create a Java frame
112*b1cdbd2cSJim Jagielski      *  2.Add OOoBean (no document loaded yet)
113*b1cdbd2cSJim Jagielski      *  3.Show frame
114*b1cdbd2cSJim Jagielski      *  4.Load document
115*b1cdbd2cSJim Jagielski      * @throws Exception
116*b1cdbd2cSJim Jagielski      */
test1()117*b1cdbd2cSJim Jagielski     @Test public void test1() throws Exception
118*b1cdbd2cSJim Jagielski     {
119*b1cdbd2cSJim Jagielski         WriterFrame f = null;
120*b1cdbd2cSJim Jagielski         try
121*b1cdbd2cSJim Jagielski         {
122*b1cdbd2cSJim Jagielski             f = new WriterFrame(100 ,100, 500 ,400, false, connection.getComponentContext());
123*b1cdbd2cSJim Jagielski             f.setText("OOoBean test.");
124*b1cdbd2cSJim Jagielski             Thread.sleep(1000);
125*b1cdbd2cSJim Jagielski         }
126*b1cdbd2cSJim Jagielski         finally
127*b1cdbd2cSJim Jagielski         {
128*b1cdbd2cSJim Jagielski             if (f != null)
129*b1cdbd2cSJim Jagielski             {
130*b1cdbd2cSJim Jagielski                 f.dispose();
131*b1cdbd2cSJim Jagielski             }
132*b1cdbd2cSJim Jagielski         }
133*b1cdbd2cSJim Jagielski     }
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski     /** Sizing, painting
136*b1cdbd2cSJim Jagielski      * @throws Exception
137*b1cdbd2cSJim Jagielski      */
test2()138*b1cdbd2cSJim Jagielski     @Test public void test2() throws Exception
139*b1cdbd2cSJim Jagielski     {
140*b1cdbd2cSJim Jagielski         WriterFrame f = null;
141*b1cdbd2cSJim Jagielski         ScreenComparer capturer = null;
142*b1cdbd2cSJim Jagielski         try
143*b1cdbd2cSJim Jagielski         {
144*b1cdbd2cSJim Jagielski             f = new WriterFrame(100, 100, 500,500, false, connection.getComponentContext());
145*b1cdbd2cSJim Jagielski             if (f.checkUnoFramePosition() == false)
146*b1cdbd2cSJim Jagielski             {
147*b1cdbd2cSJim Jagielski                 fail("Sizing error: Client are of Java frame does not match the UNO window.");
148*b1cdbd2cSJim Jagielski             }
149*b1cdbd2cSJim Jagielski             capturer = new ScreenComparer(100, 100, 500, 500);
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski             //Minimize Window and back
152*b1cdbd2cSJim Jagielski             f.goToStart();
153*b1cdbd2cSJim Jagielski             f.pageDown();
154*b1cdbd2cSJim Jagielski             Thread.sleep(1000);
155*b1cdbd2cSJim Jagielski             for (int i = 0; i < 3; i++)
156*b1cdbd2cSJim Jagielski             {
157*b1cdbd2cSJim Jagielski                 capturer.reset();
158*b1cdbd2cSJim Jagielski                 capturer.grabOne(f.getClientArea());
159*b1cdbd2cSJim Jagielski                 f.setExtendedState(Frame.ICONIFIED);
160*b1cdbd2cSJim Jagielski                 Thread.sleep(getSleepTime(200));
161*b1cdbd2cSJim Jagielski                 if (f.checkUnoFramePosition() == false)
162*b1cdbd2cSJim Jagielski                 {
163*b1cdbd2cSJim Jagielski                     fail("Sizing error: Frame was iconified.");
164*b1cdbd2cSJim Jagielski                 }
165*b1cdbd2cSJim Jagielski                 f.setExtendedState(Frame.NORMAL);
166*b1cdbd2cSJim Jagielski                 Thread.sleep(getSleepTime(200));
167*b1cdbd2cSJim Jagielski                 if (f.checkUnoFramePosition() == false)
168*b1cdbd2cSJim Jagielski                 {
169*b1cdbd2cSJim Jagielski                     fail("Sizing error: Frame size set back to normal after it was iconified.");
170*b1cdbd2cSJim Jagielski                 }
171*b1cdbd2cSJim Jagielski                 capturer.grabTwo(f.getClientArea());
172*b1cdbd2cSJim Jagielski                 if (capturer.compare() == false)
173*b1cdbd2cSJim Jagielski                 {
174*b1cdbd2cSJim Jagielski                     fail("Painting error: Minimize (iconify) frame and back to normal size.");
175*b1cdbd2cSJim Jagielski                     capturer.writeImages();
176*b1cdbd2cSJim Jagielski                 }
177*b1cdbd2cSJim Jagielski             }
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski             //Maximize Window and back to normal
180*b1cdbd2cSJim Jagielski             for (int i = 0; i < 3; i++)
181*b1cdbd2cSJim Jagielski             {
182*b1cdbd2cSJim Jagielski                 capturer.reset();
183*b1cdbd2cSJim Jagielski                 capturer.grabOne(f.getClientArea());
184*b1cdbd2cSJim Jagielski                 f.setExtendedState(Frame.MAXIMIZED_BOTH);
185*b1cdbd2cSJim Jagielski                 Thread.sleep(getSleepTime(200));
186*b1cdbd2cSJim Jagielski                 if (f.checkUnoFramePosition() == false)
187*b1cdbd2cSJim Jagielski                 {
188*b1cdbd2cSJim Jagielski                     fail("Sizing error: Frame maximized.");
189*b1cdbd2cSJim Jagielski                 }
190*b1cdbd2cSJim Jagielski                 f.setExtendedState(Frame.NORMAL);
191*b1cdbd2cSJim Jagielski                 Thread.sleep(getSleepTime(200));
192*b1cdbd2cSJim Jagielski                 if (f.checkUnoFramePosition() == false)
193*b1cdbd2cSJim Jagielski                 {
194*b1cdbd2cSJim Jagielski                     fail("Sizing error: Frame set from maximized to normal.");
195*b1cdbd2cSJim Jagielski                 }
196*b1cdbd2cSJim Jagielski                 capturer.grabTwo(f.getClientArea());
197*b1cdbd2cSJim Jagielski                 if (capturer.compare() == false)
198*b1cdbd2cSJim Jagielski                 {
199*b1cdbd2cSJim Jagielski                     fail("Painting error: Maximize frame and back to normal size");
200*b1cdbd2cSJim Jagielski                     capturer.writeImages();
201*b1cdbd2cSJim Jagielski                 }
202*b1cdbd2cSJim Jagielski             }
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski             //move Window top left
205*b1cdbd2cSJim Jagielski             capturer.reset();
206*b1cdbd2cSJim Jagielski             capturer.grabOne(f.getClientArea());
207*b1cdbd2cSJim Jagielski             Rectangle oldPosition = f.getBounds();
208*b1cdbd2cSJim Jagielski             f.setBounds(0, 0, oldPosition.width, oldPosition.height);
209*b1cdbd2cSJim Jagielski             Thread.sleep(getSleepTime(200));
210*b1cdbd2cSJim Jagielski             if (f.checkUnoFramePosition() == false)
211*b1cdbd2cSJim Jagielski             {
212*b1cdbd2cSJim Jagielski                 fail("Sizing error: Frame moved.");
213*b1cdbd2cSJim Jagielski             }
214*b1cdbd2cSJim Jagielski 
215*b1cdbd2cSJim Jagielski             capturer.grabTwo(f.getClientArea());
216*b1cdbd2cSJim Jagielski             if (capturer.compare() == false)
217*b1cdbd2cSJim Jagielski             {
218*b1cdbd2cSJim Jagielski                 fail("Painting error: Move frame to a different position.");
219*b1cdbd2cSJim Jagielski                 capturer.writeImages();
220*b1cdbd2cSJim Jagielski             }
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski             //move Window down
223*b1cdbd2cSJim Jagielski             Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
224*b1cdbd2cSJim Jagielski             int maxY = dim.height - f.getBounds().height;
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski             int curY = 0;
227*b1cdbd2cSJim Jagielski             while (curY < maxY)
228*b1cdbd2cSJim Jagielski             {
229*b1cdbd2cSJim Jagielski                 capturer.reset();
230*b1cdbd2cSJim Jagielski                 capturer.grabOne(f.getClientArea());
231*b1cdbd2cSJim Jagielski                 oldPosition = f.getBounds();
232*b1cdbd2cSJim Jagielski                 f.setBounds(0, curY, oldPosition.width, oldPosition.height);
233*b1cdbd2cSJim Jagielski                 capturer.grabTwo(f.getClientArea());
234*b1cdbd2cSJim Jagielski                 if (capturer.compare() == false)
235*b1cdbd2cSJim Jagielski                 {
236*b1cdbd2cSJim Jagielski                     fail("Painting error: Move frame to a different position.");
237*b1cdbd2cSJim Jagielski                     capturer.writeImages();
238*b1cdbd2cSJim Jagielski                 }
239*b1cdbd2cSJim Jagielski                 curY+= 50;
240*b1cdbd2cSJim Jagielski                 Thread.sleep(getSleepTime(200));
241*b1cdbd2cSJim Jagielski             }
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski             //obscure the window and make it visible again
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski             oldPosition = f.getBounds();
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski             Rectangle pos = new Rectangle(oldPosition.x - 50, oldPosition.y - 50,
248*b1cdbd2cSJim Jagielski                                           oldPosition.width, oldPosition.height);
249*b1cdbd2cSJim Jagielski             Frame coverFrame = new Frame();
250*b1cdbd2cSJim Jagielski             coverFrame.setBounds(pos);
251*b1cdbd2cSJim Jagielski             capturer.reset();
252*b1cdbd2cSJim Jagielski             capturer.grabOne(f.getClientArea());
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski             for (int i = 0; i < 3; i++)
255*b1cdbd2cSJim Jagielski             {
256*b1cdbd2cSJim Jagielski                 coverFrame.setVisible(true);
257*b1cdbd2cSJim Jagielski                 Thread.sleep(getSleepTime(200));
258*b1cdbd2cSJim Jagielski                 f.toFront();
259*b1cdbd2cSJim Jagielski                 Thread.sleep(getSleepTime(200));
260*b1cdbd2cSJim Jagielski                 if (f.checkUnoFramePosition() == false)
261*b1cdbd2cSJim Jagielski                 {
262*b1cdbd2cSJim Jagielski                     fail("Sizing error: Frame moved from back to front.");
263*b1cdbd2cSJim Jagielski                 }
264*b1cdbd2cSJim Jagielski 
265*b1cdbd2cSJim Jagielski                 capturer.grabTwo(f.getClientArea());
266*b1cdbd2cSJim Jagielski                 if (capturer.compare() == false)
267*b1cdbd2cSJim Jagielski                 {
268*b1cdbd2cSJim Jagielski                     fail("Painting error: Move frame to back and to front.");
269*b1cdbd2cSJim Jagielski                     capturer.writeImages();
270*b1cdbd2cSJim Jagielski                 }
271*b1cdbd2cSJim Jagielski             }
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski             coverFrame.dispose();
274*b1cdbd2cSJim Jagielski         }
275*b1cdbd2cSJim Jagielski         finally
276*b1cdbd2cSJim Jagielski         {
277*b1cdbd2cSJim Jagielski             if (f != null)
278*b1cdbd2cSJim Jagielski             {
279*b1cdbd2cSJim Jagielski                 f.dispose();
280*b1cdbd2cSJim Jagielski             }
281*b1cdbd2cSJim Jagielski         }
282*b1cdbd2cSJim Jagielski     }
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski     /**
285*b1cdbd2cSJim Jagielski        1. Create a OOoBean
286*b1cdbd2cSJim Jagielski        2. Load a document
287*b1cdbd2cSJim Jagielski        3. Create Frame (do not show yet)
288*b1cdbd2cSJim Jagielski        4. Add OOoBean to Frame
289*b1cdbd2cSJim Jagielski        5. Show Frame
290*b1cdbd2cSJim Jagielski      * @throws Exception
291*b1cdbd2cSJim Jagielski      */
test3()292*b1cdbd2cSJim Jagielski     @Test public void test3() throws Exception
293*b1cdbd2cSJim Jagielski     {
294*b1cdbd2cSJim Jagielski         WriterFrame f = null;
295*b1cdbd2cSJim Jagielski         try
296*b1cdbd2cSJim Jagielski         {
297*b1cdbd2cSJim Jagielski             f = new WriterFrame(100, 100, 500, 300, true, connection.getComponentContext());
298*b1cdbd2cSJim Jagielski             if (f.checkUnoFramePosition() == false)
299*b1cdbd2cSJim Jagielski             {
300*b1cdbd2cSJim Jagielski                 fail("Sizing error.");
301*b1cdbd2cSJim Jagielski             }
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski         }
304*b1cdbd2cSJim Jagielski         finally
305*b1cdbd2cSJim Jagielski         {
306*b1cdbd2cSJim Jagielski             if (f != null)
307*b1cdbd2cSJim Jagielski             {
308*b1cdbd2cSJim Jagielski                 f.dispose();
309*b1cdbd2cSJim Jagielski             }
310*b1cdbd2cSJim Jagielski         }
311*b1cdbd2cSJim Jagielski     }
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski     /** Test repeated OOoBean.aquireSystemWindow and OOoBean.releaseSystemWindow
314*b1cdbd2cSJim Jagielski      * calls.
315*b1cdbd2cSJim Jagielski      * @throws Exception
316*b1cdbd2cSJim Jagielski      */
test4()317*b1cdbd2cSJim Jagielski     @Test public void test4() throws Exception
318*b1cdbd2cSJim Jagielski     {
319*b1cdbd2cSJim Jagielski         WriterFrame f = null;
320*b1cdbd2cSJim Jagielski         try
321*b1cdbd2cSJim Jagielski         {
322*b1cdbd2cSJim Jagielski             f = new WriterFrame(100, 100, 500, 300, false, connection.getComponentContext());
323*b1cdbd2cSJim Jagielski             OOoBean b = f.getBean();
324*b1cdbd2cSJim Jagielski             for (int i = 0; i < 100; i++)
325*b1cdbd2cSJim Jagielski             {
326*b1cdbd2cSJim Jagielski                 b.releaseSystemWindow();
327*b1cdbd2cSJim Jagielski                 b.aquireSystemWindow();
328*b1cdbd2cSJim Jagielski             }
329*b1cdbd2cSJim Jagielski             if (f.checkUnoFramePosition() == false)
330*b1cdbd2cSJim Jagielski             {
331*b1cdbd2cSJim Jagielski                 fail("Sizing error.");
332*b1cdbd2cSJim Jagielski             }
333*b1cdbd2cSJim Jagielski         }
334*b1cdbd2cSJim Jagielski         finally
335*b1cdbd2cSJim Jagielski         {
336*b1cdbd2cSJim Jagielski             if (f != null)
337*b1cdbd2cSJim Jagielski             {
338*b1cdbd2cSJim Jagielski                 f.dispose();
339*b1cdbd2cSJim Jagielski             }
340*b1cdbd2cSJim Jagielski             if (isWindows() == false)
341*b1cdbd2cSJim Jagielski             {
342*b1cdbd2cSJim Jagielski                 Thread.sleep(10000);
343*b1cdbd2cSJim Jagielski             }
344*b1cdbd2cSJim Jagielski         }
345*b1cdbd2cSJim Jagielski     }
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski     /** Adding and removing the bean to a Java frame multiple times.
348*b1cdbd2cSJim Jagielski      * Test painting and sizing.
349*b1cdbd2cSJim Jagielski      * @throws Exception
350*b1cdbd2cSJim Jagielski      */
test5()351*b1cdbd2cSJim Jagielski     @Test public void test5() throws Exception
352*b1cdbd2cSJim Jagielski     {
353*b1cdbd2cSJim Jagielski         WriterFrame f = null;
354*b1cdbd2cSJim Jagielski         try
355*b1cdbd2cSJim Jagielski         {
356*b1cdbd2cSJim Jagielski             f = new WriterFrame(100, 100, 500, 400, false, connection.getComponentContext());
357*b1cdbd2cSJim Jagielski             f.goToStart();
358*b1cdbd2cSJim Jagielski             f.pageDown();
359*b1cdbd2cSJim Jagielski             Thread.sleep(1000);
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski             ScreenComparer capturer = new ScreenComparer(100,100,500,400);
362*b1cdbd2cSJim Jagielski             capturer.grabOne();
363*b1cdbd2cSJim Jagielski             for (int i = 0; i < 100; i++)
364*b1cdbd2cSJim Jagielski             {
365*b1cdbd2cSJim Jagielski                 f.removeOOoBean();
366*b1cdbd2cSJim Jagielski                 f.addOOoBean();
367*b1cdbd2cSJim Jagielski             }
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski             f.goToStart();
370*b1cdbd2cSJim Jagielski             f.pageDown();
371*b1cdbd2cSJim Jagielski             Thread.sleep(getSleepTime(200));
372*b1cdbd2cSJim Jagielski             capturer.grabTwo();
373*b1cdbd2cSJim Jagielski 
374*b1cdbd2cSJim Jagielski             if (capturer.compare() == false)
375*b1cdbd2cSJim Jagielski             {
376*b1cdbd2cSJim Jagielski                 fail("Painting error: adding and removing OOoBean " +
377*b1cdbd2cSJim Jagielski                        "repeatedly to java.lang.Frame.");
378*b1cdbd2cSJim Jagielski                 capturer.writeImages();
379*b1cdbd2cSJim Jagielski             }
380*b1cdbd2cSJim Jagielski 
381*b1cdbd2cSJim Jagielski             if (f.checkUnoFramePosition() == false)
382*b1cdbd2cSJim Jagielski             {
383*b1cdbd2cSJim Jagielski                 fail("Sizing error.");
384*b1cdbd2cSJim Jagielski             }
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski         }
387*b1cdbd2cSJim Jagielski         finally
388*b1cdbd2cSJim Jagielski         {
389*b1cdbd2cSJim Jagielski             if (f != null)
390*b1cdbd2cSJim Jagielski             {
391*b1cdbd2cSJim Jagielski                 f.dispose();
392*b1cdbd2cSJim Jagielski             }
393*b1cdbd2cSJim Jagielski             if (isWindows() == false)
394*b1cdbd2cSJim Jagielski             {
395*b1cdbd2cSJim Jagielski                 Thread.sleep(10000);
396*b1cdbd2cSJim Jagielski             }
397*b1cdbd2cSJim Jagielski         }
398*b1cdbd2cSJim Jagielski     }
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski 
401*b1cdbd2cSJim Jagielski     /** Test focus 	(i49454). After repeatedly adding and removing the bean to a window
402*b1cdbd2cSJim Jagielski      * it should still be possible to enter text in the window. This does not
403*b1cdbd2cSJim Jagielski      * work all the time on Windows. This is probably a timing problem. When using
404*b1cdbd2cSJim Jagielski      * Thread.sleep (position #1) then it should work.
405*b1cdbd2cSJim Jagielski      * @throws Exception
406*b1cdbd2cSJim Jagielski      */
test6()407*b1cdbd2cSJim Jagielski     @Test public void test6() throws Exception
408*b1cdbd2cSJim Jagielski     {
409*b1cdbd2cSJim Jagielski         for (int j = 0; j < 10; j++)
410*b1cdbd2cSJim Jagielski         {
411*b1cdbd2cSJim Jagielski             final OOoBean bean = new OOoBean(new PrivateLocalOfficeConnection(connection.getComponentContext()));
412*b1cdbd2cSJim Jagielski             java.awt.Frame frame = null;
413*b1cdbd2cSJim Jagielski             bean.setOOoCallTimeOut(10000);
414*b1cdbd2cSJim Jagielski             try {
415*b1cdbd2cSJim Jagielski                 frame = new java.awt.Frame("OpenOffice.org Demo");
416*b1cdbd2cSJim Jagielski                 frame.add(bean, BorderLayout.CENTER);
417*b1cdbd2cSJim Jagielski                 frame.pack();
418*b1cdbd2cSJim Jagielski                 frame.setSize(600,300);
419*b1cdbd2cSJim Jagielski                 frame.show();
420*b1cdbd2cSJim Jagielski                 bean.loadFromURL("private:factory/swriter", null);
421*b1cdbd2cSJim Jagielski                 // #1
422*b1cdbd2cSJim Jagielski                 Thread.sleep(1000);
423*b1cdbd2cSJim Jagielski 
424*b1cdbd2cSJim Jagielski                 StringBuffer buf = new StringBuffer(1000);
425*b1cdbd2cSJim Jagielski                 for (int i = 0; i < 1; i++)
426*b1cdbd2cSJim Jagielski                 {
427*b1cdbd2cSJim Jagielski //                    Thread.sleep(1000);
428*b1cdbd2cSJim Jagielski                     bean.releaseSystemWindow();
429*b1cdbd2cSJim Jagielski                     frame.remove(bean);
430*b1cdbd2cSJim Jagielski //                    frame.validate();
431*b1cdbd2cSJim Jagielski //                    Thread.sleep(1000);
432*b1cdbd2cSJim Jagielski                     frame.add(bean, BorderLayout.CENTER);
433*b1cdbd2cSJim Jagielski                     bean.aquireSystemWindow();
434*b1cdbd2cSJim Jagielski //                    frame.validate();
435*b1cdbd2cSJim Jagielski                 }
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski                 if (isWindows() == false)
438*b1cdbd2cSJim Jagielski                 {
439*b1cdbd2cSJim Jagielski                     Thread.sleep(5000);
440*b1cdbd2cSJim Jagielski                 }
441*b1cdbd2cSJim Jagielski 
442*b1cdbd2cSJim Jagielski                 Robot roby = new Robot();
443*b1cdbd2cSJim Jagielski                 roby.keyPress(KeyEvent.VK_H);
444*b1cdbd2cSJim Jagielski                 roby.keyRelease(KeyEvent.VK_H);
445*b1cdbd2cSJim Jagielski                 buf.append("h");
446*b1cdbd2cSJim Jagielski 
447*b1cdbd2cSJim Jagielski                 String s = getText(bean);
448*b1cdbd2cSJim Jagielski                 if ( ! s.equals(buf.toString()))
449*b1cdbd2cSJim Jagielski                 {
450*b1cdbd2cSJim Jagielski                     fail("Focus error: After removing and adding the bean, the" +
451*b1cdbd2cSJim Jagielski                            "office window does not receive keyboard input.\n" +
452*b1cdbd2cSJim Jagielski                            "Try typing in the window, you've got 30s!!! This " +
453*b1cdbd2cSJim Jagielski                            "test may not work with Linux/Solaris");
454*b1cdbd2cSJim Jagielski                     Thread.sleep(30000);
455*b1cdbd2cSJim Jagielski                     break;
456*b1cdbd2cSJim Jagielski                 }
457*b1cdbd2cSJim Jagielski                 else
458*b1cdbd2cSJim Jagielski                 {
459*b1cdbd2cSJim Jagielski                     Thread.sleep(2000);
460*b1cdbd2cSJim Jagielski                 }
461*b1cdbd2cSJim Jagielski 
462*b1cdbd2cSJim Jagielski             } finally {
463*b1cdbd2cSJim Jagielski                 bean.stopOOoConnection();
464*b1cdbd2cSJim Jagielski                 frame.dispose();
465*b1cdbd2cSJim Jagielski             }
466*b1cdbd2cSJim Jagielski         }
467*b1cdbd2cSJim Jagielski     }
468*b1cdbd2cSJim Jagielski 
469*b1cdbd2cSJim Jagielski     /** Tests focus problem just like test6, but the implementation is a little
470*b1cdbd2cSJim Jagielski      * different. The bean is added and removed from withing the event dispatch
471*b1cdbd2cSJim Jagielski      * thread. Using Thread.sleep at various points (#1, #2, #3) seems to workaround
472*b1cdbd2cSJim Jagielski      * the problem.
473*b1cdbd2cSJim Jagielski      * @throws Exception
474*b1cdbd2cSJim Jagielski      */
test6a()475*b1cdbd2cSJim Jagielski     @Test public void test6a() throws Exception
476*b1cdbd2cSJim Jagielski     {
477*b1cdbd2cSJim Jagielski         for (int j = 0; j < 50; j++)
478*b1cdbd2cSJim Jagielski         {
479*b1cdbd2cSJim Jagielski             final OOoBean bean = new OOoBean(new PrivateLocalOfficeConnection(connection.getComponentContext()));
480*b1cdbd2cSJim Jagielski             final java.awt.Frame frame = new Frame("Openoffice.org");
481*b1cdbd2cSJim Jagielski             bean.setOOoCallTimeOut(10000);
482*b1cdbd2cSJim Jagielski 
483*b1cdbd2cSJim Jagielski             try {
484*b1cdbd2cSJim Jagielski                 frame.add(bean, BorderLayout.CENTER);
485*b1cdbd2cSJim Jagielski                 frame.pack();
486*b1cdbd2cSJim Jagielski                 frame.setSize(600,400);
487*b1cdbd2cSJim Jagielski                 frame.show();
488*b1cdbd2cSJim Jagielski                 bean.loadFromURL("private:factory/swriter", null);
489*b1cdbd2cSJim Jagielski                 frame.validate();
490*b1cdbd2cSJim Jagielski                 // #1
491*b1cdbd2cSJim Jagielski                 Thread.sleep(1000);
492*b1cdbd2cSJim Jagielski                 StringBuffer buf = new StringBuffer(1000);
493*b1cdbd2cSJim Jagielski                 int i = 0;
494*b1cdbd2cSJim Jagielski 
495*b1cdbd2cSJim Jagielski                 for (; i < 1; i++)
496*b1cdbd2cSJim Jagielski                 {
497*b1cdbd2cSJim Jagielski                 EventQueue q = Toolkit.getDefaultToolkit().getSystemEventQueue();
498*b1cdbd2cSJim Jagielski                 q.invokeAndWait( new Runnable() {
499*b1cdbd2cSJim Jagielski                         public void run() {
500*b1cdbd2cSJim Jagielski                             try {
501*b1cdbd2cSJim Jagielski 
502*b1cdbd2cSJim Jagielski                             bean.releaseSystemWindow();
503*b1cdbd2cSJim Jagielski                             frame.remove(bean);
504*b1cdbd2cSJim Jagielski                             frame.validate();
505*b1cdbd2cSJim Jagielski 
506*b1cdbd2cSJim Jagielski                             } catch (Exception e) {
507*b1cdbd2cSJim Jagielski                                 e.printStackTrace();
508*b1cdbd2cSJim Jagielski                             }
509*b1cdbd2cSJim Jagielski 
510*b1cdbd2cSJim Jagielski                             }
511*b1cdbd2cSJim Jagielski                         });
512*b1cdbd2cSJim Jagielski                 // #2
513*b1cdbd2cSJim Jagielski                 Thread.sleep(1000);
514*b1cdbd2cSJim Jagielski                 q.invokeAndWait( new Runnable() {
515*b1cdbd2cSJim Jagielski                         public void run() {
516*b1cdbd2cSJim Jagielski                             try {
517*b1cdbd2cSJim Jagielski 
518*b1cdbd2cSJim Jagielski                             frame.add(bean, BorderLayout.CENTER);
519*b1cdbd2cSJim Jagielski                             bean.aquireSystemWindow();
520*b1cdbd2cSJim Jagielski                             frame.validate();
521*b1cdbd2cSJim Jagielski                             } catch (Exception e) {
522*b1cdbd2cSJim Jagielski                                 e.printStackTrace();
523*b1cdbd2cSJim Jagielski                             }
524*b1cdbd2cSJim Jagielski                             }
525*b1cdbd2cSJim Jagielski                         });
526*b1cdbd2cSJim Jagielski 
527*b1cdbd2cSJim Jagielski                 // #3
528*b1cdbd2cSJim Jagielski                 Thread.sleep(1000);
529*b1cdbd2cSJim Jagielski                 }
530*b1cdbd2cSJim Jagielski 
531*b1cdbd2cSJim Jagielski                 if (isWindows() == false)
532*b1cdbd2cSJim Jagielski                 {
533*b1cdbd2cSJim Jagielski                     Thread.sleep(5000);
534*b1cdbd2cSJim Jagielski                 }
535*b1cdbd2cSJim Jagielski 
536*b1cdbd2cSJim Jagielski                 Robot roby = new Robot();
537*b1cdbd2cSJim Jagielski                 roby.mouseMove(300, 200);
538*b1cdbd2cSJim Jagielski                 roby.waitForIdle();
539*b1cdbd2cSJim Jagielski                 roby.mousePress(InputEvent.BUTTON1_MASK);
540*b1cdbd2cSJim Jagielski                 roby.waitForIdle();
541*b1cdbd2cSJim Jagielski                 roby.mouseRelease(InputEvent.BUTTON1_MASK);
542*b1cdbd2cSJim Jagielski                 roby.waitForIdle();
543*b1cdbd2cSJim Jagielski                 roby.keyPress(KeyEvent.VK_H);
544*b1cdbd2cSJim Jagielski                 roby.waitForIdle();
545*b1cdbd2cSJim Jagielski                 roby.keyRelease(KeyEvent.VK_H);
546*b1cdbd2cSJim Jagielski                 roby.waitForIdle();
547*b1cdbd2cSJim Jagielski 
548*b1cdbd2cSJim Jagielski                 buf.append("h");
549*b1cdbd2cSJim Jagielski                 Thread.sleep(1000);
550*b1cdbd2cSJim Jagielski                 String s = getText(bean);
551*b1cdbd2cSJim Jagielski                 System.out.println(" getText: " + s);
552*b1cdbd2cSJim Jagielski                 if ( ! s.equals(buf.toString()))
553*b1cdbd2cSJim Jagielski                 {
554*b1cdbd2cSJim Jagielski                     roby.mousePress(InputEvent.BUTTON1_MASK);
555*b1cdbd2cSJim Jagielski                     roby.waitForIdle();
556*b1cdbd2cSJim Jagielski                     roby.mouseRelease(InputEvent.BUTTON1_MASK);
557*b1cdbd2cSJim Jagielski                     roby.waitForIdle();
558*b1cdbd2cSJim Jagielski                     roby.keyPress(KeyEvent.VK_H);
559*b1cdbd2cSJim Jagielski                     roby.waitForIdle();
560*b1cdbd2cSJim Jagielski                     roby.keyRelease(KeyEvent.VK_H);
561*b1cdbd2cSJim Jagielski                     roby.waitForIdle();
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski                     String sH = "h";
564*b1cdbd2cSJim Jagielski                     Thread.sleep(1000);
565*b1cdbd2cSJim Jagielski                     String s2 = getText(bean);
566*b1cdbd2cSJim Jagielski 
567*b1cdbd2cSJim Jagielski                     if ( ! sH.equals(s2))
568*b1cdbd2cSJim Jagielski                     {
569*b1cdbd2cSJim Jagielski                         fail("Focus error: After removing and adding the bean, the" +
570*b1cdbd2cSJim Jagielski                                "office window does not receive keyboard input.\n" +
571*b1cdbd2cSJim Jagielski                                "Try typing in the window, you've got 30s!!! This " +
572*b1cdbd2cSJim Jagielski                                "test may not work with Linux/Solaris");
573*b1cdbd2cSJim Jagielski                         System.out.println("j: " + j + "   i: " + i);
574*b1cdbd2cSJim Jagielski                         Thread.sleep(30000);
575*b1cdbd2cSJim Jagielski                         break;
576*b1cdbd2cSJim Jagielski                     }
577*b1cdbd2cSJim Jagielski                 }
578*b1cdbd2cSJim Jagielski                 else
579*b1cdbd2cSJim Jagielski                 {
580*b1cdbd2cSJim Jagielski                     //                   Thread.sleep(2000);
581*b1cdbd2cSJim Jagielski                 }
582*b1cdbd2cSJim Jagielski 
583*b1cdbd2cSJim Jagielski             } finally {
584*b1cdbd2cSJim Jagielski                 bean.stopOOoConnection();
585*b1cdbd2cSJim Jagielski                 frame.dispose();
586*b1cdbd2cSJim Jagielski             }
587*b1cdbd2cSJim Jagielski         }
588*b1cdbd2cSJim Jagielski     }
589*b1cdbd2cSJim Jagielski 
590*b1cdbd2cSJim Jagielski     /** Repeatedly loading a document in one and the same OOoBean instance.
591*b1cdbd2cSJim Jagielski      * @throws Exception
592*b1cdbd2cSJim Jagielski      */
test7()593*b1cdbd2cSJim Jagielski     @Test public void test7() throws Exception
594*b1cdbd2cSJim Jagielski     {
595*b1cdbd2cSJim Jagielski         WriterFrame f = null;
596*b1cdbd2cSJim Jagielski         try
597*b1cdbd2cSJim Jagielski         {
598*b1cdbd2cSJim Jagielski             f = new WriterFrame(100 ,100, 500 ,400, false, connection.getComponentContext());
599*b1cdbd2cSJim Jagielski             String text = "OOoBean test.";
600*b1cdbd2cSJim Jagielski 
601*b1cdbd2cSJim Jagielski             for (int i = 0; i < 10; i++)
602*b1cdbd2cSJim Jagielski             {
603*b1cdbd2cSJim Jagielski                 f.getBean().clear();
604*b1cdbd2cSJim Jagielski                 f.getBean().loadFromURL("private:factory/swriter", null);
605*b1cdbd2cSJim Jagielski                 f.setText(text);
606*b1cdbd2cSJim Jagielski                 f.goToStart();
607*b1cdbd2cSJim Jagielski                 f.validate();
608*b1cdbd2cSJim Jagielski 
609*b1cdbd2cSJim Jagielski                 if (text.equals(f.getText()) == false)
610*b1cdbd2cSJim Jagielski                 {
611*b1cdbd2cSJim Jagielski                     fail("Repeated loading of a document failed.");
612*b1cdbd2cSJim Jagielski                 }
613*b1cdbd2cSJim Jagielski                 Thread.sleep(1000);
614*b1cdbd2cSJim Jagielski             }
615*b1cdbd2cSJim Jagielski         }
616*b1cdbd2cSJim Jagielski         finally
617*b1cdbd2cSJim Jagielski         {
618*b1cdbd2cSJim Jagielski             if (f != null)
619*b1cdbd2cSJim Jagielski             {
620*b1cdbd2cSJim Jagielski                 f.dispose();
621*b1cdbd2cSJim Jagielski             }
622*b1cdbd2cSJim Jagielski         }
623*b1cdbd2cSJim Jagielski     }
624*b1cdbd2cSJim Jagielski 
625*b1cdbd2cSJim Jagielski     /** Using multiple instances of OOoBean at the same time
626*b1cdbd2cSJim Jagielski      * @throws Exception
627*b1cdbd2cSJim Jagielski      */
628*b1cdbd2cSJim Jagielski 
test8()629*b1cdbd2cSJim Jagielski     @Test public void test8() throws Exception
630*b1cdbd2cSJim Jagielski     {
631*b1cdbd2cSJim Jagielski         OOoBean bean1 = new OOoBean(new PrivateLocalOfficeConnection(connection.getComponentContext()));
632*b1cdbd2cSJim Jagielski         BeanPanel bp1 = new BeanPanel(bean1);
633*b1cdbd2cSJim Jagielski         OOoBean bean2 = new OOoBean(new PrivateLocalOfficeConnection(connection.getComponentContext()));
634*b1cdbd2cSJim Jagielski         BeanPanel bp2 = new BeanPanel(bean2);
635*b1cdbd2cSJim Jagielski         OOoBean bean3 = new OOoBean(new PrivateLocalOfficeConnection(connection.getComponentContext()));
636*b1cdbd2cSJim Jagielski         BeanPanel bp3 = new BeanPanel(bean3);
637*b1cdbd2cSJim Jagielski         OOoBean bean4 = new OOoBean(new PrivateLocalOfficeConnection(connection.getComponentContext()));
638*b1cdbd2cSJim Jagielski         BeanPanel bp4 = new BeanPanel(bean4);
639*b1cdbd2cSJim Jagielski 
640*b1cdbd2cSJim Jagielski         try
641*b1cdbd2cSJim Jagielski         {
642*b1cdbd2cSJim Jagielski             Frame f = new Frame("OOoBean example with several instances");
643*b1cdbd2cSJim Jagielski             f.setLayout(new GridBagLayout());
644*b1cdbd2cSJim Jagielski             GridBagConstraints c = new GridBagConstraints();
645*b1cdbd2cSJim Jagielski             c.fill = GridBagConstraints.HORIZONTAL;
646*b1cdbd2cSJim Jagielski             c.weightx = 0.5;
647*b1cdbd2cSJim Jagielski 
648*b1cdbd2cSJim Jagielski             c.insets = new Insets(0, 0, 0, 10);
649*b1cdbd2cSJim Jagielski             c.gridx = 0;
650*b1cdbd2cSJim Jagielski             c.gridy = 0;
651*b1cdbd2cSJim Jagielski             f.add(bp1, c);
652*b1cdbd2cSJim Jagielski 
653*b1cdbd2cSJim Jagielski             c.gridx = 1;
654*b1cdbd2cSJim Jagielski             c.insets = new Insets(0, 0, 0, 0);
655*b1cdbd2cSJim Jagielski             f.add(bp2, c);
656*b1cdbd2cSJim Jagielski 
657*b1cdbd2cSJim Jagielski             c.gridx = 0;
658*b1cdbd2cSJim Jagielski             c.gridy = 1;
659*b1cdbd2cSJim Jagielski             c.insets = new Insets(10, 0, 0, 10);
660*b1cdbd2cSJim Jagielski             f.add(bp3, c);
661*b1cdbd2cSJim Jagielski 
662*b1cdbd2cSJim Jagielski             c.gridx = 1;
663*b1cdbd2cSJim Jagielski             c.gridy = 1;
664*b1cdbd2cSJim Jagielski             c.insets = new Insets(10, 0, 0, 0);
665*b1cdbd2cSJim Jagielski             f.add(bp4, c);
666*b1cdbd2cSJim Jagielski 
667*b1cdbd2cSJim Jagielski             f.pack();
668*b1cdbd2cSJim Jagielski             f.setBounds(0, 0, 1000, 600);
669*b1cdbd2cSJim Jagielski             f.setVisible(true);
670*b1cdbd2cSJim Jagielski             try {
671*b1cdbd2cSJim Jagielski             bean1.loadFromURL("private:factory/swriter", null);
672*b1cdbd2cSJim Jagielski             bean2.loadFromURL("private:factory/swriter", null);
673*b1cdbd2cSJim Jagielski             bean3.loadFromURL("private:factory/swriter", null);
674*b1cdbd2cSJim Jagielski             bean4.loadFromURL("private:factory/swriter", null);
675*b1cdbd2cSJim Jagielski             } catch( Exception e)
676*b1cdbd2cSJim Jagielski             {
677*b1cdbd2cSJim Jagielski                 e.printStackTrace();
678*b1cdbd2cSJim Jagielski             }
679*b1cdbd2cSJim Jagielski             f.validate();
680*b1cdbd2cSJim Jagielski 
681*b1cdbd2cSJim Jagielski             Thread.sleep(10000);
682*b1cdbd2cSJim Jagielski         }
683*b1cdbd2cSJim Jagielski         finally
684*b1cdbd2cSJim Jagielski         {
685*b1cdbd2cSJim Jagielski             bean1.stopOOoConnection();
686*b1cdbd2cSJim Jagielski             bean2.stopOOoConnection();
687*b1cdbd2cSJim Jagielski             bean3.stopOOoConnection();
688*b1cdbd2cSJim Jagielski             bean4.stopOOoConnection();
689*b1cdbd2cSJim Jagielski         }
690*b1cdbd2cSJim Jagielski     }
691*b1cdbd2cSJim Jagielski 
692*b1cdbd2cSJim Jagielski     class BeanPanel extends Panel
693*b1cdbd2cSJim Jagielski     {
BeanPanel(OOoBean b)694*b1cdbd2cSJim Jagielski         public BeanPanel(OOoBean b)
695*b1cdbd2cSJim Jagielski         {
696*b1cdbd2cSJim Jagielski             setLayout(new BorderLayout());
697*b1cdbd2cSJim Jagielski             add(b, BorderLayout.CENTER);
698*b1cdbd2cSJim Jagielski         }
getPreferredSize()699*b1cdbd2cSJim Jagielski         public Dimension getPreferredSize()
700*b1cdbd2cSJim Jagielski         {
701*b1cdbd2cSJim Jagielski             Container c = getParent();
702*b1cdbd2cSJim Jagielski             return new Dimension(200, 200);
703*b1cdbd2cSJim Jagielski         }
704*b1cdbd2cSJim Jagielski     }
705*b1cdbd2cSJim Jagielski 
706*b1cdbd2cSJim Jagielski 
707*b1cdbd2cSJim Jagielski 
708*b1cdbd2cSJim Jagielski 
getMSF()709*b1cdbd2cSJim Jagielski     private XMultiServiceFactory getMSF()
710*b1cdbd2cSJim Jagielski     {
711*b1cdbd2cSJim Jagielski         final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
712*b1cdbd2cSJim Jagielski         return xMSF1;
713*b1cdbd2cSJim Jagielski     }
714*b1cdbd2cSJim Jagielski 
715*b1cdbd2cSJim Jagielski     // setup and close connections
setUpConnection()716*b1cdbd2cSJim Jagielski     @BeforeClass public static void setUpConnection() throws Exception {
717*b1cdbd2cSJim Jagielski         System.out.println("setUpConnection()");
718*b1cdbd2cSJim Jagielski         connection.setUp();
719*b1cdbd2cSJim Jagielski     }
720*b1cdbd2cSJim Jagielski 
tearDownConnection()721*b1cdbd2cSJim Jagielski     @AfterClass public static void tearDownConnection()
722*b1cdbd2cSJim Jagielski         throws InterruptedException, com.sun.star.uno.Exception
723*b1cdbd2cSJim Jagielski     {
724*b1cdbd2cSJim Jagielski         System.out.println("tearDownConnection()");
725*b1cdbd2cSJim Jagielski         connection.tearDown();
726*b1cdbd2cSJim Jagielski     }
727*b1cdbd2cSJim Jagielski 
728*b1cdbd2cSJim Jagielski     private static final OfficeConnection connection = new OfficeConnection();
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski 
731*b1cdbd2cSJim Jagielski }
732*b1cdbd2cSJim Jagielski 
733*b1cdbd2cSJim Jagielski 
734