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