1
2
3
4
5
6
7
8
9
10
11
12 package edu.uci.ics.jung.visualization.control;
13
14 import java.awt.event.MouseEvent;
15 import java.awt.event.MouseWheelEvent;
16 import java.awt.event.MouseWheelListener;
17
18 import edu.uci.ics.jung.visualization.Layer;
19 import edu.uci.ics.jung.visualization.VisualizationViewer;
20 import edu.uci.ics.jung.visualization.transform.LensTransformer;
21 import edu.uci.ics.jung.visualization.transform.MutableTransformer;
22
23
24
25
26
27
28
29 public class LensMagnificationGraphMousePlugin extends AbstractGraphMousePlugin
30 implements MouseWheelListener {
31
32 protected final float floor;
33 protected final float ceiling;
34 protected final float delta;
35
36
37
38
39
40 public LensMagnificationGraphMousePlugin() {
41 this(MouseEvent.CTRL_MASK);
42 }
43
44
45
46
47
48
49
50 public LensMagnificationGraphMousePlugin(float floor, float ceiling, float delta) {
51 this(MouseEvent.CTRL_MASK, floor, ceiling, delta);
52 }
53
54
55
56
57
58
59 public LensMagnificationGraphMousePlugin(int modifiers) {
60 this(modifiers, 1.0f, 4.0f, .2f);
61 }
62
63
64
65
66
67
68
69
70 public LensMagnificationGraphMousePlugin(int modifiers, float floor, float ceiling, float delta) {
71 super(modifiers);
72 this.floor = floor;
73 this.ceiling = ceiling;
74 this.delta = delta;
75 }
76
77
78
79
80 public boolean checkModifiers(MouseEvent e) {
81 return (e.getModifiers() & modifiers) != 0;
82 }
83
84 private void changeMagnification(MutableTransformer transformer, float delta) {
85 if(transformer instanceof LensTransformer) {
86 LensTransformer ht = (LensTransformer)transformer;
87 float magnification = ht.getMagnification() + delta;
88 magnification = Math.max(floor, magnification);
89 magnification = Math.min(magnification, ceiling);
90 ht.setMagnification(magnification);
91 }
92 }
93
94
95
96
97 public void mouseWheelMoved(MouseWheelEvent e) {
98 boolean accepted = checkModifiers(e);
99 float delta = this.delta;
100 if(accepted == true) {
101 VisualizationViewer<?, ?> vv = (VisualizationViewer<?, ?>)e.getSource();
102 MutableTransformer modelTransformer = vv.getRenderContext().getMultiLayerTransformer()
103 .getTransformer(Layer.LAYOUT);
104 MutableTransformer viewTransformer = vv.getRenderContext().getMultiLayerTransformer()
105 .getTransformer(Layer.VIEW);
106 int amount = e.getWheelRotation();
107 if(amount < 0) {
108 delta = -delta;
109 }
110 changeMagnification(modelTransformer, delta);
111 changeMagnification(viewTransformer, delta);
112 vv.repaint();
113 e.consume();
114 }
115 }
116 }