1
2
3
4
5
6
7
8
9
10 package nl.tudelft.simulation.dsol.gui.statistics;
11
12 import java.awt.dnd.DnDConstants;
13 import java.awt.dnd.DragGestureEvent;
14 import java.awt.dnd.DragGestureListener;
15 import java.awt.dnd.DragSource;
16
17 import javax.naming.NamingException;
18 import javax.swing.JTree;
19 import javax.swing.tree.DefaultMutableTreeNode;
20 import javax.swing.tree.TreePath;
21
22 import nl.tudelft.simulation.event.EventInterface;
23 import nl.tudelft.simulation.event.EventListenerInterface;
24 import nl.tudelft.simulation.jstats.Swingable;
25 import nl.tudelft.simulation.naming.InitialEventContext;
26 import nl.tudelft.simulation.naming.context.ContextTransferable;
27 import nl.tudelft.simulation.naming.context.ContextTreeModel;
28 import nl.tudelft.simulation.naming.context.SimpleDragSourceListener;
29
30 /***
31 * The StatisticsTree extends a Tree and drags an object <br>
32 * (c) copyright 2002-2005 <a href="http://www.simulation.tudelft.nl">Delft
33 * University of Technology </a>, the Netherlands. <br>
34 * See for project information <a
35 * href="http://www.simulation.tudelft.nl">www.simulation.tudelft.nl </a> <br>
36 * License of use: <a href="http://www.gnu.org/copyleft/lesser.html">Lesser
37 * General Public License (LGPL) </a>, no warranty.
38 *
39 * @version $Revision$ $Date$
40 * @author <a href="http://www.tbm.tudelft.nl/webstaf/peterja">Peter Jacobs </a>
41 */
42 public class StatisticsTree extends JTree implements DragGestureListener,
43 EventListenerInterface
44 {
45
46 /***
47 * constructs a new StatisticsTree
48 *
49 * @throws NamingException on failure
50 */
51 public StatisticsTree() throws NamingException
52 {
53 super(new ContextTreeModel(new InitialEventContext(),
54 new Class[]{Swingable.class}, false));
55 DragSource dragSource = DragSource.getDefaultDragSource();
56 dragSource.createDefaultDragGestureRecognizer(this,
57 DnDConstants.ACTION_COPY_OR_MOVE, this);
58 }
59
60 /***
61 * @see java.awt.dnd.DragGestureListener
62 * #dragGestureRecognized(java.awt.dnd.DragGestureEvent)
63 */
64 public void dragGestureRecognized(final DragGestureEvent dge)
65 {
66 try
67 {
68 TreePath path = getLeadSelectionPath();
69 DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
70 .getLastPathComponent();
71 dge.startDrag(DragSource.DefaultCopyDrop, new ContextTransferable(
72 node.getUserObject()), new SimpleDragSourceListener());
73 } catch (Exception nullPointerException)
74 {
75
76 return;
77 }
78 }
79
80 /***
81 * @see nl.tudelft.simulation.event.EventListenerInterface
82 * #notify(nl.tudelft.simulation.event.EventInterface)
83 */
84 public void notify(final EventInterface event)
85 {
86 this.validate();
87 this.repaint();
88 }
89 }