diff options
Diffstat (limited to 'qadevOOo/runner/helper/ContextMenuInterceptor.java')
-rw-r--r-- | qadevOOo/runner/helper/ContextMenuInterceptor.java | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/qadevOOo/runner/helper/ContextMenuInterceptor.java b/qadevOOo/runner/helper/ContextMenuInterceptor.java new file mode 100644 index 000000000000..a14685365c74 --- /dev/null +++ b/qadevOOo/runner/helper/ContextMenuInterceptor.java @@ -0,0 +1,140 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +package helper; + +import com.sun.star.beans.UnknownPropertyException; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexContainer; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.ui.ActionTriggerSeparatorType; +import com.sun.star.ui.ContextMenuInterceptorAction; +import com.sun.star.ui.XContextMenuInterceptor; +import com.sun.star.uno.UnoRuntime; + +public class ContextMenuInterceptor implements XContextMenuInterceptor { + + public ContextMenuInterceptorAction notifyContextMenuExecute( + com.sun.star.ui.ContextMenuExecuteEvent aEvent ) throws RuntimeException { + try { + // Retrieve context menu container and query for service factory to + // create sub menus, menu entries and separators + XIndexContainer xContextMenu = aEvent.ActionTriggerContainer; + XMultiServiceFactory xMenuElementFactory = + (XMultiServiceFactory)UnoRuntime.queryInterface( + XMultiServiceFactory.class, xContextMenu ); + + if ( xMenuElementFactory != null ) { + + // create root menu entry for sub menu and sub menu + XPropertySet xRootMenuEntry = + (XPropertySet)UnoRuntime.queryInterface( + XPropertySet.class, + xMenuElementFactory.createInstance("com.sun.star.ui.ActionTrigger" )); + + // create a line separator for our new help sub menu + XPropertySet xSeparator = + (XPropertySet)UnoRuntime.queryInterface( + XPropertySet.class, + xMenuElementFactory.createInstance("com.sun.star.ui.ActionTriggerSeparator" ) ); + Short aSeparatorType = new Short( ActionTriggerSeparatorType.LINE ); + xSeparator.setPropertyValue( "SeparatorType", (Object)aSeparatorType ); + + // query sub menu for index container to get access + XIndexContainer xSubMenuContainer = + (XIndexContainer)UnoRuntime.queryInterface( + XIndexContainer.class, + xMenuElementFactory.createInstance("com.sun.star.ui.ActionTriggerContainer" )); + + // intialize root menu entry "Help" + xRootMenuEntry.setPropertyValue( "Text", new String( "Help" )); + xRootMenuEntry.setPropertyValue( "CommandURL", new String( "slot:5410" )); + xRootMenuEntry.setPropertyValue( "HelpURL", new String( "5410" )); + xRootMenuEntry.setPropertyValue( "SubContainer", (Object)xSubMenuContainer ); + + // create menu entries for the new sub menu + // intialize help/content menu entry + // entry "Content" + XPropertySet xMenuEntry = (XPropertySet)UnoRuntime.queryInterface( + XPropertySet.class, xMenuElementFactory.createInstance( + "com.sun.star.ui.ActionTrigger" )); + xMenuEntry.setPropertyValue( "Text", new String( "Content" )); + xMenuEntry.setPropertyValue( "CommandURL", new String( "slot:5401" )); + xMenuEntry.setPropertyValue( "HelpURL", new String( "5401" )); + + // insert menu entry to sub menu + xSubMenuContainer.insertByIndex( 0, (Object)xMenuEntry ); + + // intialize help/help agent + // entry "Help Agent" + xMenuEntry = (XPropertySet)UnoRuntime.queryInterface( + XPropertySet.class, + xMenuElementFactory.createInstance("com.sun.star.ui.ActionTrigger" )); + xMenuEntry.setPropertyValue( "Text", new String( "Help Agent" )); + xMenuEntry.setPropertyValue( "CommandURL", new String( "slot:5962" )); + xMenuEntry.setPropertyValue( "HelpURL", new String( "5962" )); + + // insert menu entry to sub menu + xSubMenuContainer.insertByIndex( 1, (Object)xMenuEntry ); + // intialize help/tips + // entry "Tips" + xMenuEntry = (XPropertySet)UnoRuntime.queryInterface( + XPropertySet.class, + xMenuElementFactory.createInstance("com.sun.star.ui.ActionTrigger" )); + xMenuEntry.setPropertyValue( "Text", new String( "Tips" )); + xMenuEntry.setPropertyValue( "CommandURL", new String( "slot:5404" )); + xMenuEntry.setPropertyValue( "HelpURL", new String( "5404" )); + + // insert menu entry to sub menu + xSubMenuContainer.insertByIndex( 2, (Object)xMenuEntry ); + + // add separator into the given context menu + xContextMenu.insertByIndex( 1, (Object)xSeparator ); + + // add new sub menu into the given context menu + xContextMenu.insertByIndex( 1, (Object)xRootMenuEntry ); + + // The controller should execute the modified context menu and stop notifying other + // interceptors. + return ContextMenuInterceptorAction.EXECUTE_MODIFIED ; + } + } catch ( UnknownPropertyException ex ) { + // do something useful + // we used a unknown property + } catch ( IndexOutOfBoundsException ex ) { + // do something useful + // we used an invalid index for accessing a container + } catch ( Exception ex ) { + // something strange has happend! + } catch ( Throwable ex ) { + // catch java exceptions and do something useful + } + + return ContextMenuInterceptorAction.IGNORED; + } +}
\ No newline at end of file |