1   /****************************************************************************
2    * This demo file is part of yFiles for Java 2.14.
3    * Copyright (c) 2000-2017 by yWorks GmbH, Vor dem Kreuzberg 28,
4    * 72070 Tuebingen, Germany. All rights reserved.
5    * 
6    * yFiles demo files exhibit yFiles for Java functionalities. Any redistribution
7    * of demo files in source code or binary form, with or without
8    * modification, is not permitted.
9    * 
10   * Owners of a valid software license for a yFiles for Java version that this
11   * demo is shipped with are allowed to use the demo source code as basis
12   * for their own yFiles for Java powered applications. Use of such programs is
13   * governed by the rights and conditions as set out in the yFiles for Java
14   * license agreement.
15   * 
16   * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED
17   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
19   * NO EVENT SHALL yWorks BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21   * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26   *
27   ***************************************************************************/
28  package demo.view.hierarchy;
29  
30  import javax.swing.tree.*;
31  import javax.swing.*;
32  import java.awt.event.*;
33  import y.view.*;
34  import y.base.*;
35  
36  /**
37   * A MouseListener that listens for double click events on a JTree.
38   * The node item that was clicked will be focused in an 
39   * associated Graph2DView.
40   */ 
41  public class HierarchyJTreeDoubleClickListener extends MouseAdapter
42  {
43    Graph2DView view;
44    
45    public HierarchyJTreeDoubleClickListener(Graph2DView view)
46    {
47      this.view = view;
48    }
49    
50    public void mouseClicked(MouseEvent e)
51    {
52      JTree tree =(JTree)e.getSource();
53      
54      if(e.getClickCount() == 2)
55      {
56        //D.bug("right mouse pressed");
57        
58        int y = e.getY();
59        int x = e.getX();
60        TreePath path = tree.getPathForLocation(x,y);
61        if(path != null)
62        {
63          Object last =  path.getLastPathComponent();
64          Graph2D focusedGraph = null;
65          Node v = null;
66          
67          if(last instanceof Node)
68          {
69            v = (Node)last;
70            focusedGraph = (Graph2D)v.getGraph();
71          }
72          else if(last instanceof Graph2D) //root
73          {
74            focusedGraph = (Graph2D)last;
75          }
76          
77          if(focusedGraph != null)
78          {
79            view.setGraph2D(focusedGraph);
80            if(v != null)
81            {
82              view.setCenter(focusedGraph.getCenterX(v),focusedGraph.getCenterY(v));
83            }
84            view.updateView();
85          }
86        }
87      }
88    }
89  }
90