2016-04-25 5 views
0

ContentProviderとカスタムツリー要素を持つTreeViewを作成しました。 TreeViewにはISelectionChangedListenerが追加されています。Java SWTはTreeViewのカスタム要素の境界を取得します

MouseListenerを追加します。ツリーの要素を右クリックしてポップアップメニューを表示するかどうかを検出します。 ツリーの周りの白い部分がクリックされた場合、ポップアップメニューを表示したくありません。 メニューは、plugin.xmlのExtensionsで追加されます。

tree要素が右クリックされたかどうかを評価するにはどうすればいいですか?ポップアップメニューを表示できます(おそらくplugin.xmlのvisibleWhenで表示されます)。 また、TreeViewの白い領域で右クリックが検出された場合は、選択をクリアしたいと思います。

答えて

0

私はまだtree.getItem(...)を使用できることを認識していませんでした。だからここ は私の完全なMouseListenerです:マウスの右をクリックすると

treeOPCUA.addMouseListener(new MouseListener() 
{ 
    @Override 
    public void mouseUp(MouseEvent e) 
    { 
     if(e.button == 3 && rightMouseClicked == true) 
      rightMouseClicked = false; 
    } 

    @Override 
    public void mouseDown(MouseEvent e) 
    { 
     if(e.button == 3 && rightMouseClicked == false) 
      rightMouseClicked = true; 
     if(treeOPCUA.getItem(new Point(e.x, e.y)) == null) 
      viewer.setSelection(null); 
    } 

    @Override 
    public void mouseDoubleClick(MouseEvent e) 
    { 
     viewer.setExpandedState(e.getSource(), true); 
    } 
}); 

boolean変数「rightMouseClicked」で、私は私のISelectionChangedListenerに検出:

if(event.getSelection() instanceof IStructuredSelection && !rightMouseClicked) 

私はこの答えは誰にも役立ちます願っています。

関連する問題