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

CIO*_*IOC 4 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}; 
}
Run Code Online (Sandbox Code Playgroud)

这是结果:

在此输入图像描述

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

在此输入图像描述

我知道有一个叫做StyledText可以帮助的课,但我找不到一个很好的例子来结合使用它CompletionProposal.

Rüd*_*ann 5

扩展接口ICompletionProposalExtension6支持样式化显示字符串.它唯一的方法getStyledDisplayString()必须返回StyledString用于显示的方法.

而不是创建一个实例,CompletionProposal你必须实现自己的实例ICompletionProposal,也实现上述扩展.例如:

class StyledCompletionProposal 
    implements ICompletionProposal, ICompletionProposalExtension6 
{

  ...

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

}
Run Code Online (Sandbox Code Playgroud)

此外,必须将内容助手配置为启用彩色标签.对于编辑,通常在SourceViewerConfiguration::getContentAssistant以下情况下完成:

ContentAssistant contentAssistant = new ContentAssistant();
contentAssistant.enableColoredLabels(true);
Run Code Online (Sandbox Code Playgroud)