diff options
Diffstat (limited to 'framework/qa/complex/contextMenuInterceptor/CheckContextMenuInterceptor.java')
-rw-r--r-- | framework/qa/complex/contextMenuInterceptor/CheckContextMenuInterceptor.java | 381 |
1 files changed, 223 insertions, 158 deletions
diff --git a/framework/qa/complex/contextMenuInterceptor/CheckContextMenuInterceptor.java b/framework/qa/complex/contextMenuInterceptor/CheckContextMenuInterceptor.java index 8cad076b2d..3447f9291e 100644 --- a/framework/qa/complex/contextMenuInterceptor/CheckContextMenuInterceptor.java +++ b/framework/qa/complex/contextMenuInterceptor/CheckContextMenuInterceptor.java @@ -1,4 +1,4 @@ -package contextMenuInterceptor; +package complex.contextMenuInterceptor; import com.sun.star.accessibility.AccessibleRole; import com.sun.star.accessibility.XAccessible; @@ -9,249 +9,289 @@ import com.sun.star.awt.Rectangle; import com.sun.star.awt.XBitmap; import com.sun.star.awt.XExtendedToolkit; import com.sun.star.awt.XWindow; -import com.sun.star.beans.PropertyValue; import com.sun.star.beans.XPropertySet; -import com.sun.star.beans.XPropertySetInfo; -import com.sun.star.container.XIndexAccess; import com.sun.star.drawing.XShape; -import com.sun.star.frame.XComponentLoader; -import com.sun.star.frame.XController; -import com.sun.star.frame.XDesktop; import com.sun.star.frame.XFrame; import com.sun.star.frame.XModel; import com.sun.star.lang.IndexOutOfBoundsException; -import com.sun.star.lang.XComponent; -import com.sun.star.lang.XInitialization; import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.lang.XTypeProvider; -import com.sun.star.text.XTextDocument; -import com.sun.star.ui.XContextMenuInterceptor; import com.sun.star.ui.XContextMenuInterception; +import com.sun.star.ui.XContextMenuInterceptor; import com.sun.star.uno.AnyConverter; import com.sun.star.uno.Type; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XInterface; -import com.sun.star.uno.Exception; -import com.sun.star.util.CloseVetoException; import com.sun.star.util.XCloseable; -import com.sun.star.view.XViewSettingsSupplier; -import complexlib.ComplexTestCase; import java.awt.Robot; import java.awt.event.InputEvent; -import java.io.PrintWriter; -import share.LogWriter; +import java.io.File; import util.AccessibilityTools; import util.DesktopTools; import util.DrawTools; import util.SOfficeFactory; import util.utils; +import org.openoffice.test.OfficeFileUrl; + +// ---------- junit imports ----------------- +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.openoffice.test.OfficeConnection; +import static org.junit.Assert.*; +// ------------------------------------------ /** * */ -public class CheckContextMenuInterceptor extends ComplexTestCase { +public class CheckContextMenuInterceptor +{ + XMultiServiceFactory xMSF = null; XFrame xFrame = null; Point point = null; XWindow xWindow = null; - - public void before() { - xMSF = (XMultiServiceFactory)param.getMSF(); - } - - public void after() { - log.println("release the popup menu"); - try { + com.sun.star.lang.XComponent xDrawDoc; + + @Before + public void before() + { + xMSF = getMSF(); + } + + @After + public void after() + { + System.out.println("release the popup menu"); + try + { Robot rob = new Robot(); int x = point.X; int y = point.Y; rob.mouseMove(x, y); rob.mousePress(InputEvent.BUTTON1_MASK); rob.mouseRelease(InputEvent.BUTTON1_MASK); - } catch (java.awt.AWTException e) { - log.println("couldn't press mouse button"); } - - com.sun.star.util.XCloseable xClose = (com.sun.star.util.XCloseable)UnoRuntime.queryInterface( - com.sun.star.util.XCloseable.class, xFrame); + catch (java.awt.AWTException e) + { + System.out.println("couldn't press mouse button"); + } + + XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, xFrame); try { - xClose.close(false); + xClose.close(true); } - catch(com.sun.star.util.CloseVetoException exVeto) + catch (com.sun.star.util.CloseVetoException exVeto) { - failed("Test frame couldn't be closed successfully."); + fail("Test frame couldn't be closed successfully."); } xFrame = null; + +// xClose = UnoRuntime.queryInterface(XCloseable.class, xDrawDoc); +// try +// { +// xClose.close(true); +// } +// catch (com.sun.star.util.CloseVetoException exVeto) +// { +// fail("Test DrawDoc couldn't be closed successfully."); +// } + } - - public String[] getTestMethodNames() { - return new String[]{"checkContextMenuInterceptor"}; - } - - public void checkContextMenuInterceptor() { - log.println(" **** Context Menu Interceptor *** "); - - try { + +// public String[] getTestMethodNames() { +// return new String[]{"checkContextMenuInterceptor"}; +// } + @Test + public void checkContextMenuInterceptor() + { + System.out.println(" **** Context Menu Interceptor *** "); + + try + { // intialize the test document - com.sun.star.lang.XComponent xDrawDoc = DrawTools.createDrawDoc(xMSF); - - SOfficeFactory SOF = SOfficeFactory.getFactory( xMSF); - XShape oShape = SOF.createShape(xDrawDoc,5000,5000,1500,1000,"GraphicObject"); - DrawTools.getShapes(DrawTools.getDrawPage(xDrawDoc,0)).add(oShape); - - com.sun.star.frame.XModel xModel = - (com.sun.star.frame.XModel)UnoRuntime.queryInterface( - com.sun.star.frame.XModel.class, xDrawDoc); - + xDrawDoc = DrawTools.createDrawDoc(xMSF); + + SOfficeFactory SOF = SOfficeFactory.getFactory(xMSF); + XShape oShape = SOF.createShape(xDrawDoc, 5000, 5000, 1500, 1000, "GraphicObject"); + DrawTools.getShapes(DrawTools.getDrawPage(xDrawDoc, 0)).add(oShape); + + com.sun.star.frame.XModel xModel = + UnoRuntime.queryInterface(com.sun.star.frame.XModel.class, xDrawDoc); + // get the frame for later usage xFrame = xModel.getCurrentController().getFrame(); - + // ensure that the document content is optimal visible DesktopTools.zoomToEntirePage(xDrawDoc); - + XBitmap xBitmap = null; - + // adding graphic as ObjRelation for GraphicObjectShape - XPropertySet oShapeProps = (XPropertySet) - UnoRuntime.queryInterface(XPropertySet.class,oShape); - log.println( "Inserting a shape into the document"); - - try + XPropertySet oShapeProps = UnoRuntime.queryInterface(XPropertySet.class, oShape); + System.out.println("Inserting a shape into the document"); + + try + { + String sFile = OfficeFileUrl.getAbsolute(new File("space-metal.jpg")); + // String sFile = util.utils.getFullTestURL("space-metal.jpg"); + oShapeProps.setPropertyValue("GraphicURL", sFile); + Object oProp = oShapeProps.getPropertyValue("GraphicObjectFillBitmap"); + xBitmap = (XBitmap) AnyConverter.toObject(new Type(XBitmap.class), oProp); + } + catch (com.sun.star.lang.WrappedTargetException e) + { + } + catch (com.sun.star.lang.IllegalArgumentException e) + { + } + catch (com.sun.star.beans.PropertyVetoException e) + { + } + catch (com.sun.star.beans.UnknownPropertyException e) { - oShapeProps.setPropertyValue( - "GraphicURL",util.utils.getFullTestURL("space-metal.jpg")); - xBitmap = (XBitmap) AnyConverter.toObject( - new Type(XBitmap.class),oShapeProps.getPropertyValue - ("GraphicObjectFillBitmap")); - } catch (com.sun.star.lang.WrappedTargetException e) { - } catch (com.sun.star.lang.IllegalArgumentException e) { - } catch (com.sun.star.beans.PropertyVetoException e) { - } catch (com.sun.star.beans.UnknownPropertyException e) { - } - + } + // reuse the frame com.sun.star.frame.XController xController = xFrame.getController(); - com.sun.star.ui.XContextMenuInterception xContextMenuInterception = null; - com.sun.star.ui.XContextMenuInterceptor xContextMenuInterceptor = null; - - if ( xController != null ) + XContextMenuInterception xContextMenuInterception = null; + XContextMenuInterceptor xContextMenuInterceptor = null; + + if (xController != null) { - log.println( "Creating context menu interceptor"); - + System.out.println("Creating context menu interceptor"); + // add our context menu interceptor - xContextMenuInterception = - (com.sun.star.ui.XContextMenuInterception)UnoRuntime.queryInterface( - com.sun.star.ui.XContextMenuInterception.class, xController ); - - if( xContextMenuInterception != null ) + xContextMenuInterception = + UnoRuntime.queryInterface(XContextMenuInterception.class, xController); + + if (xContextMenuInterception != null) { - ContextMenuInterceptor aContextMenuInterceptor = new ContextMenuInterceptor( xBitmap ); - xContextMenuInterceptor = - (com.sun.star.ui.XContextMenuInterceptor)UnoRuntime.queryInterface( - com.sun.star.ui.XContextMenuInterceptor.class, aContextMenuInterceptor ); - - log.println( "Register context menu interceptor"); - xContextMenuInterception.registerContextMenuInterceptor( xContextMenuInterceptor ); + ContextMenuInterceptor aContextMenuInterceptor = new ContextMenuInterceptor(xBitmap); + xContextMenuInterceptor = + UnoRuntime.queryInterface(XContextMenuInterceptor.class, aContextMenuInterceptor); + + System.out.println("Register context menu interceptor"); + xContextMenuInterception.registerContextMenuInterceptor(xContextMenuInterceptor); } } - - // utils.shortWait(10000); - - openContextMenu((XModel) UnoRuntime.queryInterface(XModel.class, xDrawDoc)); - + + // utils.shortWait(10000); + + openContextMenu(UnoRuntime.queryInterface(XModel.class, xDrawDoc)); + checkHelpEntry(); - + // remove our context menu interceptor - if ( xContextMenuInterception != null && - xContextMenuInterceptor != null ) { - log.println( "Release context menu interceptor"); + if (xContextMenuInterception != null + && xContextMenuInterceptor != null) + { + System.out.println("Release context menu interceptor"); xContextMenuInterception.releaseContextMenuInterceptor( - xContextMenuInterceptor ); + xContextMenuInterceptor); } } - catch ( com.sun.star.uno.RuntimeException ex ) { - ex.printStackTrace((PrintWriter)log); - failed("Runtime exception caught!" + ex.getMessage()); + catch (com.sun.star.uno.RuntimeException ex) + { + // ex.printStackTrace(); + fail("Runtime exception caught!" + ex.getMessage()); } - catch ( java.lang.Exception ex ) { - ex.printStackTrace((PrintWriter)log); - failed("Java lang exception caught!" + ex.getMessage()); + catch (java.lang.Exception ex) + { + // ex.printStackTrace(); + fail("Java lang exception caught!" + ex.getMessage()); } } - private void checkHelpEntry(){ + private void checkHelpEntry() + { XInterface toolkit = null; - - log.println("get accesibility..."); - try{ + + System.out.println("get accesibility..."); + try + { toolkit = (XInterface) xMSF.createInstance("com.sun.star.awt.Toolkit"); - } catch (com.sun.star.uno.Exception e){ - log.println("could not get Toolkit " + e.toString()); } - XExtendedToolkit tk = (XExtendedToolkit) UnoRuntime.queryInterface( - XExtendedToolkit.class, toolkit); + catch (com.sun.star.uno.Exception e) + { + System.out.println("could not get Toolkit " + e.toString()); + } + XExtendedToolkit tk = UnoRuntime.queryInterface(XExtendedToolkit.class, toolkit); XAccessible xRoot = null; AccessibilityTools at = new AccessibilityTools(); - try { - xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, - tk.getTopWindow(0)); - + try + { + xWindow = UnoRuntime.queryInterface(XWindow.class, tk.getTopWindow(0)); + xRoot = at.getAccessibleObject(xWindow); - + // at.printAccessibleTree((PrintWriter)log, xRoot, param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); - at.printAccessibleTree((PrintWriter)log, xRoot, true); - } - catch (com.sun.star.lang.IndexOutOfBoundsException e) + // at.printAccessibleTree(System.out, xRoot, true); + } + catch (com.sun.star.lang.IndexOutOfBoundsException e) { - log.println("Couldn't get Window"); + System.out.println("Couldn't get Window"); } XAccessibleContext oPopMenu = at.getAccessibleObjectForRole(xRoot, AccessibleRole.POPUP_MENU); - log.println("ImplementationName: " + util.utils.getImplName(oPopMenu)); - + System.out.println("ImplementationName: " + util.utils.getImplName(oPopMenu)); + XAccessible xHelp = null; - try{ - log.println("Try to get first entry of context menu..."); + try + { + System.out.println("Try to get first entry of context menu..."); xHelp = oPopMenu.getAccessibleChild(0); - - } catch (IndexOutOfBoundsException e){ - failed("Not possible to get first entry of context menu"); + + } + catch (IndexOutOfBoundsException e) + { + fail("Not possible to get first entry of context menu"); } - - if (xHelp == null) failed("first entry of context menu is NULL"); - + + if (xHelp == null) + { + fail("first entry of context menu is NULL"); + } + XAccessibleContext xHelpCont = xHelp.getAccessibleContext(); - if ( xHelpCont == null ) - failed("No able to retrieve accessible context from first entry of context menu"); - + if (xHelpCont == null) + { + fail("No able to retrieve accessible context from first entry of context menu"); + } + String aAccessibleName = xHelpCont.getAccessibleName(); - if ( !aAccessibleName.equals( "Help" )) { - log.println("Accessible name found = "+aAccessibleName ); - failed("First entry of context menu is not from context menu interceptor"); + if (!aAccessibleName.equals("Help")) + { + System.out.println("Accessible name found = " + aAccessibleName); + fail("First entry of context menu is not from context menu interceptor"); } - + try { - log.println("try to get first children of Help context..."); + System.out.println("try to get first children of Help context..."); XAccessible xHelpChild = xHelpCont.getAccessibleChild(0); - } catch (IndexOutOfBoundsException e){ - failed("not possible to get first children of Help context"); } - + catch (IndexOutOfBoundsException e) + { + fail("not possible to get first children of Help context"); + } + } - - private void openContextMenu(XModel aModel){ - - log.println("try to open contex menu..."); + + private void openContextMenu(XModel aModel) + { + + System.out.println("try to open contex menu..."); AccessibilityTools at = new AccessibilityTools(); xWindow = at.getCurrentWindow(xMSF, aModel); @@ -260,14 +300,14 @@ public class CheckContextMenuInterceptor extends ComplexTestCase { XInterface oObj = at.getAccessibleObjectForRole(xRoot, AccessibleRole.PANEL); - XAccessibleComponent window = (XAccessibleComponent) UnoRuntime.queryInterface( - XAccessibleComponent.class, oObj); + XAccessibleComponent window = UnoRuntime.queryInterface(XAccessibleComponent.class, oObj); point = window.getLocationOnScreen(); Rectangle rect = window.getBounds(); - - log.println("klick mouse button..."); - try { + + System.out.println("klick mouse button..."); + try + { Robot rob = new Robot(); int x = point.X + (rect.Width / 2); int y = point.Y + (rect.Height / 2); @@ -277,11 +317,36 @@ public class CheckContextMenuInterceptor extends ComplexTestCase { System.out.println("Release Button"); rob.mouseRelease(InputEvent.BUTTON3_MASK); System.out.println("done"); - } catch (java.awt.AWTException e) { - log.println("couldn't press mouse button"); } - + catch (java.awt.AWTException e) + { + System.out.println("couldn't press mouse button"); + } + utils.shortWait(3000); - + + } + + private XMultiServiceFactory getMSF() + { + final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager()); + return xMSF1; + } + + // setup and close connections + @BeforeClass + public static void setUpConnection() throws Exception + { + System.out.println("setUpConnection()"); + connection.setUp(); + } + + @AfterClass + public static void tearDownConnection() + throws InterruptedException, com.sun.star.uno.Exception + { + System.out.println("tearDownConnection()"); + connection.tearDown(); } + private static final OfficeConnection connection = new OfficeConnection(); } |