首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

Eclipse 插件開發:基於 WTP 打造自訂 JSP 編輯器(八)—— 客製化 StructuredTextEditor 自動提示

     編輯:關於JSP

前面章節著重於 StructuredTextEditor 框架與 WTP 資料模型,本節將實作開發者最常用的功能——自動提示(Content Assist)。

WTP StructuredTextEditor 提示功能實現分析

關於 Eclipse 文本編輯器框架、JFace Text Framework 與 WTP StructuredTextEditor 的基礎知識,請參考系列第二章:基於 WTP StructuredTextEditor 創建自己的 JSPEditor。

SourceViewer 提示策略配置

若要對 ISourceViewer 進行自動提示策略客製化,需在其對應的 SourceViewerConfiguration 中配置。對於 WTP JSP StructuredTextEditor,ISourceViewer 即 StructuredTextViewer,配置類為 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)強相關。要深入理解,必須搞清楚分區類型是如何計算得出的(分區類型屬於 JFace Text Framework 概念,有興趣可自行深入)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved