2009-05-20 17 views
3

私自身のエディタを実装し、コード補完機能を追加しました。マイコンテンツ・アシスタントは、このようなソースビューアの設定に登録されています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 +SPACEを押すと、終了ポップアップが表示され、期待通りに動作します。

これは私の質問です。補完ポップアップの隣に表示されるドキュメンテーションポップアップを実装/登録するにはどうしたらいいですか?

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

答えて

3

まあ、

(Javaのエディタで例えば)あなたはこのライン以上の構成に

assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer)); 

を追加する必要があります。その後、CompletionProposalsを作成すると、コンストラクタのadditionalProposalInfoという8番目のパラメータがテキストになり、ドキュメントのポップアップに表示されます。

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

さらに詳しい情報はhereです。 )だけJDTのようなスタイル情報ボックスについては

3

();あなたがそれを行う方法を知っていれば

簡単、それは...ではありません。

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)); 
          } 
         }; 
        } 
    } 
    

  • 提案は、メソッドgetAdditionalProposalInfo()から文字列に基本的なHTMLタグを使用することができます。
  • public class MyProposal implements ICompletionProposal { 
        [...] 
        @Override 
        public String getAdditionalProposalInfo() { 
         return "<b>Hello</b> <i>World</i>!"; 
        } 
    } 
    
    関連する問題