11 package com.google.scrollview.events;
13 import com.google.scrollview.ScrollView;
14 import com.google.scrollview.ui.SVWindow;
15 import com.google.scrollview.events.SVEvent;
16 import com.google.scrollview.events.SVEventType;
18 import java.awt.Color;
19 import java.awt.event.ActionEvent;
20 import java.awt.event.ActionListener;
21 import java.awt.event.KeyEvent;
22 import java.awt.event.KeyListener;
23 import java.awt.event.WindowEvent;
24 import java.awt.event.WindowListener;
26 import javax.swing.Timer;
28 import edu.umd.cs.piccolo.PCamera;
29 import edu.umd.cs.piccolo.PNode;
30 import edu.umd.cs.piccolo.event.PBasicInputEventHandler;
31 import edu.umd.cs.piccolo.event.PInputEvent;
32 import edu.umd.cs.piccolo.nodes.PPath;
43 ActionListener, KeyListener, WindowListener {
52 private int lastX = 0;
53 private int lastY = 0;
59 private int lastXMove = 0;
60 private int lastYMove = 0;
63 private int startX = 0;
64 private int startY = 0;
65 private float rubberBandTransparency = 0.5f;
66 private PNode selection = null;
72 private String keyStr =
"!";
76 timer =
new Timer(1000,
this);
84 private void processEvent(
SVEvent e) {
92 private void showPopup(PInputEvent e) {
93 double x = e.getCanvasPosition().getX();
94 double y = e.getCanvasPosition().getY();
105 if (e.isPopupTrigger()) {
109 .getPosition().getX(), (int) e.getPosition().getY(), 0, 0, null));
121 if (e.isPopupTrigger()) {
124 lastX = (int) e.getPosition().getX();
125 lastY = (int) e.getPosition().getY();
134 .getPosition().getX(), (int) e.getPosition().getY(), (int) e
135 .getPosition().getX()
136 - lastX, (int) e.getPosition().getY() - lastY, null));
139 if (selection == null) {
140 startX = (int) e.getPosition().getX();
141 startY = (int) e.getPosition().getY();
142 selection = PPath.createRectangle(startX, startY, 1, 1);
143 selection.setTransparency(rubberBandTransparency);
144 svWindow.
canvas.getLayer().addChild(selection);
146 int right = Math.max(startX, (
int) e.getPosition().getX());
147 int left = Math.min(startX, (
int) e.getPosition().getX());
148 int bottom = Math.max(startY, (
int) e.getPosition().getY());
149 int top = Math.min(startY, (
int) e.getPosition().getY());
150 svWindow.
canvas.getLayer().removeChild(selection);
151 selection = PPath.createRectangle(left, top, right - left, bottom - top);
152 selection.setPaint(Color.YELLOW);
153 selection.setTransparency(rubberBandTransparency);
154 svWindow.
canvas.getLayer().addChild(selection);
166 if (e.isPopupTrigger()) {
170 .getPosition().getX(), (int) e.getPosition().getY(), (int) e
171 .getPosition().getX()
172 - lastX, (int) e.getPosition().getY() - lastY, null));
174 if (selection != null) {
175 svWindow.
canvas.getLayer().removeChild(selection);
185 PCamera lc = svWindow.
canvas.getCamera();
188 if (e.getWheelRotation() < 0) {
191 lc.scaleViewAboutPoint(lc.getScale() / sf, e.getPosition().getX(), e
192 .getPosition().getY());
203 .getPosition().getX(), (int) e.getPosition().getY(), 0, 0, null));
228 lastYMove, 0, 0, null));
242 char keyCh = e.getKeyChar();
243 if (keyCh ==
'\r' || keyCh ==
'\n' || keyCh ==
'\0' || keyCh ==
'?') {
245 lastYMove, 0, 0, keyStr));
251 lastYMove, 0, 0, String.valueOf(keyCh)));
263 lastYMove, 0, 0, null));
264 e.getWindow().dispose();
268 lastYMove, 0, 0, null));