我试图从菜单栏中捕获用户选择,例如,如果用户按下菜单中的File,我的插件将打印“File pressed”。 我想出了如何通过IselectionService收听视图选择,但仍然不知道如何使用主菜单栏(或工具栏)来完成它。
thanx求助
更多详情:
我会更准确地解释一下我的问题:
我想捕获顶级菜单操作和工具栏,问题是我真的不知道如何创建和附加监听器。
这是插件的ISelectionListener
我的目的是收听工作台顶级菜单选项和工具栏
Thanx寻求帮助
// 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);
P.S:我发现的关于菜单监听器的大部分内容都是我创建的某些视图或窗口的SWT内容,这不是我的意思,我需要监听eclipse工作台中的主要顶级菜单和工具栏。
答案 0 :(得分:1)
如果您知道位置uri(可以使用PluginSpy检查),you can add an handler以便对该菜单事件作出反应。
注意:Menu Contribution article提到locationURI:
org.eclipse.ui.main.menu
”org.eclipse.ui.main.toolbar
”答案 1 :(得分:1)
Yuo可能会尝试使用ICommandService: 使用此服务,您可以注册IExecutionListener。
通过这种方式,您可以跟踪所有已执行的命令,但我担心这样您就无法跟踪激活命令本身的菜单项。
希望有所帮助
答案 2 :(得分:0)
我只是想告诉你我从制作Smarttutor插件的人那里得到了一些帮助,这非常令我满意。捕获菜单上的所有操作。 - amir farah 31秒前编辑我只是想告诉你我从制作Smarttutor插件的人那里得到了一些帮助,这非常令我满意。捕获菜单上的所有操作 这是网站:code.google.com/p/smarttutor