0

我有一个基于 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="&amp;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()功能,因此当它们具有焦点并且它们脏时启用保存按钮,但如果其中一个是脏的,则应在所有视图中启用保存,而不仅仅是脏视图。为第三个视图启用保存功能,而不指示脏,似乎是不可能的。

有人知道更好的方法吗?我想我可以创建自己的保存处理,但最好尽可能使用标准。

4

1 回答 1

1

您可以调用firePropertyChange(IWorkbenchPartConstants.PROP_DIRTY)所有应显示为脏的视图。

于 2013-11-14T13:42:03.857 回答