View Javadoc

1   /*
2    * @(#)$Id: MouseReader.java 824 2010-05-26 22:38:01Z bpuype $
3    *
4    * Author       :   Ueli Kurmann, igesture@uelikurmann.ch
5    *
6    * Purpose      :   A mouse reader.
7    *                  
8    * -----------------------------------------------------------------------
9    *
10   * Revision Information:
11   *
12   * Date             Who         Reason
13   *
14   * Dec 10, 2006		ukurmann	Initial Release
15   * Mar 22, 2007     bsigner     Cleanup
16   * Jan 17, 2008     crocimi     added dependency from MouseCallback
17   *
18   * -----------------------------------------------------------------------
19   *
20   * Copyright 1999-2009 ETH Zurich. All Rights Reserved.
21   *
22   * This software is the proprietary information of ETH Zurich.
23   * Use is subject to license terms.
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   * A mouse reader.
50   * 
51   * @version 1.0, Dec 2006
52   * @author Ueli Kurmann, igesture@uelikurmann.ch
53   * @author Beat Signer, signer@inf.ethz.ch
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      * (non-Javadoc)
79      * @see org.ximtec.igesture.io.mouse.MouseHandler#handleMouseEvent(int, int, java.util.EnumSet)
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     * (non-Javadoc)
110     * @see org.ximtec.igesture.io.GestureDevice#getChunks()
111     */
112    @Override
113    public List<Point> getChunks() {
114       return trace.getPoints();
115    }
116 
117 
118    /*
119     * (non-Javadoc)
120     * @see org.ximtec.igesture.io.GestureDevice#getGesture()
121     */
122    @Override
123    public Gesture<Note> getGesture() {
124 
125       return new GestureSample(this,Constant.EMPTY_STRING, note);
126    }
127 
128 
129    /*
130     * (non-Javadoc)
131     * @see org.ximtec.igesture.io.GestureDevice#init()
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     * (non-Javadoc)
144     * @see org.ximtec.igesture.io.GestureDevice#dispose()
145     */
146    @Override
147    public void dispose() {
148       removeAllListener();
149       clear();
150    }
151 
152    /*
153     * (non-Javadoc)
154     * @see org.ximtec.igesture.io.GestureDevice#clear()
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 		//TODO
166 		//init();
167 		LOGGER.log(Level.WARNING, "Still to implement");
168 	}
169 
170 
171 	@Override
172 	public void disconnect() {
173 		// TODO Auto-generated method stub
174 		LOGGER.log(Level.WARNING, "Still to implement");
175 	}
176 
177 }