快速业务通道

如何使用Eclipse CNF的Saveable Protocol实现对View的保存 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
修改,如果有元素发生修改,更新 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);    }   }

如何使用Eclipse CNF的Saveable Protocol实现对View的保存(4)

时间:2012-01-28 IBM 黄飞

第二步:为导航器上添加 ContentProvider 和 LabelProvider, 在 providesSaveables 属性上,将其值指明为 true. 同时 ContentProvider 属性所对应的类必须实现 IAdatpable 接口,能够适配于 SaveablesProvider 类型。

图 6. contentNavigator 扩展点的 providesSaveables 属性

清单 1. 样例代码

public class SaveableContentProvider extends SaveablesProvider implements              ITreeContentProvider, IAdaptable {    @Override    public Object[] getElements(Saveable saveable) {      if(saveable instanceof SaveablePart){        IWorkbenchPart part = ((SaveablePart)saveable).getWorkbenchPart();        IEditorInput editorInput = ((TextFileEditor)part).getEditorInput();        TextFile file = ((TextFileEditorInput)editorInput).getTextFile();        return new Object[]{ file };      }      return null;    }    @Override    public Saveable getSaveable(Object element) {      if (element instanceof TextFile) {        IWorkbenchPart part = FolderManager                        .getWorkbenchPart((TextFile) element);        if(part != null){          final SaveablePart saveable = new SaveablePart(part);          return saveable;        }      }      return null;    }    @Override    public Saveable[] getSaveables() {      Object [] parts = FolderManager.getAllOpenedWorkbenchPart();      final Saveable[] saveables = new Saveable[parts.length];      return saveables;    }   }

如何使用Eclipse CNF的Saveable Protocol实现对View

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号