Eclipse RCP でコンテンツ アシストのドキュメント ポップアップを実装する方法

StackOverflow https://stackoverflow.com/questions/887248

質問

独自のエディタを実装し、コード補完機能を追加しました。私のコンテンツ アシスタントは、次のようにソース ビューア設定に登録されています。

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 エディター)

役に立ちましたか?

解決

さて、

私は質問を自分自身answearます; - )

あなたはこの行を追加する必要があります。

assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));

上記構成に。 のをCompletionProposalsを作成するときに、コンストラクタののadditionalProposalInfoのと呼ばれる第八(最後)のパラメータは、ドキュメントのポップアップに表示されるテキストです。

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

の詳細については、<のhref = "http://www.50001.com/language/javaside/lec/java_ibm/Equipping%20SWT%20%BE%D6%C7%C3%B8%AE%見つけることができますC4%C9%C0%CC%BC%C7%BF%A1%20content%20assistants%20%C3%DF%B0%A1%C7%のCF%のB1%E2の20%(%のBF%のB5の%のB9の%AE)。 HTMここを」のrel = "nofollowをnoreferrer">。

簡単に、あなたがそれを行う方法を知っていれば、それは...ではありません。)

他のヒント

スタイル付き情報ボックスの場合 (JDT と同様)。

Styled additionnal information


  • デフォルト情報コントロール インスタンスは受信する必要があります 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>!";
        }
    }
    
    ライセンス: CC-BY-SA帰属
    所属していません StackOverflow
    scroll top