基于 JFace Text Framework 构建全功能代码编辑器: 第 4 部分:Content Assistant
2010-03-18 00:00:00 来源:WEB开发网这些方法牵涉到了一些概念,我们来一一的解释它们:
computeCompletionProposals:这个就是所有 Proposal 的来源了,返回的类型是 ICompletionProposal 数组,ICompletionProposal 代表的就是单个的自动完成选项。
computeContextInformation;Context Information(上下文信息)是个新概念,它在这里表示你选择了某个 Proposal 之后,会有一个提示信息弹出来,那个就叫上下文信息。要注意它和上面提到过的 Additional Info 是不同的东西。
getCompletionProposalAutoActivationCharacters:这个方法引入了一个 Auto Activation(自动激活)的概念,所谓自动激活就是在某种条件下 Proposal Popup 自动弹出。这个“某种条件”指的是一些字符,比如最常用的应该是“.”号。
getContextInformationAutoActivationCharacters:上下文信息也有自动激活的功能
getErrorMessage:如果内容提示无法找到任何 Proposal,它可以返回一个错误信息给用户
getContextInformationValidator:上下文信息是可以进行校验的,如果失败,上下文信息不会被显示
computeCompletionProposals 方法显然是必须实现的,我添加了一个 ExprContentAssistProcessor 类,下面是它的实现方式:
清单 3. ExprContentAssistProcessor 实现了 IContentAssistProcessor 接口
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {
// get document
IDocument doc = viewer.getDocument();
// get tree
Tree tree = TreeManager.getTree(doc);
if(tree == null)
return null;
// get current selected range
Point range = viewer.getSelectedRange();
// get all declared variables
List<String> variables = TreeHelper.getVariables(tree);
// create proposals
List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>();
for(String var : variables) {
proposals.add(new CompletionProposal(
var, range.x, range.y, var.length(), null, var, null, "Add your info here"));
}
return proposals.toArray(new ICompletionProposal[proposals.size()]);
}
更多精彩
赞助商链接