1 /**
2  * Copyright 2010 JogAmp Community. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification, are
5  * permitted provided that the following conditions are met:
6  *
7  *    1. Redistributions of source code must retain the above copyright notice, this list of
8  *       conditions and the following disclaimer.
9  *
10  *    2. Redistributions in binary form must reproduce the above copyright notice, this list
11  *       of conditions and the following disclaimer in the documentation and/or other materials
12  *       provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  *
24  * The views and conclusions contained in the software and documentation are those of the
25  * authors and should not be interpreted as representing official policies, either expressed
26  * or implied, of JogAmp Community.
27  */
28 
29 package com.jogamp.opengl.test.junit.util;
30 
31 import java.util.ArrayList;
32 import java.util.EventObject;
33 import java.util.List;
34 
35 import com.jogamp.newt.event.MouseAdapter;
36 import com.jogamp.newt.event.MouseEvent;
37 
38 public class NEWTMouseAdapter extends MouseAdapter implements InputEventCountAdapter {
39 
40     String prefix;
41     int mouseClicked;
42     int consumed;
43     boolean pressed;
44     List<EventObject> queue = new ArrayList<EventObject>();
45     boolean verbose = true;
46 
NEWTMouseAdapter(final String prefix)47     public NEWTMouseAdapter(final String prefix) {
48         this.prefix = prefix;
49         reset();
50     }
51 
setVerbose(final boolean v)52     public synchronized void setVerbose(final boolean v) { verbose = v; }
53 
isPressed()54     public synchronized boolean isPressed() {
55         return pressed;
56     }
57 
getCount()58     public synchronized int getCount() {
59         return mouseClicked;
60     }
61 
getConsumedCount()62     public synchronized int getConsumedCount() {
63         return consumed;
64     }
65 
copyQueue()66     public synchronized List<EventObject> copyQueue() {
67         return new ArrayList<EventObject>(queue);
68     }
69 
getQueueSize()70     public synchronized int getQueueSize() {
71         return queue.size();
72     }
73 
reset()74     public synchronized void reset() {
75         mouseClicked = 0;
76         consumed = 0;
77         pressed = false;
78         queue.clear();
79     }
80 
mousePressed(final MouseEvent e)81     public synchronized void mousePressed(final MouseEvent e) {
82         pressed = true;
83         queue.add(e);
84         if( verbose ) {
85             System.err.println("MOUSE NEWT PRESSED ["+pressed+"]: "+prefix+", "+e);
86         }
87     }
88 
mouseReleased(final MouseEvent e)89     public synchronized void mouseReleased(final MouseEvent e) {
90         pressed = false;
91         queue.add(e);
92         if( verbose ) {
93             System.err.println("MOUSE NEWT RELEASED ["+pressed+"]: "+prefix+", "+e);
94         }
95     }
96 
mouseClicked(final MouseEvent e)97     public synchronized void mouseClicked(final MouseEvent e) {
98         mouseClicked+=e.getClickCount();
99         if(e.isConsumed()) {
100             consumed++;
101         }
102         queue.add(e);
103         if( verbose ) {
104             System.err.println("MOUSE NEWT CLICKED ["+mouseClicked+"]: "+prefix+", "+e);
105         }
106     }
107 
toString()108     public String toString() { return prefix+"[pressed "+pressed+", clicked "+mouseClicked+", consumed "+consumed+"]"; }
109 }
110 
111