java - Eclipse E4 - 菜单贡献和 PersistedState

标签 java eclipse rcp e4

我因菜单贡献和 PersistedState 的问题而被抛弃。在从虚拟机参数中删除 -clearPersistedState 标志之前,我没有遇到任何问题。

现在,该应用程序有一个奇怪的行为,每次执行代码时,菜单贡献都会开始堆积一个菜单条目。

这是包含在处理器中的有罪片段:

MDirectMenuItem menuItem = MMenuFactory.INSTANCE.createDirectMenuItem();
    menuItem.setLabel("Another Exit");
    menuItem.setContributionURI("bundleclass://"
            + "com.telespazio.optsat.wizard/"
            + ExitHandlerWithCheck.class.getName());
    if (!menu.getChildren().contains(menuItem))
        menu.getChildren().add(menuItem);

最佳答案

您添加到应用程序模型中的菜单项将被保留,因此您需要检查它们是否已存在于菜单中。您当前的 contains 检查不会执行此操作。

您需要检查标签(或贡献 URI 或 id)是否匹配,例如:

List<MMenuElement> children = menu.getChildren();

boolean gotExisting = false;

for (MMenuElement child : children)
 {
   if ("Another Exit".equals(child.getLabel())
    {
      gotExisting = true;
      break;
    }
 }

if (!gotExisting)
 {
   ... add to menu
 }

关于java - Eclipse E4 - 菜单贡献和 PersistedState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27550002/

相关文章:

java - 与大家共享代码格式化程序设置

java - 正确初始化log4j系统

eclipse-rcp - 如何为 eclispse rcp 产品构建和创建 exe 安装程序

java - 主工具栏未显示在 Eclipse RCP 应用程序中

java - e4模型下MMenuElement助记符用法

java - 基本的Java控制结构问题。

java - 这个数组的括号里应该写什么?

java - 什么是NullPointerException,我该如何解决?

Android 不尊重我的 res 文件夹

java - RCP Web Start 停止使用 Java 7 更新 45