2016-10-02 10 views
0

マーカーをクリックしたときにカスタムアクションを実行する必要があります。RelatedItemLineMarkerInfoからマウスクリックを聞くにはどうすればよいですか?

私は、チュートリアルに従って、

NavigationGutterIconBuilder<PsiElement> builder = 
     NavigationGutterIconBuilder.create(LessonScriptIcons.PUZZLE). 
       setTarget(this). 
       setTooltipText("Navigate to component"); 

RelatedItemLineMarkerInfo<PsiElement> m = builder.createLineMarkerInfo(this); 

を試してみました。しかし、私は、マーカーのナビゲーションハンドラを取得、またはそれ以外の場合は、このマーカーのイベントを監視する方法を見つけ出すことはできません。 ( "this"要素の先頭に移動するカーソルは、やや望ましくないが、重要ではない重要な副作用です。

は、その後、私はこれを試してみました:

RelatedItemLineMarkerInfo marker = new RelatedItemLineMarkerInfo(this, getTextRange(), MyIcons.VOLUME, 0, tooltipProvider, handler, GutterIconRenderer.Alignment.CENTER, new ArrayList<GotoRelatedItem>()); 

このアプローチは、私は、マーカーのマウスクリックを聞くことができます。しかし今、私は特有の問題を経験しています。マークされたコード行が編集されるたびに、これは、溝の中に重複、三重などのマーカーをもたらします。

これを行う正しい方法は何ですか?

答えて

0

私はパスを指定する必要がありました。

int pass = Pass.UPDATE_OVERRIDEN_MARKERS; 

RelatedItemLineMarkerInfo marker = new RelatedItemLineMarkerInfo(this, getTextRange(), MyIcons.VOLUME, pass, tooltipProvider, handler, GutterIconRenderer.Alignment.CENTER, new ArrayList<GotoRelatedItem>()); 

私はIntelliJのは、(下記リンク参照)を廃止予定としてマークされ、それがすぐに削除されますと述べていてもPass.UPDATE_OVERRIDEN_MARKERSを使用する必要がありました。ただし、IntelliJが推奨する定数Pass.LINE_MARKERSは、マーカーが重複しています。

https://github.com/JetBrains/intellij-community/blob/master/platform/analysis-impl/src/com/intellij/codeHighlighting/Pass.java

関連する問題