在Eclipse Juno上禁用动态创建的命令(Eclipse RCP开发)

时间:2018-03-02 13:51:37

标签: java eclipse eclipse-plugin eclipse-rcp eclipse-cdt

我有一个动态创建菜单贡献的类:

public class DynamicHelpMenuFactory extends ExtensionContributionFactory {
...
 public void createContributionItems(IServiceLocator sl, IContributionRoot ad) {
...
  ICommandService commandService = getCommandService();
...
  // create the command
  Command command = commandService.getCommand("com.foo.bar");
  command.setHandler(new MyHandler());
  command.define("com.foo.bar.name", "com.foo.bar.description", "category.foo.bar");
...    
  // create the menu contribution
...
 }
...
}

这不适用于Eclipse Juno 。调用command.define(...)MakeHandlersGo处理程序替换指定的处理程序,菜单贡献保持禁用状态(但显示它们)。

我试图在command.setHandler(...)之后调用command.define(...),这会启用菜单提示,但点击它们会抛出:

org.eclipse.core.commands.NotHandledException: There is no handler to execute for command com.foo.bar

上面的代码有效(显示菜单贡献并点击它使处理程序执行其操作)确定任何其他尝试过的Eclipse版本(Indigo,Kepler,Luna,Mars)。

在我看来这是Eclipse IDE中的一个错误,但我无法找到Juno报告的任何相关问题。 Eclipse Juno是否需要一些特定的方式来动态创建菜单贡献?

0 个答案:

没有答案