我有一个扩展FormEditor类的编辑器类。为了实现此编辑器的save
和save As
功能,是否足以覆盖:
doSave(IProgressMonitor监视器)
doSaveAs()
isSaveAsAllowed()
单独使用这些方法?还是其他什么?
答案 0 :(得分:1)
是。请同时考虑以下
firePropertyChange(PROP_DIRTY)
Save
Save As...
和ActionBarAdvisor
菜单项
答案 1 :(得分:1)
Eclipse社区论坛上有一篇关于此问题的优秀文章:http://www.eclipse.org/forums/index.php/t/140214/
摘录:
您正在使用FormEditor的实例作为编辑器。这个编辑器 包含FormPage实例作为页面。我希望你有 专门的SectionParts(或AbstractParts)作为页面中的部分。 在该部分中,您可以使用显示某些数据的文本小部件 附加了一个ModifyListener。在这个监听器中调用markDirty() 部分和ManagedForm和FormEditor将处理脏状态 您。并且不要忘记将每个SectionPart添加到ManagedForm中 addPart(节)!
所以你基本上只需要:
public class MyPage extends FormPage implements ModifyListener {
private SectionPart secPart;
private Text myText;
public MyPage(FormEditor editor, String id, String title) {
super(editor, id, title);
}
@Override
protected void createFormContent(IManagedForm form) {
secPart = new SectionPart(formBody, toolkit, Section.DESCRIPTION
| Section.TITLE_BAR);
Section section = secPart.getSection();
//add labels and controls for the three fields
myText = new Text(composite, SWT.BORDER);
myText.addModifyListener(this);
form.addPart(secPart);
}
public void modifyText(ModifyEvent arg0) {
secPart.markDirty();
}
}
作为旁注,来自FormEditor的editorDirtyStateChanged()将在您进行保存后轻推您的插件 - 使页面跟随使用commitPages(true)。这些方法将在您保存之后使用 - 让您的工作台知道一切都是干净的。