2323
2424import java .awt .Component ;
2525import java .awt .Point ;
26- import java .awt .event .MouseEvent ;
27- import java . awt . event . MouseMotionListener ;
26+ import java .awt .event .* ;
27+
2828
2929import javax .swing .JPanel ;
3030
@@ -60,17 +60,17 @@ public void call() {
6060 verify (error , never ()).call (Matchers .<Exception > any ());
6161 verify (complete , never ()).call ();
6262
63- fireMouseEvent (mouseEvent (0 , 0 ));
63+ fireMouseMotionEvent (mouseEvent (0 , 0 , MouseEvent . MOUSE_MOVED ));
6464 verify (action , never ()).call (Matchers .<Point > any ());
6565
66- fireMouseEvent (mouseEvent (10 , -5 ));
66+ fireMouseMotionEvent (mouseEvent (10 , -5 , MouseEvent . MOUSE_MOVED ));
6767 inOrder .verify (action , times (1 )).call (new Point (10 , -5 ));
6868
69- fireMouseEvent (mouseEvent (6 , 10 ));
69+ fireMouseMotionEvent (mouseEvent (6 , 10 , MouseEvent . MOUSE_MOVED ));
7070 inOrder .verify (action , times (1 )).call (new Point (-4 , 15 ));
7171
7272 sub .unsubscribe ();
73- fireMouseEvent (mouseEvent (0 , 0 ));
73+ fireMouseMotionEvent (mouseEvent (0 , 0 , MouseEvent . MOUSE_MOVED ));
7474 inOrder .verify (action , never ()).call (Matchers .<Point > any ());
7575 verify (error , never ()).call (Matchers .<Exception > any ());
7676 verify (complete , never ()).call ();
@@ -79,14 +79,124 @@ public void call() {
7979 }).awaitTerminal ();
8080 }
8181
82- private MouseEvent mouseEvent (int x , int y ) {
83- return new MouseEvent (comp , MouseEvent .MOUSE_MOVED , 1L , 0 , x , y , 0 ,
82+ @ Test
83+ public void testMouseEvents () throws Throwable {
84+ SwingTestHelper .create ().runInEventDispatchThread (new Action0 () {
85+
86+ @ Override
87+ public void call () {
88+ @ SuppressWarnings ("unchecked" )
89+ Action1 <MouseEvent > action = mock (Action1 .class );
90+ @ SuppressWarnings ("unchecked" )
91+ Action1 <Throwable > error = mock (Action1 .class );
92+ Action0 complete = mock (Action0 .class );
93+
94+ Subscription sub = MouseEventSource .fromMouseEventsOf (comp )
95+ .subscribe (action , error , complete );
96+
97+ InOrder inOrder = inOrder (action );
98+
99+ verify (action , never ()).call (Matchers .<MouseEvent > any ());
100+ verify (error , never ()).call (Matchers .<Exception > any ());
101+ verify (complete , never ()).call ();
102+
103+ MouseEvent mouseEvent =
104+ mouseEvent (0 , 0 , MouseEvent .MOUSE_CLICKED );
105+ fireMouseClickEvent (mouseEvent );
106+ inOrder .verify (action , times (1 )).call (mouseEvent );
107+
108+ mouseEvent = mouseEvent (300 , 200 , MouseEvent .MOUSE_CLICKED );
109+ fireMouseClickEvent (mouseEvent );
110+ inOrder .verify (action , times (1 )).call (mouseEvent );
111+
112+ mouseEvent = mouseEvent (0 , 0 , MouseEvent .MOUSE_CLICKED );
113+ fireMouseClickEvent (mouseEvent );
114+ inOrder .verify (action , times (1 )).call (mouseEvent );
115+
116+ sub .unsubscribe ();
117+ fireMouseClickEvent (mouseEvent (0 , 0 , MouseEvent .MOUSE_CLICKED ));
118+ inOrder .verify (action , never ()).call (Matchers .<MouseEvent > any ());
119+ verify (error , never ()).call (Matchers .<Exception > any ());
120+ verify (complete , never ()).call ();
121+ }
122+
123+ }).awaitTerminal ();
124+ }
125+
126+ @ Test
127+ public void testMouseWheelEvents () throws Throwable {
128+ SwingTestHelper .create ().runInEventDispatchThread (new Action0 () {
129+
130+ @ Override
131+ public void call () {
132+ @ SuppressWarnings ("unchecked" )
133+ Action1 <MouseEvent > action = mock (Action1 .class );
134+ @ SuppressWarnings ("unchecked" )
135+ Action1 <Throwable > error = mock (Action1 .class );
136+ Action0 complete = mock (Action0 .class );
137+
138+ Subscription sub = MouseEventSource .fromMouseWheelEvents (comp )
139+ .subscribe (action , error , complete );
140+
141+ InOrder inOrder = inOrder (action );
142+
143+ verify (action , never ()).call (Matchers .<MouseEvent > any ());
144+ verify (error , never ()).call (Matchers .<Exception > any ());
145+ verify (complete , never ()).call ();
146+
147+ MouseWheelEvent mouseEvent = mouseWheelEvent (0 );
148+ fireMouseWheelEvent (mouseEvent );
149+ inOrder .verify (action , times (1 )).call (mouseEvent );
150+
151+ mouseEvent = mouseWheelEvent (3 );
152+ fireMouseWheelEvent (mouseEvent );
153+ inOrder .verify (action , times (1 )).call (mouseEvent );
154+
155+ mouseEvent = mouseWheelEvent (5 );
156+ fireMouseWheelEvent (mouseEvent );
157+ inOrder .verify (action , times (1 )).call (mouseEvent );
158+
159+ mouseEvent = mouseWheelEvent (1 );
160+ fireMouseWheelEvent (mouseEvent );
161+ inOrder .verify (action , times (1 )).call (mouseEvent );
162+
163+ sub .unsubscribe ();
164+ fireMouseClickEvent (mouseEvent (0 , 0 , MouseEvent .MOUSE_CLICKED ));
165+ inOrder .verify (action , never ()).call (Matchers .<MouseEvent > any ());
166+ verify (error , never ()).call (Matchers .<Exception > any ());
167+ verify (complete , never ()).call ();
168+ }
169+
170+ }).awaitTerminal ();
171+ }
172+
173+ private MouseEvent mouseEvent (int x , int y , int mouseEventType ) {
174+ return new MouseEvent (comp , mouseEventType , 1L , 0 , x , y , 0 ,
84175 false );
85176 }
86177
87- private void fireMouseEvent (MouseEvent event ) {
178+ private void fireMouseMotionEvent (MouseEvent event ) {
88179 for (MouseMotionListener listener : comp .getMouseMotionListeners ()) {
89180 listener .mouseMoved (event );
90181 }
91182 }
183+
184+ private void fireMouseClickEvent (MouseEvent event ) {
185+ for (MouseListener listener : comp .getMouseListeners ()) {
186+ listener .mouseClicked (event );
187+ }
188+ }
189+
190+ private MouseWheelEvent mouseWheelEvent (int wheelRotationClicks ) {
191+ int mouseEventType = MouseEvent .MOUSE_WHEEL ;
192+ return new MouseWheelEvent (comp , mouseEventType , 1L , 0 , 0 , 0 , 0 ,
193+ false , MouseWheelEvent .WHEEL_BLOCK_SCROLL , 0 ,
194+ wheelRotationClicks );
195+ }
196+
197+ private void fireMouseWheelEvent (MouseWheelEvent event ) {
198+ for (MouseWheelListener listener : comp .getMouseWheelListeners ()) {
199+ listener .mouseWheelMoved (event );
200+ }
201+ }
92202}
0 commit comments