【问题标题】:How to show undo and redo actions in toolbar in rcp application如何在 rcp 应用程序的工具栏中显示撤消和重做操作
【发布时间】:2019-08-15 23:16:55
【问题描述】:

我正在开发一个带有工具栏的 rcp 应用程序,用于快速访问某些操作,包括撤消和重做。我的问题是这两个特定的操作没有显示在工具栏中。我已经找到了应用程序启动时生成的workbench.xmi 文件的原因。带有属性key="persp.hiddenItems" 的标签persistedStatevalue="..." 属性中包含persp.hideToolbarSC:org.eclipse.ui.edit.undo,persp.hideToolbarSC:org.eclipse.ui.edit.redo。如果我从workbench.xmi 中删除这些条目,撤消和重做操作会按原样显示在工具栏中。

我的问题是:我该怎么做才能使 org.eclipse.ui.edit.undoorg.eclipse.ui.edit.redo 不以该属性开头?

我最初使用 eclipse neon 时没有这个问题,但是当更新到 eclipse 2018-12 时,这开始发生了。

编辑:

我终于通过将我的撤消和重做操作的 ID 更改为其他东西来让它工作。我必须在动作的构造函数中使用setId(...)setActionDefinedId(...) 设置ID,然后必须在<extension point="org.eclipse.ui.commands"> 下的plugin.xml 中的<command id="..." name="Undo"></command> 标记中定义命令。

这个解决方案感觉更像是一种解决方法,而不是实际的解决方案,但它对我有用。

【问题讨论】:

    标签: java eclipse swt rcp


    【解决方案1】:

    这是由org.eclipse.ui.perspectiveExtensions 扩展点的hiddenToolBarItem 元素设置的。

    org.eclipse.ui.ide 插件使用它来禁用这些工具栏项:

      <extension
             point="org.eclipse.ui.perspectiveExtensions">
          <perspectiveExtension targetID="*">
             <!--
                  disable "print" button which is defined by org.eclipse.ui.actions.ActionFactory.PRINT
                  and contributed by org.eclipse.ui.internal.ide.WorkbenchActionBuilder
             -->
             <hiddenToolBarItem id="print" />
             <!--
                  disable "undo" button which is defined by org.eclipse.ui.actions.ActionFactory.UNDO
                  and contributed by org.eclipse.ui.internal.ide.WorkbenchActionBuilder
             -->
             <hiddenToolBarItem id="org.eclipse.ui.edit.undo" />
             <!--
                  disable "redo" button which is defined by org.eclipse.ui.actions.ActionFactory.REDO
                  and contributed by org.eclipse.ui.internal.ide.WorkbenchActionBuilder
             -->
             <hiddenToolBarItem id="org.eclipse.ui.edit.redo" />
          </perspectiveExtension>
       </extension>
    

    除了省略插件之外,我没有其他方法可以清除此问题。

    【讨论】:

    • 该应用程序似乎需要org.eclipse.ui.ide,因此将其排除在外对我不起作用。我尝试过的另一件事是为我的撤消和重做操作提供不同的 ID,这似乎有点工作。问题是异常被打印到控制台。我将使用此信息更新问题。
    • 没关系,我通过更改 ID 让它工作了。我会用我必须做的事情来更新我的任务。
    【解决方案2】:

    我遇到了同样的问题。升级到 2019 eclipse 后撤消/重做消失了。

    在 org.eclipse.ui.ide 全局透视设置中覆盖硬编码的一种方法是直接修改透视状态。例如。在 ApplicationWorkbenchWindowAdvisor.postWindowOpen()

            WorkbenchPage page = (WorkbenchPage) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                String str = page.getCurrentPerspective().getPersistedState().get(ModeledPageLayout.HIDDEN_ITEMS_KEY);
                str=str.replace("persp.hideToolbarSC:org.eclipse.ui.edit.undo,", "");
                str=str.replace("persp.hideToolbarSC:org.eclipse.ui.edit.redo,", "");
                page.getCurrentPerspective().getPersistedState().put(ModeledPageLayout.HIDDEN_ITEMS_KEY,str);
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2018-08-23
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多