java - 刷新 View 中的菜单项

标签 java eclipse eclipse-plugin

上下文

我正在为 eclipse 3.4 及更多版本构建一个插件。 我有一个 ID 为 mrp.view 的 View ,其 menuContribution 设置为 toolbar:mrp.view。 这个 menuContribution 有一些命令,我​​有这个:

<handler
    class="mrp.handlers.export"
    commandId="mrp.commands.export">
</handler>

<command
    commandId="mrp.commands.export"
    label="My command"
    style="push">
</command>

我的处理程序 mrp.handlers.export 有一个动态 ìsEnabled()` 方法,如下所示:

@Override
public boolean isEnabled() {
    return !getMySelection().isEmpty();
}

问题

数据更改时如何刷新工具栏上的按钮? (如果我单击工具栏的另一个按钮,刷新会自动完成,但如果我不单击...)

我试过了..

ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
service.refreshElements("mrp.commands.export", null);

但它似乎没有做任何事情。

还有这个:

public class Export extends AbstractHandler implements PropertyChangeListener {

@Override
public void propertyChange(PropertyChangeEvent evt) {
    setBaseEnabled(!getSelection().isEmpty());
}

    // ....
}

它被调用,但我的 View 菜单上的图标没有刷新(在 Eclipse 3.7 上)。 我做错了什么吗?

最佳答案

当启用发生变化时,您的处理程序必须触发一个事件。如果您使用 org.eclipse.core.commands.AbstractHandler.setBaseEnabled(boolean) 进行了更改更新处理程序,它将触发所需的事件。

关于java - 刷新 View 中的菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17087203/

相关文章:

java - Dagger 在 Android 应用程序中生成重复的 `XXXDialogFragment_MembersInjector` 类(程序类型已存在)

java - 如何为 Play Java 项目的 Eclipse IDE 创建项目设置

java - 从 GitHub 编译 Bukkit 插件

Java 将终端/命令行添加到 Eclipse 控制台

java - 监听自定义 Eclipse 编辑器上的行更改事件

eclipse - 如何为最新的 eclipse ide(版本 2020-03)安装 scala 插件

java - bundle.getLocation() 的可能前缀

java - 帧代码 "case"在 "switch"中用大括号 - {}

java.io.NotSerializedException : org. postgresql.jdbc4.Jdbc4Connection

java - Spring Integration 2 - Splitter 仅返回第一个元素