我有一个基于 3.x 平台的 RCP 应用程序。该应用程序使用户能够查看和修改单个数据集。有些ViewParts
只是部分数据集的观察者,而另一些可以修改数据。当ViewPart
修改相同的数据时,我希望能够保存数据集,最好使用标准org.eclipse.ui.file.save
命令,独立于哪个ViewPart
当前具有焦点的命令无关。
我的方法是定义plugin.xml
类似的扩展:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="toolbar:org.eclipse.ui.main.toolbar">
<toolbar
id="se.file.maintoolbar"
label="File Toolbar">
<command
commandId="org.eclipse.ui.file.save"
label="&Save Project"
style="push"
tooltip="Save the project">
</command>
</toolbar>
</menuContribution>
</extension>
.
.
.
</plugin>
在我的实现中,ActionBarAdvisor
我注册了操作:
@Override
protected void makeActions(IWorkbenchWindow window) {
saveProjectAction = ActionFactory.SAVE.create(window);
register(saveProjectAction);
}
我的ViewParts
,三种,都实现了ISaveablePart2
,感觉不对,但是没见过其他的方法。其中两个视图控制它们的isDirty()
功能,因此当它们具有焦点并且它们脏时启用保存按钮,但如果其中一个是脏的,则应在所有视图中启用保存,而不仅仅是脏视图。为第三个视图启用保存功能,而不指示脏,似乎是不可能的。
有人知道更好的方法吗?我想我可以创建自己的保存处理,但最好尽可能使用标准。