2012-05-07 8 views
2

私自身の問題ビューを作成しようとしています。
私は以下を見つけましたtutorialとすべて正常に動作します。独自の相互作用を伴うカスタムマーカービュー

しかし、自分自身を追加する可能性はありますか?DoubleClickListenerなどですか?
私はリスト上で実行されるユーザアクションに反応したいと思います。

アドバイスありがとうございます。ここで

答えて

0

私は解決策ではなく、最良のものが、許容可能な方法を見つけました。
ViewPart SelectionServiceを使用し、SelectionListenerを新規登録します。

私のソリューションでは、問題のビューでの選択のみが許可されていますが、おそらくイベントを区別する良い方法があります。

site.getWorkbenchWindow().getSelectionService().addSelectionListener(new ISelectionListener() { 
    @Override 
    public void selectionChanged(IWorkbenchPart part, ISelection selection) { 
     IStructuredSelection s = (IStructuredSelection) selection; 

     if (s.getFirstElement() instanceof MarkerItem) { 
      MarkerItem marker = (MarkerItem) s.getFirstElement(); 
      if (marker != null && marker.getMarker() != null) { 
       IMarker iMarker = marker.getMarker(); 

       // More Code here ... 
      } 
     } 
    } 
}); 
0

は、私がどうなるのかです:あなたは親コンポジットを持つことになります

public void createPartControl(final Composite parent)をオーバーライドすること。 parent.getChildren()を呼び出すことで、使用可能なコントロールを反復処理できます。 ExtendedMarkersView "default"コントロールはtreeViewerであるMarkersTreeViewerであるため、コントロールはツリーになります。あなたは木を持って、あなたが好きなリスナーを追加することができ、ここでの抜粋です:

@Override 
public void createPartControl(final Composite parent) { 
    super.createPartControl(parent); 

    for (final Control control : parent.getChildren()) { 
     if (!(control instanceof Tree)) { 
      continue; 
     } 

     tree = (Tree) control; 

     final Listener[] listeners = tree.getListeners(SWT.DefaultSelection); 
     if (listeners != null) { 
      for (final Listener listener : listeners) { 
       tree.removeListener(SWT.DefaultSelection, listener); 
      } 
     } 
     tree.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mouseDoubleClick(final MouseEvent e) { 
       if (e.widget instanceof Tree) { 
        final Tree tree = (Tree) e.widget; 

        // do whatever you want 
       } 
      } 

     }); 
    } 
} 
+0

ご回答ありがとうございます。私のクラスではMarkerSupportViewを拡張し、createPartControlメソッドは上書きできないため、私の場合は使用できません。 – CSchulz

+0

私はExtendedMarkersViewを拡張するMarkerSupportViewを拡張して同じことをしていますが、私が気づいている問題は、それが内部パッケージにあることです。しかし、他の誰かが私が同じことをするよりも素晴らしいアイデアを持っていれば、それが今まで私がこの要件を解決するために見つけた唯一の方法です。 –

+0

私はSelectionServiceの助けを借りて回避策を見つけました。私の答えを見てください。 :)それは最善の方法ではありません... – CSchulz

関連する問題