如何在 rcp 应用程序的工具栏中显示撤消和重做操作
How to show undo and redo actions in toolbar in rcp application
我正在开发一个带有工具栏的 rcp 应用程序,可以快速访问某些操作,包括撤消和重做。我的问题是这两个特定操作没有显示在工具栏中。我已找到应用程序启动时生成的 workbench.xmi
文件的原因。具有属性 key="persp.hiddenItems"
的标记 persistedState
在 value="..."
属性中包含 persp.hideToolbarSC:org.eclipse.ui.edit.undo,persp.hideToolbarSC:org.eclipse.ui.edit.redo
。如果我从 workbench.xmi
中删除这些条目,撤消和重做操作将按应有的方式显示在工具栏中。
我的问题是:我该怎么做才能使 org.eclipse.ui.edit.undo
和 org.eclipse.ui.edit.redo
不以该属性结尾?
我最初使用 eclipse neon 没有这个问题,但是当更新到 eclipse 2018-12 时,这个问题开始发生了。
编辑:
我终于通过将我的撤消和重做操作的 ID 更改为其他内容来让它工作。我必须在动作的构造函数中使用 setId(...)
和 setActionDefinedId(...)
设置 ID,然后必须在 [=22= 中的 <extension point="org.eclipse.ui.commands">
下的 plugin.xml
中定义命令] 标签。
这个解决方案感觉更像是一种解决方法,而不是实际的解决方案,但它对我有用。
这是由 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>
除了删除插件之外,我看不出有什么方法可以清除它。
我运行遇到了同样的问题。 Undo/Redo升级到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);
我正在开发一个带有工具栏的 rcp 应用程序,可以快速访问某些操作,包括撤消和重做。我的问题是这两个特定操作没有显示在工具栏中。我已找到应用程序启动时生成的 workbench.xmi
文件的原因。具有属性 key="persp.hiddenItems"
的标记 persistedState
在 value="..."
属性中包含 persp.hideToolbarSC:org.eclipse.ui.edit.undo,persp.hideToolbarSC:org.eclipse.ui.edit.redo
。如果我从 workbench.xmi
中删除这些条目,撤消和重做操作将按应有的方式显示在工具栏中。
我的问题是:我该怎么做才能使 org.eclipse.ui.edit.undo
和 org.eclipse.ui.edit.redo
不以该属性结尾?
我最初使用 eclipse neon 没有这个问题,但是当更新到 eclipse 2018-12 时,这个问题开始发生了。
编辑:
我终于通过将我的撤消和重做操作的 ID 更改为其他内容来让它工作。我必须在动作的构造函数中使用 setId(...)
和 setActionDefinedId(...)
设置 ID,然后必须在 [=22= 中的 <extension point="org.eclipse.ui.commands">
下的 plugin.xml
中定义命令] 标签。
这个解决方案感觉更像是一种解决方法,而不是实际的解决方案,但它对我有用。
这是由 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>
除了删除插件之外,我看不出有什么方法可以清除它。
我运行遇到了同样的问题。 Undo/Redo升级到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);