如何使用Eclipse CNF的Saveable Protocol实现对View的保存 - 编程入门网
firePropertyChange() 方法将编辑器的界面状态更新,此时标题栏的星号(*)消失。
publicabstractbooleanisSaveAsAllowed(): 表明编辑器的“另存为”按钮是否可用。 publicabstractvoiddoSaveAs(): 在 isSaveAsAllowed() 返回 true 的情况下,用户点击“另存为”,doSaveAs() 方法将被调用。与 doSave 方法类似,用户可以在该方法里实现对模型的保存逻辑。一般情况下我们可能复用 doSave 的逻辑完成对模型内容的另存为。 protectedvoidfirePropertyChange(finalintpropertyId):当编辑器属性发生变化时,可以通过调用该方法通知所注册的******。例如,当修改发生时,在编辑器标题前出现的“*”前缀。 CNF 的 Saveable Protocol 的实现原理 与 Editor 的保存不同,View 往往是及时保存,即 view 上的修改在完成时就保存了,如我们选择了导航器上某个结点,并通过 PropertiesView 修改了结点的属性,例如结点的名字时,此时,属性的修改便及时地反映到导航器上。这是 Eclipse 应用开发所倡导的最佳实践之一,因为视图的主要用于对模型的导航,而不是对模型进行修改。因此,在 ViewPart 的实现上并不提供 doSave(),doSaveAs() 来对模型进行保存。 然而,一些 Eclipse 应用希望通过 view 来完成对模型结点的保存,例如,用户同时在 editor 上对几个不同的结点进行编辑,当编辑结束时,用户只想保存其中几个 editor 的修改,些时,如果只是通过逐一地对每个 editor 进行保存,这将大大地影响操作的效率。由于导航器起着对结点的导航功能,如果能通过在导航器上完成对多个不同结点的保存,将大大方便用户的操作。 ContentProvider 类用于帮助 CommonViewer 访问树型结点元素的,在 CNF 中,如果 Viewer 上的元素可以被保存,则该类必须实现 IAdaptable 可适配于 SaveablesProvider 实例。SaveablesProvider 将要保存的模型与树型结点元素进行映射,用于为导航器提供可保存的对象。SaveblesProvider 包含以下几个关键的方法: public abstract Saveable[] getSaveables():返回该 provider 所能访问到的所有对象。 public abstract Object[] getElements(Saveable saveable):返回可保存对象所对应的树型结点上的模型元素。 public abstract Saveable getSaveable(Object element):返回树型结点元素所对应的可保存元素。 final protected void fireSaveablesOpened(Saveable[] models):通知所注册的******参数数组中的可保存的模型元素已经被打开。 final protected boolean fireSaveablesClosing(Saveable[] models, boolean force):通知所注册的******参数数组中的可保存的模型元素正在被关闭。 final protected void fireSaveablesClosed(Saveable[] models):通知所注册的******参数数组中的可保存的模型元素已经关闭。 如何使用Eclipse CNF的Saveable Protocol实现对View的保存(3)时间:2012-01-28 IBM 黄飞其中,fire* 方法必须在 UI 线程中被执行。同时,在 CommonNavigator 实现了 ISaveablesSourcer 接口,用于提供可保存对象。 Saveable[] getSaveables(): 图 4. Saveables 框架的调用过程 如上图所示,当所需要保存的元素发生改变时,调用 CommonNavigator 的 firePropertyChange 方法,表明其中的元素发生了变化,些时注册在其中的******,如 SaveAction, SaveAllAction 会通过 CommonNavigator 的 getActiveSaveables() 计算是否有可保存的元素发生 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |