快速业务通道

为SWT应用程序配备内容助理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
外,文档也可能包含 IDocument.DEFAULT_CONTENT_TYPE 类型的分区。

在新方法 getContentAssistant() 中,我们首先创建了 IContentAssistant 的默认实现的一个新实例,并给它配备了针对 XML_DEFAULT 、 XML_TAG 和 IDocument.DEFAULT_CONTENT_TYPE 内容类型的完全一样的内容助理处理器。由于不打算在 HTML 注释内提供辅助,因此我们没有为内容类型 XML_COMMENT 创建内容助理处理器。清单 1 显示了该代码。

清单 1. getContentAssistant

public IContentAssistant getContentAssistant(SourceViewer sourceViewer) {    // Create content assistant    ContentAssistant assistant = new ContentAssistant();    // Create content assistant processor    IContentAssistProcessor processor = new HtmlContentAssistProcessor();    // Set this processor for each supported content type    assistant.setContentAssistProcessor(processor, XMLPartitionScanner.XML_TAG);    assistant.setContentAssistProcessor(processor, XMLPartitionScanner.XML_DEFAULT);    assistant.setContentAssistProcessor(processor, IDocument.DEFAULT_CONTENT_TYPE);    // Return the content assistant    return assistant; }

实现内容助理处理器 类 HtmlContentAssistProcessor 还不存在。现在通过单击 QuickFix灯泡状图标来创建它。在这个新类中,我们只需完成从接口 IContentAssistProcessor 继承来的预先生成的方法。我们最感兴趣的方法是 computeCompletionProposals() 。这个方法返回一个 CompletionProposal 实例数组,我们提供的每个建议分别有一个实例。例如,我们可以提供所有 HTML 标签的集合以供选择。然而,我们希望它更高级一点。当在编辑器中选中一个文本范围时,我们希望提供一个可用于包装这段文本的样式标签集合。否则,我们就提供用于创建新 HTML 结构的标签。图 3 和图 4 显示了我们想要达到的效果。

图 3. structProposal

图 4. styleProposal

为SWT应用程序配备内容助理(3)

时间:2011-02-09 IBM Berthold Daum

因此,首先要从编辑器的 SourceViewer 实例中检索当前选中的内容(参见清单 2)。

清单 2. computeCompletionProposals

public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,    int documentOffset) {    // Retrieve current document    IDocument doc = viewer.getDocument();    // Retrieve current selection range    Point selectedRange = viewer.getSelectedRange();

然后创建一个 ArrayList 实例 ,用于收集所生成的 ICompletionProposal 实例,如清单 3 所示。

清单 3. computeCompletionProposals (续)

List propList = new ArrayList();

如果选中了文本范围,则检索选中的文本,并计算出样式标签建议,如清单 4 所示。

清单 4. computeCompletionProposals (续)

if (selectedRange.y > 0) {     try {      // Retrieve selected text      String text = doc.get(selectedRange.x, selectedRange.y);      // Compute completion proposals      computeStyleProposals(text, selectedRange, propList);     } catch (BadLocationException e) {     }    } else {

否则,设法从文档中检索一个限定符,如清单 5 所示。这样的限定符包含部分地进入 HTML 标签的所有字符,用来限制可能的建议集。

清单 5. computeCompletionProposals (续)

// Retrieve qualifier     String quali

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号