`
yianpuodiaotu
  • 浏览: 241562 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Editor的脏处理

 
阅读更多

做编辑器Editor插件,肯定离不开对“脏”的处理。以前虽然也写过部分编辑器,总感觉对脏的处理比较零乱。今天偶尔翻看了一下原来的代码,整理如下文:

(本文对脏的处理不求正规,仅求使用)大家如有好的方法or捷径,欢迎拍砖

 

背景:多页编辑器+gef

 

对editor的处理:

//第一步,对editor的构造函数添加EditDomain
	public MyGraphicalEditor() {
		setEditDomain(new DefaultEditDomain(this));
	}

//第二步,对Command堆栈进行监听
	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
		super.init(site, input);
		getCommandStack().addCommandStackListener(this);
	}

//第三步,重载CommandStackListener的CommandStackChanged()方法
	public void commandStackChanged(EventObject event) {
		super.commandStackChanged(event);
		firePropertyChange(IEditorPart.PROP_DIRTY);// 别忘了
	}

//第四步,定义一个boolean类型的变量dirty,并写其set方法。供涉及Command堆栈之外的操作对“脏”状态改的需求
	public void setDirty(boolean dirty){
		if (dirty != this.dirty) {
			this.dirty = dirty;
			firePropertyChange(IEditorPart.PROP_DIRTY);
		}
	}

//第五步,重载editor的isDirty()方法
	public boolean isDirty() {
		return (getCommandStack().isDirty()) | dirty; 
	}

// 最后一步,doSave()方法的处理
	public void doSave(IProgressMonitor arg0) {
		getCommandStack().markSaveLocation();
		dirty = false;
		firePropertyChange(IEditorPart.PROP_DIRTY);
		// Todo others.....
	}

在edtor中可以直接调用setDirty() 来设置编辑器的“脏”状态,在其他页面(非editor类中),我们可以通过以下方法获取编辑器editor:

	private MyGraphicalEditor getEditor(){
		IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
		if(editor instanceof MyGraphicalEditor)
			return (MyGraphicalEditor)editor;
		return null;
	}

然后就可以设置编辑器的脏状态了。

over。。。。

 

 

分享到:
评论

相关推荐

    Ntfs Streams Editor2工具

    同时NtfsStreamsEditor提供了最强大的删除、附加、导入、导出、备份和还原等完整处理手段,是Ntfs数据流处理必备的工具。 NtfsStreamsEditor可以实现对NTFS数据流的扫描、删除、附加、导入、导出、备份和还原等完整...

    PDF Editor( PDF Editor)

    10. **批量处理**:高级PDF Editor提供批量处理功能,可以一次性对大量PDF文件执行相同的操作,如转换格式、添加水印等。 使用PDF Editor时,需要注意以下几点: - 选择合适的PDF Editor:市场上有许多PDF工具,...

    eclipse安装maven插件,处理无Maven Pom editor打开方式问题

    在Eclipse中安装Maven插件,可以方便开发者在IDE内进行Maven项目的操作,解决无法用Maven Pom editor打开pom.xml文件的问题。以下是对这个主题的详细说明: 1. **Maven Pom Editor**: Maven的pom.xml文件是项目...

    JSONEditor格式化

    JSONEditor是一款强大的在线工具,专为处理JSON数据而设计,提供了直观且易于操作的界面,让用户可以方便地编辑、格式化、验证以及美化JSON数据。它不仅适合开发人员,也适用于那些需要处理JSON数据但不熟悉编程的...

    JsonEditor编辑器

    总之,JsonEditor作为一款强大的JSON编辑工具,能够极大地提升前端开发人员在处理JSON数据时的效率和用户体验。通过掌握它的特性和API,开发者可以在项目中实现更加灵活且功能丰富的JSON数据编辑功能。

    Microsoft Photo Editor 3.01

    **Microsoft Photo Editor 3.01** 是微软在Office早期版本中包含的一款图像编辑软件,它为用户提供了基本但实用的图片处理功能。这款工具在当时因其简洁的界面和易于操作性而受到欢迎,尤其在设置图像透明度方面表现...

    Ace Editor 源码含Demo

    1. **源码结构**: Ace Editor 的源码通常按照模块进行组织,包括核心编辑器组件、主题、语言模式、键绑定、事件处理等。通过查看源码,我们可以深入了解其实现原理,如如何处理用户输入、高亮语法、自动完成等功能...

    asn1editor 专业查看der编码工具

    asn1editor是一款专业的DER编码查看工具,主要用于处理ASN.1(Abstract Syntax Notation One)编码的数据,这种编码常用于在不同系统间交换结构化信息,特别是在电信、网络安全和物联网等领域。ASN.1是一种国际标准...

    图像处理节点编辑器:Image-Processing-Node-Editor

    图像处理,应该是不少 AI 工程师在平时进行模型训练,...图像处理节点编辑器:Image-Processing-Node-Editor。通过该工具,可以辅助并完成深度学习的各项图像处理工作,快速验证、对比各个图像在不同条件下的执行结果。

    010editor和BMP模板

    在给定的描述中,“010editor和BMP模板”意味着我们将讨论如何利用010Editor处理BMP图像文件的模板。 首先,BMP(Bitmap)是一种常见的位图图像格式,通常用于存储未经压缩的像素数据。在010Editor中,你可以创建...

    jsonEditor Editor json

    总结来说,`jsonEditor` 是一个强大的JSON数据编辑工具,它的功能丰富,易用性强,能够极大地提升开发人员和业务人员在处理JSON数据时的工作效率。无论是初学者还是经验丰富的开发者,都可以从中受益。通过使用`json...

    010Editor模板—更新

    总的来说,这次的“010Editor模板—更新”是一次对现有模板库的优化和增强,为010Editor的使用者提供了更强大、更准确的文件分析工具,尤其对于处理二进制文件格式的专业人士而言,这是一个非常有价值的资源。...

    R4NR4ND_Editor.zip_R4NR4ND_Editor_Rockey4ND Editor_nr4nd_rockey

    首先,R4NR4ND_Editor的主要目标是服务于那些需要处理Rockey4ND数据和文件的用户。Rockey4ND是一种可能涉及到编程、数据管理或者特定系统操作的专业工具,而这款编辑器则为这些操作提供了直观的界面和高效的工具。...

    mapeditor_mapeditor_

    "MapEditor"是一款专用于地图渲染查看和编辑的软件工具,尤其适用于处理多重地图格式。在IT行业中,这样的工具对于游戏开发、地理信息系统(GIS)应用或者任何涉及地图数据的操作都至关重要。它允许用户创建、修改和...

    jsoneditor-1.7.0 jsoneditor.js中文提示版

    总的来说,JSONEditor 1.7.0中文提示版是开发人员和数据分析师处理JSON数据的利器,无论是简单的数据查看,还是复杂的数据编辑和验证,都能提供高效且直观的解决方案。通过这款工具,用户可以在无需深入了解JSON语法...

    010 editor的使用

    综上所述,010 Editor通过其独特的二进制模板技术为用户提供了强大而灵活的文件编辑能力,无论是在解析复杂二进制文件还是在处理文本数据方面都表现得十分出色。通过对模板的理解和运用,用户能够更加高效地完成数据...

    Chrome Header Editor 插件

    Chrome Header Editor允许用户自定义这些头部字段,以满足特定的需求或解决特定的问题,例如在遇到由于流量异常或IP异常导致的人机验证时。 当网站检测到异常流量或来自特定IP的频繁访问时,它们可能会触发人机验证...

    010 Editor Templates 全新010模板打包下载

    010 Editor Templates是010 Editor的一个重要组成部分,它包含了一系列预定义的模板,这些模板极大地提高了用户在处理特定类型文件时的效率。 010 Editor的模板系统是其核心特色之一。模板是一种特殊的脚本语言,它...

    Program4Pc DJ Audio Editor(音频处理软件)官方中文版V9.1

    Program4Pc DJ Audio Editor 是一款专业易用的音频处理软件,内置多种编解码器,兼容音频和视频格式文件的处理,可轻松应用各种滤镜和效果以及可显示音频文件的波形或频谱图像,具备剪切、合并、拆分、修剪、音频...

    asn1editor.1.4.1

    总之,asn1editor.1.4.1是一款针对ASN.1编码的实用工具,适用于需要理解和处理ASN.1编码数据的开发者和网络工程师,尤其在处理通信协议或数据存储时能发挥重要作用。它的跨平台兼容性和丰富的功能使得它在IT行业中...

Global site tag (gtag.js) - Google Analytics