我有一个基于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()
函数,因此保存按钮在它们有焦点时启用,如果它们是脏的,但如果其中一个是脏的,则应在所有视图中启用保存,而不仅仅是脏视图。为第三个视图启用保存功能而不指示脏,似乎是不可能的。
有人知道更好的方法吗?我想我可以创建自己的保存处理,但最好尽可能使用标准。
答案 0 :(得分:1)
您可以在应显示为脏的所有视图中调用firePropertyChange(IWorkbenchPartConstants.PROP_DIRTY)
。