在http://blog.sina.com.cn/s/blog_40585f8d010009lw.html看到一篇文章,但是程序不完整,特此做一些修改:
大家在使用Eclipse编写Java代码的时候,一定被Java代码编辑器的强大功能所吸引:出色的错误提示,准确的内容帮助,文本的折叠等等。今天我以Eclipse插件中的XML Editor例子作为模板,为XML文本编辑器加入内容帮助(Content Assis)。
1.内容帮助简介
在目前流行的IDE中,内容提示帮助是必不可少的功能,可以说,如果没有了内容帮助,那IDE就不能称为IDE。有了内容帮助提示,能大大提高代码编写速度。
请看下图:当我们在Java编辑器中输入‘.’的时候,就会弹出一个菜单,里面列出了类所具有的方法以及属性,并且在我们继续输入字符的时候,弹出的内容会随着我们的输入进行过滤。
下面我们以Eclipse的XML Editor Example为例,介绍一下内容帮助如何实现的。
2.创建XML Editor
我们首先需要建立一个Plugin工程,然后在向导页中选择我们要生成的XML Editor例子:
点Finish完成,这时候我们的工程便生成了,并且向导还为我们生成了XML Editor所需要的一些类,以及为我们的Plugin.xml实现了org.eclipse.ui.editors扩展点:
3.简单的内容帮助
在我们生成的类中,有一个名为XMLConfiguration的类,该类对XML Editor进行了一些设置,包括如何去为不同的文本区域显示不同的颜色等,TextEditor所维护的SourceViewer就是通过它来进行设置的,但这不是我们所要讨论的范围,这里简单地介绍一下即可。
接下来我们需要复写XMLConfiguration的一个方法:getContentAssistant。这个方法便是告诉我们的编辑器,我们所具有的内容帮助是什么,在创建XML Editor的时候,默认是不为我们生成这方面代码的,所以我们需要自己复写:
//生成一个ContentAssistant
ContentAssistantassistant=newContentAssistant();
//设置帮组内容弹出响应时间
assistant.setAutoActivationDelay(200);
assistant.enableAutoActivation(true);
returnassistant;
}
ContentAssistant并不是内容帮助的提供者,它只是维护我们的内容帮助,帮我们弹出菜单以及帮助内容信息等作用。
真正告诉ContentAssistant要显示那些帮助内容的,是IContentAssistProcessor接口类。让我们创建一个名为StrutsContentAssisProcessor的类,并让它实现IContentAssistProcessor接口:
publicICompletionProposal[]computeCompletionProposals(ITextViewerviewer,
intoffset){
returnnull;
}
publicIContextInformation[]computeContextInformation(ITextViewerviewer,
intoffset){
returnnull;
}
publicchar[]getCompletionProposalAutoActivationCharacters(){
returnnull;
}
publicchar[]getContextInformationAutoActivationCharacters(){
returnnull;
}
publicStringgetErrorMessage(){
returnnull;
}
publicIContextInformationValidatorgetContextInformationValidator(){
returnnull;
}
}
大家注意下computeCompletionProposals方法,这个方法便是返回我们的具体内容帮助。所以我们需要为我们的编辑器创建所需要的内容帮助:CompletionProposal
先看一下这个类的构造函数各个参数的含义:
*@paramreplacementOffset:替代内容输入的位置
*@paramreplacementLength:替代文本覆盖原来文本的长度
*@paramcursorPosition:完成内容帮助的文本替代后,光标所在位置
*@paramimage:帮助内容显示的图标
*@paramdisplayString:帮助内容的显示字符串
*@paramcontextInformation:帮助内容的信息描述
*@paramadditionalProposalInfo:附加信息
在这几个参数中image 、contextInformation、additionalProposalInfo我们可以设置为空。现在让我们在computeCompletionProposals生成我们的帮助内容:
intoffset){
ICompletionProposal[]proposals=newICompletionProposal[2];
proposals[0]=newCompletionProposal("替换文本1",offset,0,newString("替换文本1").length(),null,"帮组内容1",null,null);
proposals[1]=newCompletionProposal("替换文本2",offset,0,newString("替换文本2").length(),null,"帮组内容2",null,null);
returnproposals;
}
computeCompletionProposals输入的参数中 offset是指当内容帮助弹出的时候,文本编辑器光标所在位置。
大家都知道,帮助内容弹出的时候是需要一定条件的,也就是当我们输入了激活内容帮助的字符的时候,它便会弹出来。IContentAssistProcessor的getCompletionProposalAutoActivationCharacters方法便是让我们返回激活帮助内容字符的,假设当我们输入了‘<’时,弹出帮助内容:
returnnewString("<").toCharArray();
}
好了,我们的第一步已经完成了,接下来就是在ContentAssis对象中设置我们所要返回的内容帮助。
返回到XMLConfiguration的getContentAssistant方法:
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
// 生成一个ContentAssistant
ContentAssistant assistant = new ContentAssistant();
// 设置帮组内容弹出响应时间
assistant.setAutoActivationDelay( 200 );
assistant.enableAutoActivation( true );
assistant.setContentAssistProcessor(new StrutsContentAssisProcessor(), IDocument.DEFAULT_CONTENT_TYPE);
return assistant;
}
相关推荐
Eclipse 插件开发扩展点定义文档,提供给有需要的开发人员。 如下摘录: 视图 标识: org.eclipse.ui.views 描述: 此扩展点用来为工作台定义更多视图。视图是工作台页面内的可视组件。通常用来浏览信息的层次...
一些内容完全迁移到 Eclipse3.6 版本上来。基于开源以及分享的精神,特地将教程分享到网络上, 希望所有需要的朋友因此而受益,也希望大家能有版本意识,转载时注明来自 salever@126.com。 之前有一套基于 Eclipse...
eclipse 国际化的插件 properties 分享一个不错的编写properties文件的Eclipse插件(plugin),有了它我们在编辑一些简体中文、繁体中文等 Unicode文本时,就不必再使用native2ascii编码了。您可以通过Eclipse中的...
【CSDN首发】,百度上的不是完整版本,非本人发布 本教程素材来源于网络,经过本人的整理、添加以及部分的重写,将原有的Eclipse3.3版本的一些内容完全迁移到Eclipse3.6...6.5 实例:文本编辑器实现 .................
这个开源项目将Jonas(来自ObjectWeb(www.objectweb.org/jonas)的EJB容器)集成到开发工具Eclipse(www.eclipse.org)中。
简介 我已经在 Windows 中使用 eclipse 编辑器为 java 开发活动开发了一个小的 eclipse 实用程序插件。 它具有以下特点。 复制文件路径(Windows 样式、多选) 复制文件路径(Unix 样式,多选) 将文件和文件夹...
在此想和大家分享一个不错的编写properties文件的Eclipse插件(plugin),有了它我们在编辑一些简体中文、繁体中文等Unicode文本时,就不必再使用native2ascii编码了。您可以通过Eclipse中的软件升级(Software ...
第3章 Eclipse开发环境概述 22 3.1 Eclipse界面一览 22 3.2 Eclipse项目的文件结构 23 3.2.1 设置编译后.class文件的保存目录 23 3.2.2 导入项目使用的包 25 3.2.3 设置编译方式 26 3.2.4 运行程序 27 ...
JBC是一个eclipse插件,使开发人员可以查看和编辑eclipse中包含Java字节代码(* .class)的文件。 这样做的方式是让专门的编辑器打开.class文件,并将二进制代码显示为文本DSL,而关键字则将字节序列插入。 更改...
� 源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发 出 更具差异性的应用。 � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要...
这个项目是一个增强的文本编辑器,因为将能够打开 Eclipse 和 IntelliJ 项目/模块并编辑它们并相应地编译它们。 它还能够为那些使用 Maven 的人生成 pom.xml 文件,并运行一个内部 CraftBukkit 服务器来自动测试 ...
14.2开发工具Eclipse简介438 14.2.1Eclipse的安装与配置438 14.2.2用Eclipse创建一个项目440 14.3AWT组件简介444 14.3.1AWT组件的层次结构445 14.3.2AWT中的基本组件和子包446 14.3.3AWT组件通用属性与方法448...
在网狐荣耀版开发调试过程中,复制文本时,提示“复制非法内容”,开始吓一跳,没有什么非法内容啊?也没有禁词,也没有国家不允许的内容。最后通过程序查看,原来是平台的问题。换安卓、苹果系统就好了。 四、最新...
注意:本项目使用android studio开发,eclipse可能无法直接使用。 本项目是PHPHub 社区非官方 Android 客户端, App UI 风格遵循了 Google Material Design 设计风格, 项目架构使用了 MVP 模式, 数据处理使用了 ...
附录3 图解利用Eclipse3+Lomboz3+Tomcat开发JSP 335 本书较为全面地介绍了JSP技术,由浅入深、循序渐进地介绍了JSP的运行系统,基本概念,语法规范及其相关内容,从基本的JSP概述、与其他技术的对比,到JSP...
l JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV l Redis(缓存服务器) l Solr(搜索) l httpclient(调用系统服务) l Mysql l Nginx(web服务器) 2.4. 开发...
2.6 集成开发环境Eclipse介绍 2.6.1 Eclipse下载与安装 2.6.2 Eclipse的透视图 2.6.3 Eclipse的视图(View) 2.6.4 Eclipse的编辑器 2.6.5 Eclipse的工具栏和菜单栏 2.6.6 使用Eclipse编写HelloWorld程序 2.7 ...
1.4.4 在eclipse中实现智能提示 / 32 1.5 如何获得帮助 / 32 1.6 本章小结 / 33 .第2章 从“hello world”开始 / 34 2.1 获取ext js 4 / 34 2.2 配置使用ext js库 / 35 2.3 编写“hello world”程序 / 37 2.4...