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