【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(八)

定制StructuredTextEditor自动提示

前面介绍的内容集中在两点:StructuredTextEditor框架和WTP数据模型,在本节中就可以定制一个我 们最常用的WTP StructuredTextEditor的功能,那就是自动提示。

【WTP StructuredTextEditor提示功能实现分析】

有关Eclipse文本编辑器框架、JFace Text Framework和WTP StructuredTextEditor的简要知识,参见:

【Eclipse插件开发】基于WTP开发自定义 的JSP编辑器(二):基于WTP StructuredTextEditor创建自己的JSPEditor

【SourceViewer提示策略 配置】

在章节二中,我们说过如果要对一个ISourceViewer进行自动提示策略的定制,在 ISourceViewer对应的SourceViewerConfiguration中配置就可以了。对于WTP JSP StructuredTextEditor 而言,这里的ISourceViewer就是StructuredTextViewer,这里的SourceViewerConfiguration就是 StructuredTextViewerConfigurationJSP。那我们来看一下WTP StructuredTextViewerConfigurationJSP 中对自动提示策略的配置:

(以下代码摘取子StructuredTextViewerConfigurationJSP类中):

protected IContentAssistProcessor[] getContentAssistProcessors(ISourceViewer sourceViewer, String partitionType) {
IContentAssistProcessor[] processors = null;
//其他代码省略......
else if ((partitionType == IXMLPartitions.XML_DEFAULT) || (partitionType == IHTMLPartitions.HTML_DEFAULT) || (partitionType == IHTMLPartitions.HTML_COMMENT) || (partitionType == IJSPPartitions.JSP_DEFAULT) || (partitionType == IJSPPartitions.JSP_DIRECTIVE) || (partitionType == IJSPPartitions.JSP_CONTENT_DELIMITER) || (partitionType == IJSPPartitions.JSP_CONTENT_JAVASCRIPT) || (partitionType == IJSPPartitions.JSP_COMMENT)) {
// jsp
processors = new IContentAssistProcessor[]{new JSPContentAssistProcessor()};
}
else if ((partitionType == IXMLPartitions.XML_CDATA) || (partitionType == IJSPPartitions.JSP_CONTENT_JAVA)) {
// jsp java
processors = new IContentAssistProcessor[]{new JSPJavaContentAssistProcessor()};
}
//其他代码省略......
return processors;
}

以上代码,我们可以看的出来,IContentAssistProcessor是和具体分区类型(partition type)相关 联的。想搞懂这个问题,就需要看一下这个具体分区类型(partition type)是怎么计算出来的。

PS:分区类型是JFace Text Framework中的概念,相关的知识大家有兴趣可以进一步去了解一下JFace Text Framework。

时间: 2024-08-31 20:36:55

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(八)的相关文章

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(十)

WTP TLD内容模型介绍 前面的系列文章中,我们已经分析了WTP的语法Document(IStructuredDocument)和语义Documnt (ICSSDocument或者IDOMDocument)以及和二者密切相关的IStructuredModel,并在这基础之上对WTP默 认提供的StructuredTextEditor进行了部分功能定制. 开发]基于WTP开发自定义的JSP编辑器(十)-eclipse jsp编辑器"> 问题出现了,我们想要的信息全部包含在IStructur

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(九)

定制StructuredTextEditor源码即时校验 上一节我们定制了WTP StructuredTextEditor的自动提示功能特征,本节将定制另外一个功能特征即 时源码校验.所谓源码即时校验,就是在用户编辑过程中(并未保存),针对用户编辑的内容改变做即时 校验,并给用户即时反馈相关的错误或者其他类型的提示信息.在本节中,我们将以标签的即时校验为例 ,演示如何定制WTP StructuredTextEditor的源码即时校验. 在定制之前,我们先来看一下WTP StructuredTex

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(七)

WTP数据模型总结和模型管理 前面已经详细介绍过WTP语法Document(IStructuredDocument).WTP语义Document(IDOMDocument 或ICSSDocument)和WTP Model(IStructuredModel),在本节中将从总体上再看一下对我们后续基于 WTP进行代码定制很重要的点,同时将补充最核心的一个点:WTP中的模型管理机制. PS:如果前面的几节是探微的过程,那边本节将完成知著的过程,"探微知著"^_^ [语法Document.语义

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(六)

IStructuredModel(DOM Document)分析视图 前面的几节中,我们都已经完整的介绍过了WTP最核心的几个数据模型:语法Document (IStructuredDocument).语义Document(IDOMDocument.ICSSDocument)和WTP模型 (IStructuredModel).IStructuredModel在某种程度上可以看作是语义Document和语法Document的门 面,三者关系再罗唆一下: 开发]基于WTP开发自定义的JSP编辑器(六

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(五)

WTP Structured Model 有关另外一个WTP重要的数据模型IStructuredDocument已经在前面介绍过了,今天我们看一下另外一 个核心的数据模型IStructuredModel.在继续下面的内容之前,请确保当前工作区中已经导入(无论是 源码方式导入还是二进制方式导入)了如下工程: org.eclipse.jst.jsp.core org.eclipse.jst.jsp.ui org.eclipse.wst.css.core org.eclipse.wst.css.ui

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(三)

WTP Structured Document 上一篇中我们已经基于WTP的StructuredTextEditor建立了自己的JSPEditor,这篇将介绍对于我们 Editor最重要的数据模型之一:IStructuredDocument (org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument),下一篇将介绍另 外一个IStructuredModel.看一下IStructuredDocument的类型体系如

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(一)

基于Eclipse的J2EE开发者,很多人都需要和wtp打交道.本系列文章中将从Eclipse插件开发者视角来 看WTP,以开发一个自定义的JSP编辑器为示例来阐述一下基于wtp进行二次定制开发(称之为基于WTP的插 件开发)的过程中需要关键知识.其实,现在我们所看到的一些开发工具底层很多都是基于WTP开发的, 只是他可能给包装了一下wtp的默认的编辑器,提供了一些额外的功能. 大致的计划如下: 1.整体介绍wtp(wst + jst) (以插件开发角度) 2.介绍wtp的structured

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(二)

基于WTP StructuredTextEditor创建自己的JSPEditor 在本小节中,无论如何先把自己的编辑器给搞出来,为我们后面对wtp提供的JSP编辑器进行定制. [开发环境准备] 1.Eclipse 3.2 + WTP 1.5 2.对应的GEF(3.2.1).EMF(2.2.1)系列插件 3.将必要插件导入到工作区,导入插件列表如下: 因为我们暂时只是阅读并不打算修改wtp源码,所以就先以二进制方式导入,以上导入的6个插件以后 要和我们常打交道-_-. 说明: Eclipse 3.

【Eclipse插件开发】基于WTP开发自定义的JSP编辑器(四)

Strucutured Document分析视图 在上一篇中,我们详细阐述了WTP中最重要的数据模型之一IStructuredDocument(我们就称之为WTP Document吧,和另外一个核心数据模型WTP Model----IStructuredModel对应),本节中我们将自己开发 一个工具来分析IStrucutredDocument. PS:千万别着急,后面的文章会对WTP StructuredTextEditor进行功能特征定制的,在真正定制之前 一定要搞清楚WTP Documen