如何使用 Eclipse CNF 的 Saveable Protocol 实现对 View 的保存
2010-05-04 00:00:00 来源:WEB开发网如上图所示,当所需要保存的元素发生改变时,调用 CommonNavigator 的 firePropertyChange 方法,表明其中的元素发生了变化,些时注册在其中的监听器,如 SaveAction, SaveAllAction 会通过 CommonNavigator 的 getActiveSaveables() 计算是否有可保存的元素发生修改,如果有元素发生修改,更新 SaveAction 与 SaveAllAction 的可用状态,如果有可保存的元素,Navigator 的标题栏也将出现“*”,表明其为可保存的状态。
当用户选择所需要保存的元素时,并选择保存时,由 SaveableProvider 返回可保存的 Saveable 对象,由 CommonNaviagator 的 Saveables 框架调用对象的 doSave 方法进行保存。
实例说明
本节通过一个简单的例子来说明白如何何使用 CommonNavigator 的 Saveable Protocol. 在这个例子中的模型部分,包括文件夹结点和文件结点,其中文件结点可以通过编辑器进行编辑,文件内容发生改变时,相应地导航器上的结点名称将发生变化,当焦点处于导航器结点视图时,Save 与 SaveAll 按钮状态将随着所选择的结点的变化而变化。
图 5. 可保存的 Navigator 视图
第一步:创建视图 (view),这部分通过视图扩展点的实现,其中对指定的视图实现类继承 CommonNavigator,并重写它的 getSaveables 方法,在本文的例子中,由于框架的 getActiveSaveables() 将返回处于活动状态的 getSaveables,因此我们将处于活动状态的 Saveables 返回。
public class SaveableView extends CommonNavigator {
public static String ID = "ViewSaveableProtocol.SaveableView";
public Saveable[] getSaveables() {
return this.getActiveSaveables();
}
public void fireSaveabelsChanged(){
this.firePropertyChange(IWorkbenchPartConstants.PROP_DIRTY);
}
}
更多精彩
赞助商链接