在Eclipse RCP中为CompletionProposal添加样式(内容辅助)

时间:2018-06-26 21:55:33

标签: java eclipse-plugin eclipse-rcp content-assist

我正在为编辑创建自定义内容帮助,这就是我创建建议的方式:

@Override
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {
    String test = "Test";
    ContextInformation contextInfo = new ContextInformation("Context display test", "information display test");
    CompletionProposal proposal = new CompletionProposal(test,
            offset, 
            0, 
            test.length(),
            Activator.getImage("icons/sample.png"), 
            test,
            contextInfo,
            "Additional info");
    return new ICompletionProposal[] {proposal}; 
}

这是结果:

enter image description here

这很好,但是例如,在Java编辑器的内容帮助中,它们使用的是蓝色和灰色等颜色:

enter image description here

我知道有一个名为StyledText的类可以提供帮助,但是我找不到一个很好的示例将其与CompletionProposal结合使用。

1 个答案:

答案 0 :(得分:5)

扩展界面ICompletionProposalExtension6支持样式显示字符串。它唯一的方法getStyledDisplayString()必须返回一个StyledString用于显示。

代替创建CompletionProposal的实例,您必须实现自己的ICompletionProposal,该实例也实现上述扩展名。例如:

class StyledCompletionProposal 
    implements ICompletionProposal, ICompletionProposalExtension6 
{

  ...

  @Override
  public StyledString getStyledDisplayString() {
    return new StyledString("test").append(" [10%]", Styler.QUALIFIER_STYLER);
  }

}

此外,必须将内容助手配置为启用彩色标签。对于编辑者,这通常是在SourceViewerConfiguration::getContentAssistant中完成的:

ContentAssistant contentAssistant = new ContentAssistant();
contentAssistant.enableColoredLabels(true);