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 package complex.contextMenuInterceptor; 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski import com.sun.star.accessibility.AccessibleRole; 25*b1cdbd2cSJim Jagielski import com.sun.star.accessibility.XAccessible; 26*b1cdbd2cSJim Jagielski import com.sun.star.accessibility.XAccessibleComponent; 27*b1cdbd2cSJim Jagielski import com.sun.star.accessibility.XAccessibleContext; 28*b1cdbd2cSJim Jagielski import com.sun.star.awt.Point; 29*b1cdbd2cSJim Jagielski import com.sun.star.awt.Rectangle; 30*b1cdbd2cSJim Jagielski import com.sun.star.awt.XBitmap; 31*b1cdbd2cSJim Jagielski import com.sun.star.awt.XExtendedToolkit; 32*b1cdbd2cSJim Jagielski import com.sun.star.awt.XWindow; 33*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 34*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShape; 35*b1cdbd2cSJim Jagielski import com.sun.star.frame.XFrame; 36*b1cdbd2cSJim Jagielski import com.sun.star.frame.XModel; 37*b1cdbd2cSJim Jagielski import com.sun.star.lang.IndexOutOfBoundsException; 38*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 39*b1cdbd2cSJim Jagielski import com.sun.star.ui.XContextMenuInterception; 40*b1cdbd2cSJim Jagielski import com.sun.star.ui.XContextMenuInterceptor; 41*b1cdbd2cSJim Jagielski import com.sun.star.uno.AnyConverter; 42*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 43*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 44*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 45*b1cdbd2cSJim Jagielski import com.sun.star.util.XCloseable; 46*b1cdbd2cSJim Jagielski import java.awt.Robot; 47*b1cdbd2cSJim Jagielski import java.awt.event.InputEvent; 48*b1cdbd2cSJim Jagielski import java.io.File; 49*b1cdbd2cSJim Jagielski import util.AccessibilityTools; 50*b1cdbd2cSJim Jagielski import util.DesktopTools; 51*b1cdbd2cSJim Jagielski import util.DrawTools; 52*b1cdbd2cSJim Jagielski import util.SOfficeFactory; 53*b1cdbd2cSJim Jagielski import util.utils; 54*b1cdbd2cSJim Jagielski import org.openoffice.test.OfficeFileUrl; 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski // ---------- junit imports ----------------- 57*b1cdbd2cSJim Jagielski import org.junit.After; 58*b1cdbd2cSJim Jagielski import org.junit.AfterClass; 59*b1cdbd2cSJim Jagielski import org.junit.Before; 60*b1cdbd2cSJim Jagielski import org.junit.BeforeClass; 61*b1cdbd2cSJim Jagielski import org.junit.Test; 62*b1cdbd2cSJim Jagielski import org.openoffice.test.OfficeConnection; 63*b1cdbd2cSJim Jagielski import static org.junit.Assert.*; 64*b1cdbd2cSJim Jagielski // ------------------------------------------ 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski /** 67*b1cdbd2cSJim Jagielski * 68*b1cdbd2cSJim Jagielski */ 69*b1cdbd2cSJim Jagielski public class CheckContextMenuInterceptor 70*b1cdbd2cSJim Jagielski { 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski XMultiServiceFactory xMSF = null; 73*b1cdbd2cSJim Jagielski XFrame xFrame = null; 74*b1cdbd2cSJim Jagielski Point point = null; 75*b1cdbd2cSJim Jagielski XWindow xWindow = null; 76*b1cdbd2cSJim Jagielski com.sun.star.lang.XComponent xDrawDoc; 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski @Before before()79*b1cdbd2cSJim Jagielski public void before() 80*b1cdbd2cSJim Jagielski { 81*b1cdbd2cSJim Jagielski xMSF = getMSF(); 82*b1cdbd2cSJim Jagielski } 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski @After after()85*b1cdbd2cSJim Jagielski public void after() 86*b1cdbd2cSJim Jagielski { 87*b1cdbd2cSJim Jagielski System.out.println("release the popup menu"); 88*b1cdbd2cSJim Jagielski try 89*b1cdbd2cSJim Jagielski { 90*b1cdbd2cSJim Jagielski Robot rob = new Robot(); 91*b1cdbd2cSJim Jagielski int x = point.X; 92*b1cdbd2cSJim Jagielski int y = point.Y; 93*b1cdbd2cSJim Jagielski rob.mouseMove(x, y); 94*b1cdbd2cSJim Jagielski rob.mousePress(InputEvent.BUTTON1_MASK); 95*b1cdbd2cSJim Jagielski rob.mouseRelease(InputEvent.BUTTON1_MASK); 96*b1cdbd2cSJim Jagielski } 97*b1cdbd2cSJim Jagielski catch (java.awt.AWTException e) 98*b1cdbd2cSJim Jagielski { 99*b1cdbd2cSJim Jagielski System.out.println("couldn't press mouse button"); 100*b1cdbd2cSJim Jagielski } 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, xFrame); 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski try 105*b1cdbd2cSJim Jagielski { 106*b1cdbd2cSJim Jagielski xClose.close(true); 107*b1cdbd2cSJim Jagielski } 108*b1cdbd2cSJim Jagielski catch (com.sun.star.util.CloseVetoException exVeto) 109*b1cdbd2cSJim Jagielski { 110*b1cdbd2cSJim Jagielski fail("Test frame couldn't be closed successfully."); 111*b1cdbd2cSJim Jagielski } 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski xFrame = null; 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski // xClose = UnoRuntime.queryInterface(XCloseable.class, xDrawDoc); 116*b1cdbd2cSJim Jagielski // try 117*b1cdbd2cSJim Jagielski // { 118*b1cdbd2cSJim Jagielski // xClose.close(true); 119*b1cdbd2cSJim Jagielski // } 120*b1cdbd2cSJim Jagielski // catch (com.sun.star.util.CloseVetoException exVeto) 121*b1cdbd2cSJim Jagielski // { 122*b1cdbd2cSJim Jagielski // fail("Test DrawDoc couldn't be closed successfully."); 123*b1cdbd2cSJim Jagielski // } 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski // public String[] getTestMethodNames() { 128*b1cdbd2cSJim Jagielski // return new String[]{"checkContextMenuInterceptor"}; 129*b1cdbd2cSJim Jagielski // } 130*b1cdbd2cSJim Jagielski @Test checkContextMenuInterceptor()131*b1cdbd2cSJim Jagielski public void checkContextMenuInterceptor() 132*b1cdbd2cSJim Jagielski { 133*b1cdbd2cSJim Jagielski System.out.println(" **** Context Menu Interceptor *** "); 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski try 136*b1cdbd2cSJim Jagielski { 137*b1cdbd2cSJim Jagielski // intialize the test document 138*b1cdbd2cSJim Jagielski xDrawDoc = DrawTools.createDrawDoc(xMSF); 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski SOfficeFactory SOF = SOfficeFactory.getFactory(xMSF); 141*b1cdbd2cSJim Jagielski XShape oShape = SOF.createShape(xDrawDoc, 5000, 5000, 1500, 1000, "GraphicObject"); 142*b1cdbd2cSJim Jagielski DrawTools.getShapes(DrawTools.getDrawPage(xDrawDoc, 0)).add(oShape); 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski com.sun.star.frame.XModel xModel = 145*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(com.sun.star.frame.XModel.class, xDrawDoc); 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski // get the frame for later usage 148*b1cdbd2cSJim Jagielski xFrame = xModel.getCurrentController().getFrame(); 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski // ensure that the document content is optimal visible 151*b1cdbd2cSJim Jagielski DesktopTools.zoomToEntirePage(xDrawDoc); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski XBitmap xBitmap = null; 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski // adding graphic as ObjRelation for GraphicObjectShape 156*b1cdbd2cSJim Jagielski XPropertySet oShapeProps = UnoRuntime.queryInterface(XPropertySet.class, oShape); 157*b1cdbd2cSJim Jagielski System.out.println("Inserting a shape into the document"); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski try 160*b1cdbd2cSJim Jagielski { 161*b1cdbd2cSJim Jagielski String sFile = OfficeFileUrl.getAbsolute(new File("space-metal.jpg")); 162*b1cdbd2cSJim Jagielski // String sFile = util.utils.getFullTestURL("space-metal.jpg"); 163*b1cdbd2cSJim Jagielski oShapeProps.setPropertyValue("GraphicURL", sFile); 164*b1cdbd2cSJim Jagielski Object oProp = oShapeProps.getPropertyValue("GraphicObjectFillBitmap"); 165*b1cdbd2cSJim Jagielski xBitmap = (XBitmap) AnyConverter.toObject(new Type(XBitmap.class), oProp); 166*b1cdbd2cSJim Jagielski } 167*b1cdbd2cSJim Jagielski catch (com.sun.star.lang.WrappedTargetException e) 168*b1cdbd2cSJim Jagielski { 169*b1cdbd2cSJim Jagielski } 170*b1cdbd2cSJim Jagielski catch (com.sun.star.lang.IllegalArgumentException e) 171*b1cdbd2cSJim Jagielski { 172*b1cdbd2cSJim Jagielski } 173*b1cdbd2cSJim Jagielski catch (com.sun.star.beans.PropertyVetoException e) 174*b1cdbd2cSJim Jagielski { 175*b1cdbd2cSJim Jagielski } 176*b1cdbd2cSJim Jagielski catch (com.sun.star.beans.UnknownPropertyException e) 177*b1cdbd2cSJim Jagielski { 178*b1cdbd2cSJim Jagielski } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski // reuse the frame 181*b1cdbd2cSJim Jagielski com.sun.star.frame.XController xController = xFrame.getController(); 182*b1cdbd2cSJim Jagielski XContextMenuInterception xContextMenuInterception = null; 183*b1cdbd2cSJim Jagielski XContextMenuInterceptor xContextMenuInterceptor = null; 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski if (xController != null) 186*b1cdbd2cSJim Jagielski { 187*b1cdbd2cSJim Jagielski System.out.println("Creating context menu interceptor"); 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski // add our context menu interceptor 190*b1cdbd2cSJim Jagielski xContextMenuInterception = 191*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XContextMenuInterception.class, xController); 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski if (xContextMenuInterception != null) 194*b1cdbd2cSJim Jagielski { 195*b1cdbd2cSJim Jagielski ContextMenuInterceptor aContextMenuInterceptor = new ContextMenuInterceptor(xBitmap); 196*b1cdbd2cSJim Jagielski xContextMenuInterceptor = 197*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XContextMenuInterceptor.class, aContextMenuInterceptor); 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski System.out.println("Register context menu interceptor"); 200*b1cdbd2cSJim Jagielski xContextMenuInterception.registerContextMenuInterceptor(xContextMenuInterceptor); 201*b1cdbd2cSJim Jagielski } 202*b1cdbd2cSJim Jagielski } 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski // utils.shortWait(10000); 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski openContextMenu(UnoRuntime.queryInterface(XModel.class, xDrawDoc)); 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski checkHelpEntry(); 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski // remove our context menu interceptor 211*b1cdbd2cSJim Jagielski if (xContextMenuInterception != null 212*b1cdbd2cSJim Jagielski && xContextMenuInterceptor != null) 213*b1cdbd2cSJim Jagielski { 214*b1cdbd2cSJim Jagielski System.out.println("Release context menu interceptor"); 215*b1cdbd2cSJim Jagielski xContextMenuInterception.releaseContextMenuInterceptor( 216*b1cdbd2cSJim Jagielski xContextMenuInterceptor); 217*b1cdbd2cSJim Jagielski } 218*b1cdbd2cSJim Jagielski } 219*b1cdbd2cSJim Jagielski catch (com.sun.star.uno.RuntimeException ex) 220*b1cdbd2cSJim Jagielski { 221*b1cdbd2cSJim Jagielski // ex.printStackTrace(); 222*b1cdbd2cSJim Jagielski fail("Runtime exception caught!" + ex.getMessage()); 223*b1cdbd2cSJim Jagielski } 224*b1cdbd2cSJim Jagielski catch (java.lang.Exception ex) 225*b1cdbd2cSJim Jagielski { 226*b1cdbd2cSJim Jagielski // ex.printStackTrace(); 227*b1cdbd2cSJim Jagielski fail("Java lang exception caught!" + ex.getMessage()); 228*b1cdbd2cSJim Jagielski } 229*b1cdbd2cSJim Jagielski } 230*b1cdbd2cSJim Jagielski checkHelpEntry()231*b1cdbd2cSJim Jagielski private void checkHelpEntry() 232*b1cdbd2cSJim Jagielski { 233*b1cdbd2cSJim Jagielski XInterface toolkit = null; 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski System.out.println("get accesibility..."); 236*b1cdbd2cSJim Jagielski try 237*b1cdbd2cSJim Jagielski { 238*b1cdbd2cSJim Jagielski toolkit = (XInterface) xMSF.createInstance("com.sun.star.awt.Toolkit"); 239*b1cdbd2cSJim Jagielski } 240*b1cdbd2cSJim Jagielski catch (com.sun.star.uno.Exception e) 241*b1cdbd2cSJim Jagielski { 242*b1cdbd2cSJim Jagielski System.out.println("could not get Toolkit " + e.toString()); 243*b1cdbd2cSJim Jagielski } 244*b1cdbd2cSJim Jagielski XExtendedToolkit tk = UnoRuntime.queryInterface(XExtendedToolkit.class, toolkit); 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski XAccessible xRoot = null; 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski AccessibilityTools at = new AccessibilityTools(); 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski try 251*b1cdbd2cSJim Jagielski { 252*b1cdbd2cSJim Jagielski xWindow = UnoRuntime.queryInterface(XWindow.class, tk.getTopWindow(0)); 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski xRoot = at.getAccessibleObject(xWindow); 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski // at.printAccessibleTree((PrintWriter)log, xRoot, param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); 257*b1cdbd2cSJim Jagielski // at.printAccessibleTree(System.out, xRoot, true); 258*b1cdbd2cSJim Jagielski } 259*b1cdbd2cSJim Jagielski catch (com.sun.star.lang.IndexOutOfBoundsException e) 260*b1cdbd2cSJim Jagielski { 261*b1cdbd2cSJim Jagielski System.out.println("Couldn't get Window"); 262*b1cdbd2cSJim Jagielski } 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski XAccessibleContext oPopMenu = at.getAccessibleObjectForRole(xRoot, AccessibleRole.POPUP_MENU); 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski System.out.println("ImplementationName: " + util.utils.getImplName(oPopMenu)); 267*b1cdbd2cSJim Jagielski 268*b1cdbd2cSJim Jagielski XAccessible xHelp = null; 269*b1cdbd2cSJim Jagielski try 270*b1cdbd2cSJim Jagielski { 271*b1cdbd2cSJim Jagielski System.out.println("Try to get first entry of context menu..."); 272*b1cdbd2cSJim Jagielski xHelp = oPopMenu.getAccessibleChild(0); 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski } 275*b1cdbd2cSJim Jagielski catch (IndexOutOfBoundsException e) 276*b1cdbd2cSJim Jagielski { 277*b1cdbd2cSJim Jagielski fail("Not possible to get first entry of context menu"); 278*b1cdbd2cSJim Jagielski } 279*b1cdbd2cSJim Jagielski 280*b1cdbd2cSJim Jagielski if (xHelp == null) 281*b1cdbd2cSJim Jagielski { 282*b1cdbd2cSJim Jagielski fail("first entry of context menu is NULL"); 283*b1cdbd2cSJim Jagielski } 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski XAccessibleContext xHelpCont = xHelp.getAccessibleContext(); 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski if (xHelpCont == null) 288*b1cdbd2cSJim Jagielski { 289*b1cdbd2cSJim Jagielski fail("No able to retrieve accessible context from first entry of context menu"); 290*b1cdbd2cSJim Jagielski } 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski String aAccessibleName = xHelpCont.getAccessibleName(); 293*b1cdbd2cSJim Jagielski if (!aAccessibleName.equals("Help")) 294*b1cdbd2cSJim Jagielski { 295*b1cdbd2cSJim Jagielski System.out.println("Accessible name found = " + aAccessibleName); 296*b1cdbd2cSJim Jagielski fail("First entry of context menu is not from context menu interceptor"); 297*b1cdbd2cSJim Jagielski } 298*b1cdbd2cSJim Jagielski 299*b1cdbd2cSJim Jagielski try 300*b1cdbd2cSJim Jagielski { 301*b1cdbd2cSJim Jagielski System.out.println("try to get first children of Help context..."); 302*b1cdbd2cSJim Jagielski XAccessible xHelpChild = xHelpCont.getAccessibleChild(0); 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim Jagielski } 305*b1cdbd2cSJim Jagielski catch (IndexOutOfBoundsException e) 306*b1cdbd2cSJim Jagielski { 307*b1cdbd2cSJim Jagielski fail("not possible to get first children of Help context"); 308*b1cdbd2cSJim Jagielski } 309*b1cdbd2cSJim Jagielski 310*b1cdbd2cSJim Jagielski } 311*b1cdbd2cSJim Jagielski openContextMenu(XModel aModel)312*b1cdbd2cSJim Jagielski private void openContextMenu(XModel aModel) 313*b1cdbd2cSJim Jagielski { 314*b1cdbd2cSJim Jagielski 315*b1cdbd2cSJim Jagielski System.out.println("try to open contex menu..."); 316*b1cdbd2cSJim Jagielski AccessibilityTools at = new AccessibilityTools(); 317*b1cdbd2cSJim Jagielski 318*b1cdbd2cSJim Jagielski xWindow = at.getCurrentWindow(xMSF, aModel); 319*b1cdbd2cSJim Jagielski 320*b1cdbd2cSJim Jagielski XAccessible xRoot = at.getAccessibleObject(xWindow); 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski XInterface oObj = at.getAccessibleObjectForRole(xRoot, AccessibleRole.PANEL); 323*b1cdbd2cSJim Jagielski 324*b1cdbd2cSJim Jagielski XAccessibleComponent window = UnoRuntime.queryInterface(XAccessibleComponent.class, oObj); 325*b1cdbd2cSJim Jagielski 326*b1cdbd2cSJim Jagielski point = window.getLocationOnScreen(); 327*b1cdbd2cSJim Jagielski Rectangle rect = window.getBounds(); 328*b1cdbd2cSJim Jagielski 329*b1cdbd2cSJim Jagielski System.out.println("klick mouse button..."); 330*b1cdbd2cSJim Jagielski try 331*b1cdbd2cSJim Jagielski { 332*b1cdbd2cSJim Jagielski Robot rob = new Robot(); 333*b1cdbd2cSJim Jagielski int x = point.X + (rect.Width / 2); 334*b1cdbd2cSJim Jagielski int y = point.Y + (rect.Height / 2); 335*b1cdbd2cSJim Jagielski rob.mouseMove(x, y); 336*b1cdbd2cSJim Jagielski System.out.println("Press Button"); 337*b1cdbd2cSJim Jagielski rob.mousePress(InputEvent.BUTTON3_MASK); 338*b1cdbd2cSJim Jagielski System.out.println("Release Button"); 339*b1cdbd2cSJim Jagielski rob.mouseRelease(InputEvent.BUTTON3_MASK); 340*b1cdbd2cSJim Jagielski System.out.println("done"); 341*b1cdbd2cSJim Jagielski } 342*b1cdbd2cSJim Jagielski catch (java.awt.AWTException e) 343*b1cdbd2cSJim Jagielski { 344*b1cdbd2cSJim Jagielski System.out.println("couldn't press mouse button"); 345*b1cdbd2cSJim Jagielski } 346*b1cdbd2cSJim Jagielski 347*b1cdbd2cSJim Jagielski utils.shortWait(3000); 348*b1cdbd2cSJim Jagielski 349*b1cdbd2cSJim Jagielski } 350*b1cdbd2cSJim Jagielski getMSF()351*b1cdbd2cSJim Jagielski private XMultiServiceFactory getMSF() 352*b1cdbd2cSJim Jagielski { 353*b1cdbd2cSJim Jagielski final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager()); 354*b1cdbd2cSJim Jagielski return xMSF1; 355*b1cdbd2cSJim Jagielski } 356*b1cdbd2cSJim Jagielski 357*b1cdbd2cSJim Jagielski // setup and close connections 358*b1cdbd2cSJim Jagielski @BeforeClass setUpConnection()359*b1cdbd2cSJim Jagielski public static void setUpConnection() throws Exception 360*b1cdbd2cSJim Jagielski { 361*b1cdbd2cSJim Jagielski System.out.println("setUpConnection()"); 362*b1cdbd2cSJim Jagielski connection.setUp(); 363*b1cdbd2cSJim Jagielski } 364*b1cdbd2cSJim Jagielski 365*b1cdbd2cSJim Jagielski @AfterClass tearDownConnection()366*b1cdbd2cSJim Jagielski public static void tearDownConnection() 367*b1cdbd2cSJim Jagielski throws InterruptedException, com.sun.star.uno.Exception 368*b1cdbd2cSJim Jagielski { 369*b1cdbd2cSJim Jagielski System.out.println("tearDownConnection()"); 370*b1cdbd2cSJim Jagielski connection.tearDown(); 371*b1cdbd2cSJim Jagielski } 372*b1cdbd2cSJim Jagielski private static final OfficeConnection connection = new OfficeConnection(); 373*b1cdbd2cSJim Jagielski } 374