基于 JFace Text Framework 构建全功能代码编辑器: 第 4 部分:Content Assistant
2010-03-18 00:00:00 来源:WEB开发网这三个部分都是可以定制的,只不过有的简单有点麻烦一点。比如我们看到弹出列表的下面有一行提示“Press ‘Alt+/’ to show Template Proposals”,这在标准的弹出列表里面是没有的,JDT 定制了这一部分。
为示例代码添加内容提示支持
我打算为本文的示例代码添加以下的内容提示支持:自动提示已经声明的变量名。比如下面的语句:
清单 1. 示例语句
a = 3;
b = 4;
那么当用户在激活内容提示时,我们将显示出 a 和 b 供它选择,也就是显示之前声明过的变量。所有的声明过的变量可以通过遍历语法树来得到,我们在 TreeHelper 里面有一个 getVariables,它会完成这样的功能,如果你生成的语法树不一样,调整这个方法就可以了。注意输入的时候语法必须是正确的,不然语法解析器识别不出这是一个声明语句,也就得不到变量了。
IContentAssistProcessor
第一步,我们要实现 IContentAssistProcessor 接口,它就是所有 Proposal 的来源。不过这个接口的方法比我们想象的要多一些:
清单 2. IContentAssistProcessor 接口
public interface IContentAssistProcessor {
ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset);
IContextInformation[] computeContextInformation(ITextViewer viewer, int offset);
char[] getCompletionProposalAutoActivationCharacters();
char[] getContextInformationAutoActivationCharacters();
String getErrorMessage();
IContextInformationValidator getContextInformationValidator();
}
更多精彩
赞助商链接