blob: 65f35e4222cb6b9e0b1769fdd7a2ce88d705eba2 [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.event.dom.client;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HandlerTestBase;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Events test.
*/
public class DomEventTest extends HandlerTestBase {
private HandlerManager manager;
static class Flag {
public boolean flag = false;
}
public void testKeyEvents() {
final Flag flag = new Flag();
manager = new HandlerManager(flag);
HandlerRegistration downRegistration = manager.addHandler(
KeyDownEvent.getType(), new KeyDownHandler() {
public void onKeyDown(KeyDownEvent event) {
flag.flag = true;
}
});
HandlerRegistration upRegistration = manager.addHandler(
KeyUpEvent.getType(), new KeyUpHandler() {
public void onKeyUp(KeyUpEvent event) {
flag.flag = true;
}
});
HandlerRegistration pressRegistration = manager.addHandler(
KeyPressEvent.getType(), new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
flag.flag = true;
}
});
checkFire(new KeyDownEvent(), downRegistration, flag, "onKeyDown");
checkFire(new KeyUpEvent(), upRegistration, flag, "onKeyUp");
checkFire(new KeyPressEvent(), pressRegistration, flag, "onKeyPressed");
}
public void testMouseEvents() {
final Flag flag = new Flag();
manager = new HandlerManager(flag);
HandlerRegistration downRegistration = manager.addHandler(
MouseDownEvent.getType(), new MouseDownHandler() {
public void onMouseDown(MouseDownEvent event) {
flag.flag = true;
}
});
HandlerRegistration upRegistration = manager.addHandler(
MouseUpEvent.getType(), new MouseUpHandler() {
public void onMouseUp(MouseUpEvent event) {
flag.flag = true;
}
});
HandlerRegistration clickRegistration = manager.addHandler(
ClickEvent.getType(), new ClickHandler() {
public void onClick(ClickEvent event) {
flag.flag = true;
}
});
HandlerRegistration dblclickRegistration = manager.addHandler(
DoubleClickEvent.getType(), new DoubleClickHandler() {
public void onDoubleClick(DoubleClickEvent event) {
flag.flag = true;
}
});
HandlerRegistration outRegistration = manager.addHandler(
MouseOutEvent.getType(), new MouseOutHandler() {
public void onMouseOut(MouseOutEvent event) {
flag.flag = true;
}
});
HandlerRegistration overRegistration = manager.addHandler(
MouseOverEvent.getType(), new MouseOverHandler() {
public void onMouseOver(MouseOverEvent event) {
flag.flag = true;
}
});
HandlerRegistration moveRegistration = manager.addHandler(
MouseMoveEvent.getType(), new MouseMoveHandler() {
public void onMouseMove(MouseMoveEvent event) {
flag.flag = true;
}
});
HandlerRegistration wheelRegistration = manager.addHandler(
MouseWheelEvent.getType(), new MouseWheelHandler() {
public void onMouseWheel(MouseWheelEvent event) {
flag.flag = true;
}
});
checkFire(new MouseDownEvent(), downRegistration, flag, "onMouseDown");
checkFire(new MouseUpEvent(), upRegistration, flag, "onMouseUp");
checkFire(new MouseOutEvent(), outRegistration, flag, "onMouseOut");
checkFire(new MouseOverEvent(), overRegistration, flag, "onMouseOver");
checkFire(new MouseMoveEvent(), moveRegistration, flag, "onMouseMove");
checkFire(new MouseWheelEvent(), wheelRegistration, flag, "onMouseWheel");
checkFire(new ClickEvent(), clickRegistration, flag, "onClick");
checkFire(new DoubleClickEvent(), dblclickRegistration, flag,
"onDoubleClick");
}
public void testMouseEventCoordinates() {
Button b = new Button();
RootPanel.get().add(b);
final Flag flag = new Flag();
b.addMouseDownHandler(new MouseDownHandler() {
public void onMouseDown(MouseDownEvent event) {
assertEquals("", 16, event.getX());
assertEquals("", 8, event.getY());
flag.flag = true;
}
});
int x = b.getAbsoluteLeft() + 16;
int y = b.getAbsoluteTop() + 8;
NativeEvent event = Document.get().createMouseDownEvent(0, x, y, x, y,
false, false, false, false, 1);
b.getElement().dispatchEvent(event);
assertTrue("Never received expected mouse-down event", flag.flag);
}
private void checkFire(DomEvent<?> event, HandlerRegistration registration,
Flag flag, String eventName) {
flag.flag = false;
manager.fireEvent(event);
assertTrue(eventName + " didn't fire.", flag.flag);
flag.flag = false;
registration.removeHandler();
// event.reset(null);
manager.fireEvent(event);
assertTrue(eventName + " fired when it shouldn't have.", !flag.flag);
}
}