2

我正在尝试从菜单栏中捕获用户选择,例如,如果用户在菜单中按下文件,我的插件将打印“按下文件”。我想出了如何收听 IselectionService 的视图选择,但仍然不知道如何使用主菜单栏(或工具栏)来做到这一点。

感谢帮助


更多细节 :

我将更准确地解释我的问题:
我想捕获顶级菜单操作和工具栏,问题是我真的不知道如何创建和附加侦听器。
这是ISelectionListener插件的。
我的目的是收听工作台的顶级菜单选择和工具栏。
感谢帮助

// the listener we register with the selection service 
private ISelectionListener listener = new ISelectionListener() {
  public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection) {
    // we ignore our own selections
    if (sourcepart != SelectionView.this) {
      showSelection(sourcepart, selection);
    }
  }
};
...
...
public void createPartControl(Composite parent) {
  ...
  getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(listener);

PS:我发现的关于菜单监听器的大部分内容都是我创建的某些视图或窗口的 SWT 内容,这不是我的意思,我需要监听 eclipse 工作台中的主顶级菜单和工具栏。

4

3 回答 3

1

Yuo 可以尝试使用 ICommandService:使用此服务,您可以注册一个 IExecutionListener。

这样您就可以跟踪执行的所有命令,但恐怕这样您就无法跟踪激活命令本身的菜单项。

希望能帮助到你

于 2010-11-12T14:29:24.770 回答
1

如果您知道位置 uri(您可以使用PluginSpy检查),您可以添加一个处理程序以对该菜单事件做出反应。

注意:Menu Contribution 文章提到了 locationURI:

  • 主菜单是“ org.eclipse.ui.main.menu
  • 主要工具栏是“ org.eclipse.ui.main.toolbar
于 2010-09-10T20:15:55.743 回答
0

我只是想告诉你,我从制作 Smarttutor 插件的人那里得到了一些帮助,这正是我所需要的。捕获菜单上的所有操作。– amir farah 31 秒前编辑 我只想告诉你,我从制作 Smarttutor 插件的人那里得到了一些帮助,这正是我所需要的。捕获菜单上的所有操作。
这是网站:code.google.com/p/smarttutor

于 2010-11-13T07:59:00.210 回答