Subversion Repository Public Repository

litesoft

Diff Revisions 948 vs 950 for /trunk/Java/GWT/Client/src/com/google/gwt/gen2/event/dom/client/ListenerWrapperImpl.java

Diff revisions: vs.
  @@ -1,162 +1,162 @@
1 - /*
2 - * Copyright 2008 Google Inc.
3 - *
4 - * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 - * use this file except in compliance with the License. You may obtain a copy of
6 - * the License at
7 - *
8 - * http://www.apache.org/licenses/LICENSE-2.0
9 - *
10 - * Unless required by applicable law or agreed to in writing, software
11 - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 - * License for the specific language governing permissions and limitations under
14 - * the License.
15 - */
16 -
17 - package com.google.gwt.gen2.event.dom.client;
18 -
19 - import com.google.gwt.gen2.event.shared.*;
20 - import com.google.gwt.gen2.event.shared.AbstractEvent.*;
21 - import com.google.gwt.user.client.ui.*;
22 -
23 - import java.util.*;
24 -
25 - /**
26 - * legacy listener support for dom events. Will eventually be moved into
27 - * user.ui.
28 - *
29 - * @param <ListenerType> listener type
30 - */
31 -
32 - abstract class ListenerWrapperImpl<ListenerType> implements EventHandler {
33 -
34 - static class Click extends ListenerWrapperImpl<ClickListener> implements ClickHandler {
35 -
36 - public static void removeWrappedListener( HasHandlerManager eventSource, ClickListener listener ) {
37 - removeWrappedListene( eventSource, listener, ClickEvent.TYPE );
38 - }
39 -
40 - protected Click( ClickListener listener ) {
41 - super( listener );
42 - }
43 -
44 - public void onClick( ClickEvent event ) {
45 - listener.onClick( source( event ) );
46 - }
47 - }
48 -
49 - /*
50 - * Handler wrapper for {@link FocusListener}.
51 - */
52 - static class Focus extends ListenerWrapperImpl<FocusListener> implements FocusHandler,
53 - BlurHandler {
54 -
55 - public Focus( FocusListener listener ) {
56 - super( listener );
57 - }
58 -
59 - public void onBlur( BlurEvent event ) {
60 - listener.onLostFocus( source( event ) );
61 - }
62 -
63 - public void onFocus( FocusEvent event ) {
64 - listener.onFocus( source( event ) );
65 - }
66 - }
67 -
68 - static class Keyboard extends ListenerWrapperImpl<KeyboardListener> implements KeyDownHandler,
69 - KeyUpHandler,
70 - KeyPressHandler {
71 -
72 - public static void removeWrappedListener( HasHandlerManager eventSource, KeyboardListener listener ) {
73 - ListenerWrapperImpl.removeWrappedListene( eventSource, listener, KeyDownEvent.TYPE, KeyUpEvent.TYPE, KeyPressEvent.TYPE );
74 - }
75 -
76 - public Keyboard( KeyboardListener listener ) {
77 - super( listener );
78 - }
79 -
80 - public void onKeyDown( KeyDownEvent event ) {
81 - listener.onKeyDown( source( event ), (char) event.getKeyCode(), event.getKeyModifiers() );
82 - }
83 -
84 - public void onKeyPress( KeyPressEvent event ) {
85 - listener.onKeyPress( source( event ), (char) event.getNativeEvent().getKeyCode(), event.getKeyModifiers() );
86 - }
87 -
88 - public void onKeyUp( KeyUpEvent event ) {
89 - source( event );
90 - listener.onKeyUp( source( event ), (char) event.getKeyCode(), event.getKeyModifiers() );
91 - }
92 - }
93 -
94 - static class Mouse extends ListenerWrapperImpl<MouseListener> implements MouseDownHandler,
95 - MouseUpHandler,
96 - MouseOutHandler,
97 - MouseOverHandler,
98 - MouseMoveHandler {
99 -
100 - public static <EventSourceType extends HasHandlerManager & HasMouseDownHandlers & HasMouseUpHandlers & HasMouseOutHandlers & HasMouseOverHandlers &
101 - HasMouseMoveHandlers, HandlerType extends MouseDownHandler & MouseUpHandler & MouseOutHandler & MouseOverHandler & MouseMoveHandler> void
102 - addHandlers(
103 - EventSourceType source, HandlerType handlers ) {
104 - source.addMouseDownHandler( handlers );
105 - source.addMouseUpHandler( handlers );
106 - source.addMouseOutHandler( handlers );
107 - source.addMouseOverHandler( handlers );
108 - source.addMouseMoveHandler( handlers );
109 - }
110 -
111 - public static void remove( HasHandlerManager eventSource, MouseListener listener ) {
112 - removeWrappedListene( eventSource, listener, MouseDownEvent.TYPE, MouseUpEvent.TYPE, MouseOverEvent.TYPE, MouseOutEvent.TYPE );
113 - }
114 -
115 - protected Mouse( MouseListener listener ) {
116 - super( listener );
117 - }
118 -
119 - public void onMouseDown( MouseDownEvent event ) {
120 - listener.onMouseDown( source( event ), event.getClientX(), event.getScreenY() );
121 - }
122 -
123 - public void onMouseMove( MouseMoveEvent event ) {
124 - listener.onMouseMove( source( event ), event.getClientX(), event.getClientY() );
125 - }
126 -
127 - public void onMouseOut( MouseOutEvent event ) {
128 - listener.onMouseLeave( source( event ) );
129 - }
130 -
131 - public void onMouseOver( MouseOverEvent event ) {
132 - listener.onMouseEnter( source( event ) );
133 - }
134 -
135 - public void onMouseUp( MouseUpEvent event ) {
136 - listener.onMouseUp( source( event ), event.getClientX(), event.getClientY() );
137 - }
138 - }
139 -
140 - protected static void removeWrappedListene( HasHandlerManager eventSource, EventListener listener, Type... keys ) {
141 - HandlerManager manager = eventSource.getHandlerManager();
142 - for ( Type key : keys ) {
143 - int handlerCount = manager.getHandlerCount( key );
144 - for ( int i = 0; i < handlerCount; i++ ) {
145 - EventHandler handler = manager.getHandler( key, i );
146 - if ( handler instanceof ListenerWrapperImpl && ((ListenerWrapperImpl) handler).listener.equals( listener ) ) {
147 - manager.removeHandler( key, handler );
148 - }
149 - }
150 - }
151 - }
152 -
153 - protected final ListenerType listener;
154 -
155 - ListenerWrapperImpl( ListenerType listener ) {
156 - this.listener = listener;
157 - }
158 -
159 - Widget source( AbstractEvent e ) {
160 - return (Widget) e.getSource();
161 - }
162 - }
1 + /*
2 + * Copyright 2008 Google Inc.
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 + * use this file except in compliance with the License. You may obtain a copy of
6 + * the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 + * License for the specific language governing permissions and limitations under
14 + * the License.
15 + */
16 +
17 + package com.google.gwt.gen2.event.dom.client;
18 +
19 + import com.google.gwt.gen2.event.shared.*;
20 + import com.google.gwt.gen2.event.shared.AbstractEvent.*;
21 + import com.google.gwt.user.client.ui.*;
22 +
23 + import java.util.*;
24 +
25 + /**
26 + * legacy listener support for dom events. Will eventually be moved into
27 + * user.ui.
28 + *
29 + * @param <ListenerType> listener type
30 + */
31 +
32 + abstract class ListenerWrapperImpl<ListenerType> implements EventHandler {
33 +
34 + static class Click extends ListenerWrapperImpl<ClickListener> implements ClickHandler {
35 +
36 + public static void removeWrappedListener( HasHandlerManager eventSource, ClickListener listener ) {
37 + removeWrappedListene( eventSource, listener, ClickEvent.TYPE );
38 + }
39 +
40 + protected Click( ClickListener listener ) {
41 + super( listener );
42 + }
43 +
44 + public void onClick( ClickEvent event ) {
45 + listener.onClick( source( event ) );
46 + }
47 + }
48 +
49 + /*
50 + * Handler wrapper for {@link FocusListener}.
51 + */
52 + static class Focus extends ListenerWrapperImpl<FocusListener> implements FocusHandler,
53 + BlurHandler {
54 +
55 + public Focus( FocusListener listener ) {
56 + super( listener );
57 + }
58 +
59 + public void onBlur( BlurEvent event ) {
60 + listener.onLostFocus( source( event ) );
61 + }
62 +
63 + public void onFocus( FocusEvent event ) {
64 + listener.onFocus( source( event ) );
65 + }
66 + }
67 +
68 + static class Keyboard extends ListenerWrapperImpl<KeyboardListener> implements KeyDownHandler,
69 + KeyUpHandler,
70 + KeyPressHandler {
71 +
72 + public static void removeWrappedListener( HasHandlerManager eventSource, KeyboardListener listener ) {
73 + ListenerWrapperImpl.removeWrappedListene( eventSource, listener, KeyDownEvent.TYPE, KeyUpEvent.TYPE, KeyPressEvent.TYPE );
74 + }
75 +
76 + public Keyboard( KeyboardListener listener ) {
77 + super( listener );
78 + }
79 +
80 + public void onKeyDown( KeyDownEvent event ) {
81 + listener.onKeyDown( source( event ), (char) event.getKeyCode(), event.getKeyModifiers() );
82 + }
83 +
84 + public void onKeyPress( KeyPressEvent event ) {
85 + listener.onKeyPress( source( event ), (char) event.getNativeEvent().getKeyCode(), event.getKeyModifiers() );
86 + }
87 +
88 + public void onKeyUp( KeyUpEvent event ) {
89 + source( event );
90 + listener.onKeyUp( source( event ), (char) event.getKeyCode(), event.getKeyModifiers() );
91 + }
92 + }
93 +
94 + static class Mouse extends ListenerWrapperImpl<MouseListener> implements MouseDownHandler,
95 + MouseUpHandler,
96 + MouseOutHandler,
97 + MouseOverHandler,
98 + MouseMoveHandler {
99 +
100 + public static <EventSourceType extends HasHandlerManager & HasMouseDownHandlers & HasMouseUpHandlers & HasMouseOutHandlers & HasMouseOverHandlers &
101 + HasMouseMoveHandlers, HandlerType extends MouseDownHandler & MouseUpHandler & MouseOutHandler & MouseOverHandler & MouseMoveHandler> void
102 + addHandlers(
103 + EventSourceType source, HandlerType handlers ) {
104 + source.addMouseDownHandler( handlers );
105 + source.addMouseUpHandler( handlers );
106 + source.addMouseOutHandler( handlers );
107 + source.addMouseOverHandler( handlers );
108 + source.addMouseMoveHandler( handlers );
109 + }
110 +
111 + public static void remove( HasHandlerManager eventSource, MouseListener listener ) {
112 + removeWrappedListene( eventSource, listener, MouseDownEvent.TYPE, MouseUpEvent.TYPE, MouseOverEvent.TYPE, MouseOutEvent.TYPE );
113 + }
114 +
115 + protected Mouse( MouseListener listener ) {
116 + super( listener );
117 + }
118 +
119 + public void onMouseDown( MouseDownEvent event ) {
120 + listener.onMouseDown( source( event ), event.getClientX(), event.getScreenY() );
121 + }
122 +
123 + public void onMouseMove( MouseMoveEvent event ) {
124 + listener.onMouseMove( source( event ), event.getClientX(), event.getClientY() );
125 + }
126 +
127 + public void onMouseOut( MouseOutEvent event ) {
128 + listener.onMouseLeave( source( event ) );
129 + }
130 +
131 + public void onMouseOver( MouseOverEvent event ) {
132 + listener.onMouseEnter( source( event ) );
133 + }
134 +
135 + public void onMouseUp( MouseUpEvent event ) {
136 + listener.onMouseUp( source( event ), event.getClientX(), event.getClientY() );
137 + }
138 + }
139 +
140 + protected static void removeWrappedListene( HasHandlerManager eventSource, EventListener listener, Type... keys ) {
141 + HandlerManager manager = eventSource.getHandlerManager();
142 + for ( Type key : keys ) {
143 + int handlerCount = manager.getHandlerCount( key );
144 + for ( int i = 0; i < handlerCount; i++ ) {
145 + EventHandler handler = manager.getHandler( key, i );
146 + if ( handler instanceof ListenerWrapperImpl && ((ListenerWrapperImpl) handler).listener.equals( listener ) ) {
147 + manager.removeHandler( key, handler );
148 + }
149 + }
150 + }
151 + }
152 +
153 + protected final ListenerType listener;
154 +
155 + ListenerWrapperImpl( ListenerType listener ) {
156 + this.listener = listener;
157 + }
158 +
159 + Widget source( AbstractEvent e ) {
160 + return (Widget) e.getSource();
161 + }
162 + }