原文链接:http://blog.csdn.net/zhmz1326/article/details/473159
如何在一个GEF editor被编辑了之后,使file菜单下的save action enable呢?(此editor继承自WorkbenchPart。)
一开始我想override一下isDirty()方法就可以了,比如根据CommandStack
public boolean isDirty() {
return getCommandStack().isDirty();
}
但这样还不够,尽管CommandStack确实dirty了,save 还是灰的。
在Eclipse Forum上找到这样一段话:
If you are inheriting from WorkbenchPart, the class, then you should do firePropertyChange(IEditorPart.PROP_DIRTY) whenever the state of dirty changes, either from dirty to not dirty (i.e. after a save or saveAs), or from not dirty to dirty (i.e. after a change). This tells the workbench to enable or disable the Save. However SaveAs should always be enabled for a writable file, that has nothing to do with it being dirty.
If you are not inheriting from WorkbenchPart, then you will need to duplicate that code and do the firing yourself.
看来一定要在PROP_DIRTY改变的时候fire它。
我做了一下修改, 首先写一个自己的CommandStackListener。
private CommandStackListener commandStackListener = new CommandStackListener() {
public void commandStackChanged(EventObject event) {
firePropertyChange(PROP_DIRTY);
}
};
然后在configureGraphicalViewer 时,加给commandStack。
protected void configureGraphicalViewer() {
。。。。。
getCommandStack().addCommandStackListener(commandStackListener);
}
别忘了在dispose时释放此listener。
测试了一下,save终于在dirty时变亮了。^_^
不过还是有一点问题,作一些修改,然后save 文件,然后undo到尽头,这时save变灰了,which shouldn't! 看来问题是出在isDirty上了, getCommandStack().isDirty() 上F3一下,发现一个saveLocation属性,下面还有一个markSaveLocation()。回到Editor, 在doSave()末尾修改:
public void doSave(IProgressMonitor monitor) {
。。。。。。
getCommandStack().markSaveLocation();
}
再测试一下,大功告成了。
分享到:
相关推荐
由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。
Eclipse插件开发是软件开发领域中的一个重要环节,它允许开发者扩展Eclipse集成开发环境(IDE)的功能,以满足特定的开发需求。GEF(Graphical Editing Framework)是Eclipse平台的一部分,专为构建图形化编辑器而...
这个实例代码2是《Eclipse插件开发》教程中的一部分,旨在帮助初学者理解如何利用GEF来创建自定义的图形编辑器。在Eclipse插件开发中,GEF提供了一套强大的框架,使得开发者可以方便地构建出功能丰富的图形用户界面...
在"GEF开发指南-插件开发.pdf"中,你将学习到如何设置Eclipse开发环境,创建GEF项目,定义模型和视图,以及实现基本的图形编辑功能。此文档可能涵盖了以下主题: 1. 创建Eclipse插件项目:了解如何使用Eclipse的New...
**Eclipse 3.4 可视化开发:GEF详解** **一、Eclipse GEF简介** Eclipse GEF(Graphical Editing Framework)是Eclipse平台中的一个核心组件,用于构建图形化编辑器和可视化工具。它为开发者提供了一套全面的API,...
Eclipse HTML Editor GEF 是一个基于 Eclipse 的集成开发环境(IDE)中的插件,它提供了对HTML编辑的强大支持,特别是通过引入图形化编辑框架(GEF)。GEF 是 Eclipse 平台上用于创建图形化编辑器的框架,它使得...
在Eclipse中,GEF(Graphical Editing Framework)、VE(Visual Editor)和GMF(Graphical Modeling Framework)是三个重要的插件或框架,主要用于图形化界面设计和建模。 1. GEF(Graphical Editing Framework) ...
Eclipse GEF项目是为了解决在创建复杂、图形化界面时可能遇到的各种问题,使开发过程更加简便。它不仅可以帮助开发者扩展Eclipse的功能,还能够大幅提高开发效率,减少重复工作,同时让最终用户享受到更加友好的用户...
《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...
Eclipse GEF(Graphical Editing Framework)插件是Eclipse IDE中的一个重要组成部分,主要用于构建图形化用户界面,尤其是用于创建图形编辑器。它为开发者提供了一套完整的框架,用于开发基于模型的图形编辑工具,...
总的来说,Eclipse GEF插件是一个强大的工具,它使得开发图形化应用变得更加简单和高效。通过学习和熟练掌握GEF,开发者能够构建出直观、易用且功能丰富的图形界面,提升软件的用户体验。在实际项目中,合理运用GEF...
Eclipse GEF(Graphical Editing Framework)是一款强大的图形编辑框架,用于在Eclipse环境中开发图形化用户界面,尤其是用于创建可视化的建模工具和流程编辑器。本DEMO旨在指导开发者如何利用GEF来开发Eclipse插件...
Eclipse GEF(Graphical Editor Framework)和Draw2D是两个强大的开源库,主要用于构建图形化用户界面(GUI)和图形编辑工具。这两个组件在Eclipse Rich Client Platform (RCP) 中发挥着至关重要的作用,使得开发者...
Eclipse插件开发框架GEF(Graphical Editing Framework)是一个强大的工具,用于构建基于Eclipse平台的图形化编辑器。这个API文档详细介绍了如何利用GEF进行插件开发,为开发者提供了丰富的参考资料。 1. **Eclipse...
Eclipse的GEF(Graphical Editing Framework)插件是一个强大的图形编辑框架,它为开发者提供了在Eclipse集成开发环境中创建可视化的图形界面和编辑器的能力。这个插件主要用于构建复杂的图形用户界面,如UML模型、...
本压缩包"GEF-SDK-3.4.0.zip"提供了GEF的软件开发工具包,帮助开发者在Eclipse环境中创建功能丰富的图形编辑工具。 1. **GEF介绍** GEF是Eclipse平台的一个核心部分,它提供了一套框架和服务,用于构建基于模型的...
### GEF开发指南——插件开发关键知识点解析 #### 一、概述 本文将详细介绍《GEF开发指南—插件开发》中涉及的关键知识点。该书深入浅出地讲解了如何利用GEF(Graphical Editing Framework)进行插件开发,特别适合...