快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
的保存(5) 时间:2012-01-28 IBM 黄飞

第三步:对视图中树型结点元素进行修饰,当对应的可保存元素发生修改后,其名称以“*”作为后缀,当修改被保存后,后缀“*”号消失。该功能主要通过 org.eclipse.ui.decorators 扩展点实现。

图 7. Decorator 扩展点

在上图中,objectClass 属性指明的是所要修饰对象的类型。class 属性指明的修饰的具体实现类,Eclipse 框架为我们提供了轻量级的修饰机制,只需将 lightweight 属性值指明为 true,同时,将所要提供的修饰类实现 ILightweightLabelDecorator 接口,框架就能对树型结点元素提供前缀、后缀、重叠图片的修饰。在本文的例子中,当模型元素对应的 eidtor 发生修改时,树型导航器上结点的名称将以“*”作为后缀。具体代码如下:

清单 2. 样例代码

public class FileModifiedDecorator extends LabelProvider implements         ILightweightLabelDecorator {    @Override    public void decorate(Object element, IDecoration decoration) {      if (element instanceof TextFile) {        TextFileEditor editor = (TextFileEditor) FolderManager                      .getWorkbenchPart((TextFile) element);        if (editor != null && editor.isDirty())           decoration.addSuffix("*");        }      }    public void refreshDecorator(final Object element) {      Display.getDefault().asyncExec(new Runnable() {        public void run() {          fireLabelProviderChanged(new LabelProviderChangedEvent(                      FileModifiedDecorator.this, element));        }      });    }   }

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

时间:2012-01-28 IBM 黄飞

第四步,关联保存模型与 UI 展示,当所要保存的元素发生改变时,更新 Navigator 视图的标题的状态,同时 Save,SaveAll 菜单项将根据用户选择的结点,更新其状态。具体步骤如下:

当用户通过编辑器对模型元素内空进行修改时,通知编辑器、视图、元素修饰器,使其作出相应的变化,如编辑器与视图标题将以“*”作为前缀,树型结点上的名称将以“*”作为后缀。代码片段如下: 清单 3. 样例代码

public class TextFileEditor extends EditorPart{    @Override    public void doSave(IProgressMonitor monitor) {      dirty = false;      PlatformUI.getWorkbench().getDisplay().asyncExec( new Runnable() {        public void run() {          firePropertyChange(IEditorPart.PROP_DIRTY);          // Notify the decorator;          refreshDecoration();          // Notify the content navigator.          FolderManager.fireSaveablesDirtyChanged();        }      });    }   }   public class FolderManager {    public static void fireSaveablesDirtyChanged() {      final IViewPart view = PlatformUI.getWorkbench()         .getActiveWorkbenchWindow().getActivePage().findView(SaveableView.ID);      if (view != null) {        Display.getDefault().syncExec(new Runnable() {          pu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号