FAQへのリンクは、次のような回答を提供します。
ビュー ステートを永続化するもう 1 つのメカニズムは、JFace IDialogSettings 機能です。ビューの保存/初期化メカニズムに対するダイアログ設定の利点は、設定を永続化するタイミングを制御できることです。
これは、閉じたときに IDialogSettings を使用して IntroPart の状態を保持する方法と、作成時に復元する方法の例です。MyIntroPart は、Text
ウィジェットを持つ IntroPart です。表示されたテキストは、IntroPart を閉じたときに保存され、作成時に復元されます。
イベントを取得するためにpartClosed
、MyIntroPart は IPartListener2 を実装し、それ自体を PartService に登録します。
private static final String MY_INTRO_SETTINGS = "my_intro_settings";
private static final String MY_INTRO_TEXT_KEY = "my_intro_text";
@Override
public void createPartControl(Composite parent) {
this.text = new Text(parent, SWT.BORDER);
// try to load the settings
IDialogSettings settings = Activator.getDefault().getDialogSettings();
IDialogSettings section = settings.getSection(MyIntroPart.MY_INTRO_SETTINGS);
if (section != null) {
// set the restored text string in the text widget
this.text.setText(section.get(MyIntroPart.MY_INTRO_TEXT_KEY));
}
// register the part listener
getIntroSite().getWorkbenchWindow().getPartService().addPartListener(this);
}
これにより、テキストがテキスト ウィジェットに復元されます。
MyIntroPart は IPartListener2 を実装partClosed
して、ビューが閉じられたときにダイアログ設定を保存します。
@Override
public void partClosed(IWorkbenchPartReference partRef) {
// remove part listener from part service
getIntroSite().getWorkbenchWindow().getPartService().removePartListener(this);
IDialogSettings settings = Activator.getDefault().getDialogSettings();
// get the section of the text
IDialogSettings section = settings.getSection(MyIntroPart.MY_INTRO_SETTINGS);
// if it doesn't exist, create it
if (section == null) {
section = settings.addNewSection(MyIntroPart.MY_INTRO_SETTINGS);
}
// put text from text field in section
section.put(MyIntroPart.MY_INTRO_TEXT_KEY, this.text.getText());
}
ここでは、ファイルからの読み込みやファイルへの保存が不要であることを指摘してくれた fredrik に感謝します。