GEF开发eclipse插件,多页编辑器实现delete功能
基于GEF开发,多页签编辑器实现
有两种方案:
- 方案一
继承FormEditor或MultiPageEditorPart,在其中嵌入自定义的继承自GraphicalEditor的子类的编辑器(作为一个page);并加入其它page。 - 方案二
-继承GraphicalEditor的子类,参照MultiPageEditorPart的实现(或者自己做)加入多页签机制。
由于感觉第二种方案工作量稍大,采用第一种方案。具体步骤如下:
- 自定义继承自
GraphicalEditorWithPalette
的类WebEditor
,具体做法略(网上有文)。 - 定义继承
FormEditor
的类WebMultiPageEditor
;
重载addPages()
方法,在其中调用public int addPage(IEditorPart editor, IEditorInput input)
方法添加WebEditor
的实例:addPage(new WebEditor()
,getEditorInput())
;
添加其他编辑器。。。 - 在改成多页编辑器之前,已经在WebEditor中重载了doSave方法。在WebMultiPageEditor中重载doSave方法,在其中传递调用((WebEditor)getEditor(0)).doSave(monitor)。
- 在做了以上工作以后运行,已经看到一个多页编辑器了。但是,发现Delete功能却不能用。花费一番功夫才找到原因。还有一重要步骤要做:在WebEditor类中重载selectionChanged方法。我们来看看WebEditor的父类(或者更上层)GraphicalEditor中此方法的实现:
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
// If not the active editor, ignore selection changed.
if (this.equals(getSite().getPage().getActiveEditor()))
updateActions(selectionActions);
}
在selectionChanged
事件发生时,此方法if语句条件为false。
因此要重载此方法,如下:
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
// 此处依赖WebUiEditor编辑器.
if (this.equals(((WebMultiPageEditor)getSite().getPage().getActiveEditor()).getActiveEditor()))
updateActions(getSelectionActions());
}
注意 需要在多页编辑器中重写父类的getActiveEditor()方法,或者自己写方法将需要delete的Editor返回即可。
GEF开发eclipse插件,多页编辑器实现delete功能的更多相关文章
- jBPM 6 开发 eclipse 插件安装
jBPM 6 开发 eclipse 插件安装 概述 与之前的jBPM 5相比,jBPM 6 新引入的kjars及mavenized的特性,使流程开发设计与之前有了很大的不同,本文主要说明jBPM 6 ...
- Go语言开发 Eclipse插件安装
UpdateSite: http://goclipse.github.io/releases/
- Notepad++前端开发常用插件介绍
Notepad++前端开发常用插件介绍 Notepad++除了自身的功能强大之外,更是有许多非常的优秀的插件,下面就总结一下前端开发过程一些比较常用的插件. Emmet Emmet的前身是Zen Co ...
- eclipse 插件编写(一)
由于项目开发进程中有一些重复性的代码进行编写,没有任何业务逻辑,粘贴复制又很麻烦且容易出错,故想起做一个eclipse插件来满足一下自己的工作需要,同时记录一下,以供以后参考与共同学习.本文主要讲解一 ...
- 软件开发工具(第13章: Eclipse插件的使用与开发)
一.插件简介 插件的定义(了解) 插件是一种遵循其所依附的软件的接口规范所编写出来的程序. 插件实际上是对原有软件的扩展,替应用程序增加一些所需要的特定 功能. 插件的构成(重点.记忆) 每个插件都由 ...
- freemarker编辑器eclipse插件
freemarker编辑器eclipse插件 支持语法高亮,语法校验,代码提示的工具 freemarker IDE(JBoss): http://download.jboss.org/jbossto ...
- Android 开发之开发插件使用:Eclipse 插件 SQLiteManger eclipse中查看数据内容--翻译
最近研究了一段时间Android开发后发现,google自带的ADT工具,缺失一些开发常用的东西,希望可以构建一个类似使用JAVA EE开发体系一样开发的工具包集合,包括前台开发,调试,到后台数据库的 ...
- eclipse安装阿里巴巴java开发规范插件
阿里巴巴java开发规范插件 作为JAVA开发人员,始终没有一个明确的规范,何为好代码,何为坏代码,造成不同人的代码风格不同,接手别人代码后改造起来相当困难.前不久,阿里巴巴发布了<阿里巴巴Ja ...
- eclipse安装python开发pydev插件
eclipse安装python开发pydev插件 下载eclipse的python开发插件pydev http://pan.baidu.com/s/1qXHt8pI 下载python.exe,并安装. ...
随机推荐
- Android项目实战(三十一):异步下载apk文件并安装(非静默安装)
前言: 实现异步下载apk文件 并 安装.(进度条对话框显示下载进度的展现方式) 涉及技术点: 1.ProgressDialog 进度条对话框 用于显示下载进度 2.AsyncTask ...
- 解析令人费解的java泛型
对于我们java中的泛型,可能很多人知道怎么使用并且使用的还不错,但是我认为想要恰到好处的使用泛型,还是需要深入的了解一下它的各种概念和内部原理.本文将尽可能的囊括java泛型中的重要的概念.主要内容 ...
- ThinkPHP5.0学习1 — 命名空间
定义命名空间:namespace sp1: 访问命名空间:\sp1\somefunction(); 非限定名称访问方式 //访问当前命名空间内容:somefunction(); 限定名称访问方 ...
- HttpWebRequest 模拟网站登录获取数据
此文档仅仅是一个BaseCode,已做后续查阅 项目使用IBM Platform Symphony分布式平台,所有业务处理都在这个分布式平台上计算,需求是获取这些计算机机群的运行状态,和每一个服务的的 ...
- 微信公众平台开发-OAuth2.0网页授权(含源码)
微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...
- 《C#语言和数据库技术基础》单词必备
<C#语言和数据库技术基础> 第一章1..NET Framework 框架2.sharp 尖锐,强烈的3.application 应用程序4.devel ...
- 免费ERP之云实施
近日,普实渠道在AIO5软件免费一周年之际,推出了重磅的动作:启动AIO5云实施,推广小微企业免费ERP落地应用. 这无疑是推动客户免费应用ERP的重大里程碑. 当前,在中国小微企业信息化方面,应用情 ...
- wemall doraemon中Android app商城系统向指定URL发送GET方法的请求代码
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...
- JavaScript前端最全API集锦
一.节点1.1 节点属性Node.nodeName //返回节点名称,只读Node.nodeType //返回节点类型的常数值,只读Node.nodeValue //返回Text或Comme ...
- java深拷贝和浅拷贝
1.概念 java里的clone分为: A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍. Java中对 ...