代码之家  ›  专栏  ›  技术社区  ›  CIOC

在EclipseRCP(内容辅助)中向CompletionProposal添加样式

  •  4
  • CIOC  · 技术社区  · 7 年前

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

    @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 回复  |  直到 7 年前
        1
  •  5
  •   Rüdiger Herrmann    7 年前

    扩展接口 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);