Как реализовать всплывающее окно с документацией Content Assist в Eclipse RCP

Я реализовал свой собственный редактор и добавил в него функцию завершения кода. Мой помощник по контенту зарегистрирован в конфигурации средства просмотра исходного кода следующим образом:

public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
    if (assistant == null) {
        assistant = new ContentAssistant();
        assistant.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
        assistant.setContentAssistProcessor(getMyAssistProcessor(),
                MyPartitionScanner.DESIRED_PARTITION_FOR_MY_ASSISTANCE);
        assistant.enableAutoActivation(true);
        assistant.setAutoActivationDelay(500);
        assistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
        assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
    }
    return assistant;
}

Когда я нажимаю Ctrl + ПРОБЕЛ внутри нужного раздела, всплывающее окно завершения появляется и работает должным образом.

И вот мой вопрос. Как реализовать/зарегистрировать всплывающее окно документации, которое появляется рядом с всплывающим окном завершения? (Например, в редакторе Java)


person Martin Lazar    schedule 20.05.2009    source источник


Ответы (2)


Что ж,

Сам отвечу на вопрос ;-)

Вы должны добавить эту строку

assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));

к конфигурации выше. Затем при создании CompletionProposals восьмым (последним) параметром конструктора с именем additionalProposalInfo является текст, который будет отображаться во всплывающем окне документации.

new CompletionProposal(replacementString,
                          replacementOffset,
                          replacementLength,
                          cursorPosition,
                          image,
                          displayString,
                          contextInformation,
                          additionalProposalInfo);

Дополнительную информацию можно найти по адресу здесь.

Легко, не так ли .. если вы знаете, как это сделать ;)

person Martin Lazar    schedule 20.05.2009

Для стилизованного информационного окна (так же, как в JDT).

Стилизованная дополнительная информация


  • DefaultInformationControl должен получить HTMLTextPresenter.
  • import org.eclipse.jface.internal.text.html.HTMLTextPresenter;
    
    public class MyConfiguration extends SourceViewerConfiguration {
    
    
        [...]
        public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
            if (assistant == null) {
                [...]
                assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
            }
            return assistant;
        }
    
        @Override
        public IInformationControlCreator getInformationControlCreator(ISourceViewer sourceViewer) {
            return new IInformationControlCreator() {
                public IInformationControl createInformationControl(Shell parent) {
                    return new DefaultInformationControl(parent,new HTMLTextPresenter(false));
                }
            };
        }
    }
    

  • Затем предложения могут использовать базовые теги HTML в строке из метода getAdditionalProposalInfo().
  • public class MyProposal implements ICompletionProposal {
        [...]
        @Override
        public String getAdditionalProposalInfo() {
            return "<b>Hello</b> <i>World</i>!";
        }
    }
    
    person h3xStream    schedule 04.03.2012