24 |
24 |
25 tooltip = "" |
25 tooltip = "" |
26 |
26 |
27 override lazy val peer: JScrollPane = new JScrollPane with SuperMixin { |
27 override lazy val peer: JScrollPane = new JScrollPane with SuperMixin { |
28 override def getToolTipText(event: java.awt.event.MouseEvent): String = |
28 override def getToolTipText(event: java.awt.event.MouseEvent): String = |
29 find_visible_node(Transform.pane_to_graph_coordinates(event.getPoint)) match { |
29 visualizer.find_node(Transform.pane_to_graph_coordinates(event.getPoint)) match { |
30 case Some(node) => |
30 case Some(node) => |
31 visualizer.model.full_graph.get_node(node) match { |
31 visualizer.model.full_graph.get_node(node) match { |
32 case Nil => null |
32 case Nil => null |
33 case content => visualizer.make_tooltip(panel.peer, event.getX, event.getY, content) |
33 case content => visualizer.make_tooltip(panel.peer, event.getX, event.getY, content) |
34 } |
34 } |
42 horizontalScrollBarPolicy = ScrollPane.BarPolicy.Always |
42 horizontalScrollBarPolicy = ScrollPane.BarPolicy.Always |
43 verticalScrollBarPolicy = ScrollPane.BarPolicy.Always |
43 verticalScrollBarPolicy = ScrollPane.BarPolicy.Always |
44 |
44 |
45 peer.getVerticalScrollBar.setUnitIncrement(10) |
45 peer.getVerticalScrollBar.setUnitIncrement(10) |
46 |
46 |
47 def find_visible_node(at: Point2D): Option[Graph_Display.Node] = |
|
48 visualizer.visible_graph.keys_iterator.find(node => |
|
49 Shapes.Node.shape(visualizer, node).contains(at)) |
|
50 |
|
51 def refresh() |
47 def refresh() |
52 { |
48 { |
53 if (paint_panel != null) { |
49 if (paint_panel != null) { |
54 paint_panel.set_preferred_size() |
50 paint_panel.set_preferred_size() |
55 paint_panel.repaint() |
51 paint_panel.repaint() |
173 val (_, p, d) = draginfo |
169 val (_, p, d) = draginfo |
174 draginfo = (to, p, d) |
170 draginfo = (to, p, d) |
175 case e @ MouseClicked(_, p, m, n, _) => click(p, m, n, e) |
171 case e @ MouseClicked(_, p, m, n, _) => click(p, m, n, e) |
176 } |
172 } |
177 |
173 |
178 def dummy(at: Point2D): Option[Layout.Dummy] = |
|
179 visualizer.layout.find_dummy(d => Shapes.Dummy.shape(visualizer, d).contains(at)) |
|
180 |
|
181 def pressed(at: Point) |
174 def pressed(at: Point) |
182 { |
175 { |
183 val c = Transform.pane_to_graph_coordinates(at) |
176 val c = Transform.pane_to_graph_coordinates(at) |
184 val l = |
177 val l = |
185 find_visible_node(c) match { |
178 visualizer.find_node(c) match { |
186 case Some(node) => |
179 case Some(node) => |
187 if (visualizer.Selection.contains(node)) visualizer.Selection.get() |
180 if (visualizer.Selection.contains(node)) visualizer.Selection.get() |
188 else List(node) |
181 else List(node) |
189 case None => Nil |
182 case None => Nil |
190 } |
183 } |
191 val d = |
184 val d = |
192 l match { |
185 l match { |
193 case Nil => |
186 case Nil => visualizer.find_dummy(c).toList |
194 dummy(c) match { |
|
195 case Some(d) => List(d) |
|
196 case None => Nil |
|
197 } |
|
198 case _ => Nil |
187 case _ => Nil |
199 } |
188 } |
200 draginfo = (at, l, d) |
189 draginfo = (at, l, d) |
201 } |
190 } |
202 |
191 |
204 { |
193 { |
205 val c = Transform.pane_to_graph_coordinates(at) |
194 val c = Transform.pane_to_graph_coordinates(at) |
206 |
195 |
207 def left_click() |
196 def left_click() |
208 { |
197 { |
209 (find_visible_node(c), m) match { |
198 (visualizer.find_node(c), m) match { |
210 case (Some(node), Key.Modifier.Control) => visualizer.Selection.add(node) |
199 case (Some(node), Key.Modifier.Control) => visualizer.Selection.add(node) |
211 case (None, Key.Modifier.Control) => |
200 case (None, Key.Modifier.Control) => |
212 |
201 |
213 case (Some(node), Key.Modifier.Shift) => visualizer.Selection.add(node) |
202 case (Some(node), Key.Modifier.Shift) => visualizer.Selection.add(node) |
214 case (None, Key.Modifier.Shift) => |
203 case (None, Key.Modifier.Shift) => |
221 } |
210 } |
222 } |
211 } |
223 |
212 |
224 def right_click() |
213 def right_click() |
225 { |
214 { |
226 val menu = Popups(panel, find_visible_node(c), visualizer.Selection.get()) |
215 val menu = Popups(panel, visualizer.find_node(c), visualizer.Selection.get()) |
227 menu.show(panel.peer, at.x, at.y) |
216 menu.show(panel.peer, at.x, at.y) |
228 } |
217 } |
229 |
218 |
230 if (clicks < 2) { |
219 if (clicks < 2) { |
231 if (SwingUtilities.isRightMouseButton(e.peer)) right_click() |
220 if (SwingUtilities.isRightMouseButton(e.peer)) right_click() |