1
2
3
4
5
6
7
8
9
10
11
12 package edu.uci.ics.jung.visualization.control;
13
14 import java.awt.Cursor;
15 import java.awt.event.MouseEvent;
16 import java.awt.event.MouseListener;
17 import java.awt.event.MouseMotionListener;
18 import java.awt.geom.Point2D;
19
20 import edu.uci.ics.jung.visualization.Layer;
21 import edu.uci.ics.jung.visualization.VisualizationViewer;
22 import edu.uci.ics.jung.visualization.transform.MutableTransformer;
23
24
25
26
27
28
29
30
31
32
33
34 public class ViewTranslatingGraphMousePlugin extends AbstractGraphMousePlugin
35 implements MouseListener, MouseMotionListener {
36
37
38
39 public ViewTranslatingGraphMousePlugin() {
40 this(MouseEvent.BUTTON1_MASK);
41 }
42
43
44
45
46
47 public ViewTranslatingGraphMousePlugin(int modifiers) {
48 super(modifiers);
49 this.cursor = Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR);
50 }
51
52
53
54
55
56
57
58 public void mousePressed(MouseEvent e) {
59 VisualizationViewer<?,?> vv = (VisualizationViewer<?,?>)e.getSource();
60 boolean accepted = checkModifiers(e);
61 down = e.getPoint();
62 if(accepted) {
63 vv.setCursor(cursor);
64 }
65 }
66
67
68
69
70
71 public void mouseReleased(MouseEvent e) {
72 VisualizationViewer<?,?> vv = (VisualizationViewer<?,?>)e.getSource();
73 down = null;
74 vv.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
75 }
76
77
78
79
80
81
82 public void mouseDragged(MouseEvent e) {
83 VisualizationViewer<?,?> vv = (VisualizationViewer<?,?>)e.getSource();
84 boolean accepted = checkModifiers(e);
85 if(accepted) {
86 MutableTransformer viewTransformer = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW);
87 vv.setCursor(cursor);
88 try {
89 Point2D q = viewTransformer.inverseTransform(down);
90 Point2D p = viewTransformer.inverseTransform(e.getPoint());
91 float dx = (float) (p.getX()-q.getX());
92 float dy = (float) (p.getY()-q.getY());
93
94 viewTransformer.translate(dx, dy);
95 down.x = e.getX();
96 down.y = e.getY();
97 } catch(RuntimeException ex) {
98 System.err.println("down = "+down+", e = "+e);
99 throw ex;
100 }
101
102 e.consume();
103 }
104 }
105
106 public void mouseClicked(MouseEvent e) {
107 }
108
109 public void mouseEntered(MouseEvent e) {
110 }
111
112 public void mouseExited(MouseEvent e) {
113 }
114
115 public void mouseMoved(MouseEvent e) {
116 }
117 }