1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.ximtec.igesture.io.mouseclient;
29
30 import java.util.EnumSet;
31 import java.util.List;
32 import java.util.concurrent.Executors;
33 import java.util.logging.Level;
34 import java.util.logging.Logger;
35
36 import org.sigtec.ink.Note;
37 import org.sigtec.ink.Point;
38 import org.sigtec.ink.Trace;
39 import org.sigtec.util.Constant;
40 import org.ximtec.igesture.core.Gesture;
41 import org.ximtec.igesture.core.GestureSample;
42 import org.ximtec.igesture.io.AbstractGestureDevice;
43 import org.ximtec.igesture.io.mouse.MouseHandler;
44 import org.ximtec.igesture.io.mouse.MouseUtils;
45 import org.ximtec.igesture.io.mouse.MouseUtils.MouseButton;
46
47
48
49
50
51
52
53
54
55 public class MouseReader extends AbstractGestureDevice<Note, Point> implements MouseHandler{
56
57 private static final Logger LOGGER = Logger.getLogger(MouseReader.class.getName());
58
59 private MouseUtils mouseUtils;
60
61 private Note note;
62 private Trace trace;
63 private boolean lastKeyState = false;
64
65
66 public MouseReader() {
67 super();
68 setName("MouseReader");
69 setDeviceType(org.ximtec.igesture.util.Constant.TYPE_2D);
70 setDeviceID("System Mouse");
71 setConnectionType(org.ximtec.igesture.util.Constant.CONNECTION_USB);
72 setIsConnected(true);
73 setDefaultDevice(true);
74 }
75
76
77
78
79
80
81 @Override
82 public synchronized void handleMouseEvent(int x, int y,
83 EnumSet<MouseButton> buttons) {
84
85 if (buttons.contains(MouseButton.MIDDLE)) {
86 LOGGER.log(Level.FINEST, "Mouse Event...");
87
88 long timestamp = System.currentTimeMillis();
89 Point point = new Point(x, y, timestamp);
90 trace.add(point);
91
92 lastKeyState = true;
93 }
94 else {
95
96 if (lastKeyState) {
97 note.add(trace);
98 trace = new Trace();
99
100 lastKeyState = false;
101 fireGestureEvent(getGesture());
102 clear();
103 }
104 }
105 }
106
107
108
109
110
111
112 @Override
113 public List<Point> getChunks() {
114 return trace.getPoints();
115 }
116
117
118
119
120
121
122 @Override
123 public Gesture<Note> getGesture() {
124
125 return new GestureSample(this,Constant.EMPTY_STRING, note);
126 }
127
128
129
130
131
132
133 @Override
134 public void init() {
135 mouseUtils = new MouseUtils(this);
136 Executors.newSingleThreadExecutor().execute(mouseUtils);
137 note = new Note();
138 trace = new Trace();
139 }
140
141
142
143
144
145
146 @Override
147 public void dispose() {
148 removeAllListener();
149 clear();
150 }
151
152
153
154
155
156 @Override
157 public void clear() {
158 note = new Note();
159 trace = new Trace();
160 }
161
162
163 @Override
164 public void connect() {
165
166
167 LOGGER.log(Level.WARNING, "Still to implement");
168 }
169
170
171 @Override
172 public void disconnect() {
173
174 LOGGER.log(Level.WARNING, "Still to implement");
175 }
176
177 }