3

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

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目的のパーティション内で+を押すSPACEと、完了ポップアップが表示され、期待どおりに機能します。

そして、ここに私の質問があります..完了ポップアップの横に表示されるドキュメントポップアップを実装/登録するにはどうすればよいですか? (たとえば、Java エディターで)

4

2 に答える 2

3

スタイル付き情報ボックス用 (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));
                }
            };
        }
    }
    

  • 提案は、メソッドgetAdditionalProposalInfo()からの文字列で基本的な HTML タグを使用できます。
  • public class MyProposal implements ICompletionProposal {
        [...]
        @Override
        public String getAdditionalProposalInfo() {
            return "<b>Hello</b> <i>World</i>!";
        }
    }
    
    于 2012-03-04T05:33:11.157 に答える
    3

    良い、

    私は自分で質問に答えます;-)

    この行を追加する必要があります

    assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
    

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

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

    の詳細については、こちらを参照してください。

    簡単ですよね.. やり方さえわかれば ;)

    于 2009-05-20T14:08:21.213 に答える