0

3.x プラットフォームに基づく RCP アプリケーションがあります。このアプリケーションを使用すると、ユーザーは単一のデータ セットを表示および変更できます。データセットの一部ViewPartsを観察するだけの人もいれば、データを変更できる人もいます。同じデータを変更するとき、できれば標準コマンドを使用して、現在フォーカスされているものとViewPartは関係なく、データセットを保存できるようにしたいと考えています。org.eclipse.ui.file.saveViewPart

私のアプローチは、拡張機能を次の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の 3 種類はすべて を実装していますがISaveablePart2、それは間違っているように感じますが、他のアプローチは見たことがありません。ビューのうちの 2 つがそのisDirty()機能を制御するため、保存ボタンは、フォーカスがあるときとダーティな場合に有効になりますが、そのうちの 1 つがダーティな場合は、ダーティ ビューだけでなく、すべてのビューで保存を有効にする必要があります。ダーティであることを示さずに、3 番目のビューの保存機能を有効にすることは不可能に思えます。

誰もがより良いアプローチを知っていますか? 保存の仕方は自分で作ってもいいと思いますが、なるべく標準的なものを使ったほうがいいと思います。

4

1 に答える 1

1

firePropertyChange(IWorkbenchPartConstants.PROP_DIRTY)ダーティとして表示する必要があるすべてのビューを呼び出すことができます。

于 2013-11-14T13:42:03.857 に答える