你link的常见问题回答说:
另一种机制,坚持视图状态是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());
}
感谢弗雷德里克用于指出没有加载从或保存到一个文件,这里需要。
调用'saveState'方法? – tkotisis
调用'saveState'would是一个伟大的想法,如果你弄清楚如何获得用于保留在工作台 – benez