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

关于编辑器Dirty的处理

阅读更多

今天开始做些小的总结,因为Eclipse插件方面做了不少东西了,也该总结总结学习到的东西了!

为了增加普遍性,例子使用的Editor继承自最简单的EditorPart来制作。

 

程序里的说明,作为帮助吧!

 

package ztestpluginproject.editors.zeditors;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.widgets.ColumnLayout;
import org.eclipse.ui.forms.widgets.ColumnLayoutData;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.part.EditorPart;

public class ZTestEditor extends EditorPart {
	
	// 简单情况下可以自己制作一个标志来记录当前编辑器状况 
	public boolean isDirty = false;

	@Override
	public void doSave(IProgressMonitor monitor) {
		this.isDirty = false; // 先将标志设置为false
		this.firePropertyChange(PROP_DIRTY); // 通知编辑器要修改状态了
	}

	@Override
	public void doSaveAs() {
	}

	@Override
	public void init(IEditorSite site, IEditorInput input)
			throws PartInitException {
		this.setInput(input);
		this.setSite(site);
		this.setPartName(input.getName());//设置标签为 文件名
	}

	@Override
	public boolean isDirty() {
		//firePropertyChange(PROP_DIRTY) 将根据这里返回的值,来修改编辑器状态(保存或者未保存<*>)
		return this.isDirty;
	}

	@Override
	public boolean isSaveAsAllowed() {
		return false;
	}

	@Override
	public void createPartControl(Composite parent) {
		
		// 这里新建了一个表单 放了三个文本框
		final FormToolkit toolkit = new FormToolkit(parent.getDisplay());
		
		ColumnLayout layout = new ColumnLayout();
		layout.horizontalSpacing = 5;
		layout.verticalSpacing = 5;
		parent.setLayout(layout);
		
		Section section = toolkit.createSection(parent, Section.TWISTIE|Section.TITLE_BAR);
		Composite compo = toolkit.createComposite(section, SWT.NONE);
		ColumnLayout layoutSection = new ColumnLayout();
		compo.setLayout(layoutSection);
		section.setClient(compo);
		section.setExpanded(true);
		
		// 文本框内容变动监听器
		TxtChangeListener listener = new TxtChangeListener();
		
		Text txtName = toolkit.createText(compo, "Mike", SWT.NONE);
		ColumnLayoutData td = new ColumnLayoutData();
		txtName.setLayoutData(td);
		txtName.addModifyListener(listener);
		
		Text txtAge = toolkit.createText(compo, "22", SWT.NONE);
		td = new ColumnLayoutData();
		txtAge.setLayoutData(td);
		txtAge.addModifyListener(listener);
		
		Text txtSex = toolkit.createText(compo, "m", SWT.NONE);
		td = new ColumnLayoutData();
		txtSex.setLayoutData(td);
		txtSex.addModifyListener(listener);
		
	}
	
	// 制作监听器 ,这里是对Text进行监听使用ModifyListener
	//如果是TextField(awt包下)之类的有DocumentListener,此处不再赘述
	class TxtChangeListener implements ModifyListener {
		@Override
		public void modifyText(ModifyEvent e) {
			System.out.println("ok");
			isDirty = true;
			ZTestEditor.this.firePropertyChange(PROP_DIRTY);
		}
	}
	
	@Override
	public void setFocus() {
	}

}
 
分享到:
评论

相关推荐

    Unity 脏镜头光晕效果Dirty Lens Effect

    导入这些资源后,开发者可以在Unity编辑器中直接应用到摄像机上,或者创建Volume节点并添加Dirty Lens效果。 总的来说,Unity的脏镜头光晕效果是通过结合Shader编程和后期处理技术来实现的,它为游戏和应用带来了更...

    fckeditor编辑器使用方法

    5. **检查编辑器内容是否被修改**:`IsDirty()`函数返回一个布尔值,指示编辑器内容是否与初始状态有差异。 #### 二、命令操作 fckeditor提供了丰富的命令集,如`DocProps`, `Templates`, `Link`, `Image`, `Table...

    C#176文本编辑器 源代码

    3. **文本处理**:文本编辑器的核心功能包括读写文件、查找替换、格式化等。C#提供了丰富的字符串处理函数,如`StreamReader`和`StreamWriter`用于文件读写,`Regex`类用于正则表达式匹配,`StringBuilder`用于高效...

    fckeditor javascript api

    - **IsDirty()**:检查编辑器中的内容是否已被修改。 #### 事件 FCKeditor支持多种事件,这些事件可以帮助开发者更好地控制编辑器的行为。例如,可以使用`"FCKeditor_OnComplete"`函数在编辑器加载完成后执行特定...

    FCKeditor_API使用详解.pdf

    - `IsDirty`:检查编辑器内容是否被修改过。 4. **执行命令** - FCKeditor提供了许多内置命令,如`DocProps`, `Templates`, `Link`, `Image`等。要执行命令,首先通过`Commands.GetCommand('CommandName')`获取...

    FCKeditor_API使用详解

    FCKeditor是一款强大的开源富文本编辑器,被广泛应用于Web应用程序中。它支持多种浏览器,并且提供了丰富的编辑功能,如图片上传、表格绘制等。FCKeditor_API则是用来控制和操作FCKeditor的核心接口集合,通过这些...

    GEF快速入门教程和EMF教程

    - 编辑器应包含必要的功能,如图形修改后的保存提示(`dirty handling`)。 - 编辑器继承自`org.eclipse.ui.part.EditorPart`,因此需要实现相应的方法以支持基本的编辑器行为。 ### GEF的基本结构 GEF的基本结构...

    FCKeditor入门的小例子

    FCKeditor是一款强大的开源文本编辑器,主要用于网页内容的创建和编辑。它提供了一个类似Microsoft Word的用户界面,使得在网页上编辑富文本内容变得简单直观。本教程将引导你入门FCKeditor的使用,帮助你快速掌握其...

    javascript获取FCKeditor内容.pdf

    在Web开发中,富文本编辑器FCKeditor是一个常用的组件,它允许用户在网页上进行类似Word的文本编辑。JavaScript是与FCKeditor交互的主要语言,用于获取和设置编辑器中的内容,以及执行各种编辑操作。本文将详细介绍...

    FCKEDITOR 相关函数介绍

    FCKeditorAPI还提供了检查编辑器内容是否被修改的`IsDirty()`方法。这在保存或者撤销更改时非常有用。 关于事件处理,FCKeditor定义了一些内置事件,如`OnComplete`、`OnBlur`和`OnFocus`。你可以通过`Events....

    FCKeditor提供了一个完整的JavaScript API

    FCKeditor的JavaScript API使得开发者能够实现高度定制的编辑体验,包括添加自定义工具栏按钮、处理用户交互事件以及在编辑器内容改变时执行逻辑。通过熟练掌握这个API,开发者可以创建出符合特定需求的富文本编辑...

    FCKEDITOR 的高级功能和常见问题的解决方法

    `oEditor.IsDirty()`方法可用来检测编辑器内容是否已发生改变。 在实际应用中,可能会需要监听编辑器的特定事件。FCKeditor提供了诸如OnComplete、OnBlur和OnFocus等事件。例如,`FCKeditor_OnComplete`可以在编辑...

    Linux内核超时导致虚拟机无法正常启动问题及解决方案1

    3. 保存文件并退出编辑器,然后执行`sysctl -p`命令使改动立即生效。 如果以上方案均无法解决问题,建议联系Azure技术支持中心,他们能提供更深入的故障排查和专业帮助,可能涉及更复杂的系统诊断和修复措施。在...

    office07.10access数据库窗体启用鼠标滚轮翻页教程.doc

    要添加自定义代码,你需要打开VBA编辑器。有两种方法可以做到这一点:一是按下键盘上的`Alt + F11`快捷键;二是通过功能区,在“开发”选项卡中找到并点击“查看代码”按钮。 3. **编写VBA代码**: 在VBA编辑器中...

    GEF中文教程

    - **GEF (Graphical Editing Framework)**:GEF是Eclipse平台提供的一个用于构建图形编辑器的框架,能够帮助开发者快速构建出复杂且功能丰富的图形界面编辑器。 - **环境配置**:在进行GEF开发前,需确保以下软件...

    1.基础实验_openmv_micropython_

    OpenMV是一款基于微控制器的开源机器视觉开发板,它旨在让嵌入式系统也能进行复杂的图像处理任务。而MicroPython则是Python编程语言的一个轻量级实现,特别适用于资源有限的硬件,如OpenMV这样的MCU(微控制器)。 ...

    JS操作Fckeditor的一些常用方法(获取、插入等)

    在JavaScript中操作FCKeditor,一个流行的开源富文本编辑器,是常见的需求,尤其是在Web开发中需要处理用户输入的HTML内容时。FCKeditorAPI是一个关键的全局对象,提供了多种方法来实现对编辑器的控制。以下是一些...

    gef简单入门

    GEF(Graphical Editing Framework)是Eclipse平台提供的一个用于构建图形编辑器的框架,它提供了一系列工具和API,使得开发者能够快速构建出功能丰富的图形用户界面,特别适用于模型驱动的设计场景。 #### RCP项目...

    Linux桌面系统提速七大法宝.docx

    6. **使用轻量级应用**:替换掉资源消耗大的应用,例如使用轻量级的文本编辑器(如`nano`或`vim`代替`gedit`)、浏览器(如`Midori`或`Firefox Quantum`的节能模式)和音乐播放器(如`MPD`)。 7. **优化系统缓存和...

Global site tag (gtag.js) - Google Analytics