Добавить стиль в CompletionProposal в Eclipse RCP (Помощник по контенту) - PullRequest
0 голосов
/ 27 июня 2018

Я создаю специальный помощник по контенту для редактора, вот как я создаю предложения:

@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 голосов
/ 27 июня 2018

Интерфейс расширения 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);
...