我正在使用带有工具栏的rcp应用程序,以便快速访问某些操作,包括撤消和重做。我的问题是这两个特定的操作没有显示在工具栏中。我找到了应用程序启动时生成的workbench.xmi
文件的原因。带有persistedState
属性的标签key="persp.hiddenItems"
在persp.hideToolbarSC:org.eclipse.ui.edit.undo,persp.hideToolbarSC:org.eclipse.ui.edit.redo
属性中包含value="..."
。如果我从workbench.xmi
中删除这些条目,撤消和重做操作将显示在工具栏中。
我的问题是:我能做些什么才能使org.eclipse.ui.edit.undo
和org.eclipse.ui.edit.redo
最终不会以此属性开头?
我最初使用eclipse neon而没有这个问题,但是当更新到eclipse 2018-12时,这种情况开始发生。
编辑:
我终于通过将我的撤销和重做动作的ID更改为其他内容来实现它。我必须在动作构造函数中使用setId(...)
和setActionDefinedId(...)
设置ID,然后命令必须在plugin.xml
<extension point="org.eclipse.ui.commands">
下的<command id="..." name="Undo"></command>
中定义。
这种解决方案更像是一种解决方法,而不是一种实际的解决方案,但它对我有用。
这是由hiddenToolBarItem
扩展点的org.eclipse.ui.perspectiveExtensions
元素设置的。
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>
除了省略插件外,我没有办法解决这个问题。