Skip to main content



      Home
Home » Eclipse Projects » Eclipse Platform » Solution or Workaround: keybinding in viewer's popup menu
Solution or Workaround: keybinding in viewer's popup menu [message #281243] Thu, 17 February 2005 06:06
Eclipse UserFriend
I read a lot about problems with keybindings and yesterday I also got into
trouble.

1. Goal: A popup menu in a view which is also accessible by an accelerator.

2. plugin.xml Configuration (only the important parts):

<extension
point="org.eclipse.ui.popupMenus">
<viewerContribution
targetID="com.camline.so.rcp.genview.Dispatch"
id="com.camline.so.rcp.genview.Dispatch.actions">
<action
enablesFor="1"
label="%soReserve"
definitionId="com.camline.so.client.reserve"
class="com.camline.so.rcp.actions.ReserveAction"
tooltip="%soReserveTooltip"
menubarPath="entryActions"
id="com.camline.so.rcp.actions.ReserveAction"/>
</viewerContribution>
...
</extension>
<extension
point="org.eclipse.ui.commands">
<category
description="Command for a button bar"
name="com.camline.so.client.ButtonBar"
id="com.camline.so.client.buttonBar"/>
<command
category="com.camline.so.client.buttonBar"
description="Reserve"
categoryId="com.camline.so.client.buttonBar"
name="%soReserve"
id="com.camline.so.client.reserve"/>
<keyBinding
string="Ctrl+r"
scope="org.eclipse.ui.globalScope"
command="com.camline.so.client.reserve"
configuration="org.eclipse.ui.defaultAcceleratorConfiguration ">
</keyBinding>
</extension>


3. Result:

The popup menu appears correctly, the action is accessible by mouse and
the corresponding menu item shows "Reserve Ctrl+R" correctly.

Accessing the action using the Ctrl+R shortcut does not work. The trace
says

KEYS >>> WorkbenchKeyboard.press(potentialKeyStrokes = [CTRL+R])
KEYS >>> WorkbenchKeyboard.executeCommand(commandId =
'com.camline.so.client.reserve')
KEYS >>> not handled


4. Solution or workaround

I added the following lines in my ReserveAction class, which implements
IViewActionDelegate.

public void selectionChanged(IAction action, ISelection _selection) {
this.selection = (IStructuredSelection) _selection;
if (action.isEnabled())
view.getSite().getKeyBindingService().registerAction(action) ;
else
view.getSite().getKeyBindingService().unregisterAction(actio n);
}
}

Now everything works as expected.

5. Final question

I would have expected, that this works automatically. So the following
questions go to the Eclipse wizards out there:

- Is this the correct solution to the problem?
- Is this a workaround needed because I made something wrong in plugin.xml
configuration?
- Is this a workaround for an Eclipse bug or a missing feature?


Many thanks in advance.

Best Regards,

Matze
Previous Topic:How to add dynamicly a new section in the Eclipse Prefences windows
Next Topic:Yet another case of using RMI in a plugin
Goto Forum:
  


Current Time: Wed May 07 17:47:51 EDT 2025

Powered by FUDForum. Page generated in 0.03634 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top