多页编辑器的保存

来源:互联网 发布:鞭和锏 知乎 编辑:程序博客网 时间:2024/05/01 11:26

以继承自FormEditor类的多页编辑器为例。

继承自FormEditor编辑器的保存,其中FormEdiotr继承自MultiPageEditorPart

实际上它的保存还是需要调用每一个页面的保存,如

public void doSave(IProgressMonitor monitor){

    tagPage.doSave(monitor);

//省略其它page的doSave(monitor)调用

    editorDirtyStateChanged();

}

 

 

 

其中tagPage为多页编辑器的其中一页,继承自FormPage,实际上FormPage也是一个编辑器,它继承自EditorPage,并实现了IFormPage接口。

 

 

而在FormPage中编辑器的保存通常是这样的,可以在编辑器中定义一个标志编辑器是否脏的变量:

①private boolean isDirty = false;//初始值为false,假定未改写,isDirty方法返回isDirty。

②在需要监听修改事件的地方进行isDirty值的设置,并通知事件,如:

isDirty = true;

getEditor().editorDirtyStateChanged();//特别注意这里的getEditor()方法

③在doSave方法中完成保存工作,且将isDirty设置为false,如:

public void doSave(IProgressMonitor monitor) {

        writeFieldsToTag();

        id3TagInfo.saveMP3File();

        isDirty = false;//重置为false

    }

 

 

说明:实际上FormEditor中的isDirty()方法是把所有它包含的FormPage遍历了一遍,来判断其中哪些有修改

原创粉丝点击