Bump version to 4.1-6
[LibreOffice.git] / framework / qa / complex / contextMenuInterceptor / ContextMenuInterceptor.java
blob306ba6d3bb78ac518b5af8386dc83bf9aa8859c2
1 /*
2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 package complex.contextMenuInterceptor;
21 import com.sun.star.ui.*;
22 import com.sun.star.beans.XPropertySet;
23 import com.sun.star.uno.UnoRuntime;
25 public class ContextMenuInterceptor implements XContextMenuInterceptor
28 private com.sun.star.awt.XBitmap myBitmap;
30 public ContextMenuInterceptor(com.sun.star.awt.XBitmap aBitmap)
32 myBitmap = aBitmap;
35 public ContextMenuInterceptorAction notifyContextMenuExecute(
36 com.sun.star.ui.ContextMenuExecuteEvent aEvent) throws RuntimeException
38 try
40 // Retrieve context menu container and query for service factory to
41 // create sub menus, menu entries and separators
42 com.sun.star.container.XIndexContainer xContextMenu = aEvent.ActionTriggerContainer;
43 com.sun.star.lang.XMultiServiceFactory xMenuElementFactory =
44 UnoRuntime.queryInterface(com.sun.star.lang.XMultiServiceFactory.class, xContextMenu);
46 if (xMenuElementFactory != null)
49 // create root menu entry for sub menu and sub menu
50 com.sun.star.beans.XPropertySet xRootMenuEntry =
51 UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, xMenuElementFactory.createInstance("com.sun.star.ui.ActionTrigger"));
53 // create a line separator for our new help sub menu
54 com.sun.star.beans.XPropertySet xSeparator =
55 UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, xMenuElementFactory.createInstance("com.sun.star.ui.ActionTriggerSeparator"));
56 Short aSeparatorType = new Short(ActionTriggerSeparatorType.LINE);
57 xSeparator.setPropertyValue("SeparatorType", aSeparatorType);
59 // query sub menu for index container to get access
60 com.sun.star.container.XIndexContainer xSubMenuContainer =
61 UnoRuntime.queryInterface(com.sun.star.container.XIndexContainer.class, xMenuElementFactory.createInstance("com.sun.star.ui.ActionTriggerContainer"));
63 // intialize root menu entry "Help"
64 xRootMenuEntry.setPropertyValue("Text", ("Help"));
65 xRootMenuEntry.setPropertyValue("CommandURL", ("slot:5410"));
66 xRootMenuEntry.setPropertyValue("HelpURL", ("5410"));
67 xRootMenuEntry.setPropertyValue("SubContainer", xSubMenuContainer);
68 xRootMenuEntry.setPropertyValue("Image", myBitmap);
70 // create menu entries for the new sub menu
71 // intialize help/content menu entry
72 // entry "Content"
73 XPropertySet xMenuEntry = UnoRuntime.queryInterface(XPropertySet.class, xMenuElementFactory.createInstance("com.sun.star.ui.ActionTrigger"));
74 xMenuEntry.setPropertyValue("Text", ("Content"));
75 xMenuEntry.setPropertyValue("CommandURL", ("slot:5401"));
76 xMenuEntry.setPropertyValue("HelpURL", ("5401"));
78 // insert menu entry to sub menu
79 xSubMenuContainer.insertByIndex(0, xMenuEntry);
81 // intialize help/help agent
82 // entry "Help Agent"
83 xMenuEntry = UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, xMenuElementFactory.createInstance("com.sun.star.ui.ActionTrigger"));
84 xMenuEntry.setPropertyValue("Text", ("Help Agent"));
85 xMenuEntry.setPropertyValue("CommandURL", ("slot:5962"));
86 xMenuEntry.setPropertyValue("HelpURL", ("5962"));
88 // insert menu entry to sub menu
89 xSubMenuContainer.insertByIndex(1, xMenuEntry);
90 // intialize help/tips
91 // entry "Tips"
92 xMenuEntry = UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, xMenuElementFactory.createInstance("com.sun.star.ui.ActionTrigger"));
93 xMenuEntry.setPropertyValue("Text", ("Tips"));
94 xMenuEntry.setPropertyValue("CommandURL", ("slot:5404"));
95 xMenuEntry.setPropertyValue("HelpURL", ("5404"));
97 // insert menu entry to sub menu
98 xSubMenuContainer.insertByIndex(2, xMenuEntry);
100 // add separator into the given context menu
101 xContextMenu.insertByIndex(0, xSeparator);
103 // add new sub menu into the given context menu
104 xContextMenu.insertByIndex(0, xRootMenuEntry);
106 // The controller should execute the modified context menu and stop notifying other
107 // interceptors.
108 return com.sun.star.ui.ContextMenuInterceptorAction.EXECUTE_MODIFIED;
111 catch (com.sun.star.beans.UnknownPropertyException ex)
113 // do something useful
114 // we used a unknown property
116 catch (com.sun.star.lang.IndexOutOfBoundsException ex)
118 // do something useful
119 // we used an invalid index for accessing a container
121 catch (com.sun.star.uno.Exception ex)
123 // something strange has happened!
125 catch (java.lang.Throwable ex)
127 // catch java exceptions do something useful
130 return com.sun.star.ui.ContextMenuInterceptorAction.IGNORED;