Как реализовать всплывающее окно документации помощника по контенту в Eclipse RCP - PullRequest
3 голосов
/ 20 мая 2009

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

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)

Ответы [ 2 ]

3 голосов
/ 04 марта 2012

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

Styled additionnal information


Экземпляр 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>!";
    }
}
3 голосов
/ 20 мая 2009

Ну,

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

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

assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));

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

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

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

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

...