快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
fier = getQualifier(doc, documentOffset);     // Compute completion proposals     computeStructureProposals(qualifier, documentOffset, propList);    }

最后,将自动完成建议列表转换为一个数组,并将这个数组作为结果返回,如清单 6 所示。

清单 6. computeCompletionProposals (续)

// Create completion proposal array     ICompletionProposal[] proposals = new ICompletionProposal[propList.size()];    // and fill with list elements    propList.toArray(proposals);    // Return the proposals    return proposals; }

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

时间:2011-02-09 IBM Berthold Daum

构造限定符

现在,让我们看看如何从当前文档检索限定符。我们需要实现方法 getQualifier() ,如清单 7 所示。

清单 7. getQualifier

private String getQualifier(IDocument doc, int documentOffset) {    // Use string buffer to collect characters    StringBuffer buf = new StringBuffer();    while (true) {     try {      // Read character backwards      char c = doc.getChar(--documentOffset);      // This was not the start of a tag      if (c == ''>'' || Character.isWhitespace(c))       return "";      // Collect character      buf.append(c);      // Start of tag. Return qualifier      if (c == ''<'')        return buf.reverse().toString();     } catch (BadLocationException e) {      // Document start reached, no tag found      return "";     }    } }

这是相当简单的。我们从当前文档偏移位置开始,向后读取文档字符。当检测到一个开括号时,我们就找到了一个标签的开头,并将收集到的字符在逆转顺序之后返回。在无法找到标签开头的其他所有情况下,我们返回一个空字符串。在这样的情况下,建议集是不受限制的。

编译自动完成建议

现在让我们编译一个建议集合。清单 8 显示了构成这些建议的相关标签集。如果您愿意,还可以添加更多的标签。

清单 8. 建议集合

// Proposal part before cursor private final static String[] STRUCTTAGS1 =    new String[] { "<P>", "<A SRC=\"", "<TABLE>", "<TR>", "<TD>" }; // Proposal part after cursor private final static String[] STRUCTTAGS2 =    new String[] { "",  "\"></A>",  "</TABLE>", "</TR>", "</TD>" }

可以看到,我们将每个标签建议划分为两个部分:一部分在预计的光标位置之前,一部分在预计的光标位置之后。清单 9 显示了编译这些建议的 computeStructureProposals() 方法。

清单 9. computeStructureProposals

private void computeStructureProposals(String qualifier, int documentOffset, List propList) {    int qlen = qualifier.length();    // Loop through all proposals    for (int i = 0; i < STRUCTTAGS1.length; i++) {     String startTag = STRUCTTAGS1[i];     // Check if proposal matches qualifier     if (startTag.startsWith(qualifier)) {       // Yes -

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号