mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-22 02:09:28 +00:00
Expose the dom Node to the standard java key and mouse
listeners, using test driven development techniques of course. Next step is to update the test browser to use this feature. SECTION: A webclient/classes_spec/org/mozilla/webclient/WCKeyEvent.java - KeyEvent subclass to expose WebclientEvent, and allow access to the Source property, which is a dom Node M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java - change to handle WCKeyEvent M webclient/test/automated/src/classes/org/mozilla/webclient/KeyListenerTest.java M webclient/test/automated/src/classes/org/mozilla/webclient/MouseListenerTest.java - new test content M webclient/test/automated/src/test/KeyListenerTest1.html - add id attribute
This commit is contained in:
parent
b63b4e2ccc
commit
859bfcad5f
@ -0,0 +1,48 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is RaptorCanvas.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Kirk Baker and
|
||||
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
||||
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Ed Burns <edburns@acm.org>
|
||||
*/
|
||||
|
||||
package org.mozilla.webclient;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author edburns
|
||||
*/
|
||||
public class WCKeyEvent extends KeyEvent {
|
||||
|
||||
private WebclientEvent wcEvent = null;
|
||||
|
||||
/** Creates a new instance of WCKeyEvent */
|
||||
public WCKeyEvent(Component source, int id, long when, int modifiers,
|
||||
int keyCode, char keyChar, WebclientEvent wcEvent) {
|
||||
super(source, id, when, modifiers, keyCode, keyChar);
|
||||
this.wcEvent = wcEvent;
|
||||
}
|
||||
|
||||
public WebclientEvent getWebclientEvent() {
|
||||
return wcEvent;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -49,6 +49,7 @@ import org.mozilla.webclient.DocumentLoadListener;
|
||||
import org.mozilla.webclient.PageInfoListener;
|
||||
import org.mozilla.webclient.NewWindowEvent;
|
||||
import org.mozilla.webclient.NewWindowListener;
|
||||
import org.mozilla.webclient.WCKeyEvent;
|
||||
import org.mozilla.webclient.WebclientEvent;
|
||||
import org.mozilla.webclient.WCMouseEvent;
|
||||
import org.mozilla.webclient.WebclientEventListener;
|
||||
@ -506,17 +507,6 @@ private EventObject createKeyEvent(long eventType, Object eventData) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
try {
|
||||
keyEvent = new KeyEvent((Component) browserControlCanvas, (int) eventType,
|
||||
when, modifiers, keyCode, keyChar);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
String msg = e.getMessage();
|
||||
System.out.println(e.toString() + " " + e.getMessage() +
|
||||
" eventType: " + eventType +
|
||||
" keyCode: " + keyCode +
|
||||
" keyChar: " + keyChar);
|
||||
}
|
||||
Object source = null;
|
||||
if (null != domNode) {
|
||||
source = domNode;
|
||||
@ -526,8 +516,19 @@ private EventObject createKeyEvent(long eventType, Object eventData) {
|
||||
}
|
||||
|
||||
WebclientEvent event = new WebclientEvent(source, eventType,
|
||||
keyEvent);
|
||||
return event;
|
||||
eventData);
|
||||
try {
|
||||
keyEvent = new WCKeyEvent((Component) browserControlCanvas, (int) eventType,
|
||||
when, modifiers, keyCode, keyChar, event);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
String msg = e.getMessage();
|
||||
System.out.println(e.toString() + " " + e.getMessage() +
|
||||
" eventType: " + eventType +
|
||||
" keyCode: " + keyCode +
|
||||
" keyChar: " + keyChar);
|
||||
}
|
||||
return keyEvent;
|
||||
}
|
||||
|
||||
private int getNativeBrowserControlFromNewWindowEvent(NewWindowEvent event) {
|
||||
@ -629,8 +630,7 @@ public class BrowserToJavaEventPump extends Thread {
|
||||
else if (curEvent instanceof MouseEvent) {
|
||||
listeners = EventRegistrationImpl.this.mouseListeners;
|
||||
}
|
||||
else if (curEvent instanceof WebclientEvent &&
|
||||
((WebclientEvent)curEvent).getEventData() instanceof KeyEvent) {
|
||||
else if (curEvent instanceof KeyEvent) {
|
||||
listeners = EventRegistrationImpl.this.keyListeners;
|
||||
}
|
||||
else if (curEvent instanceof NewWindowEvent) {
|
||||
@ -655,7 +655,7 @@ public class BrowserToJavaEventPump extends Thread {
|
||||
}
|
||||
else if (cur instanceof KeyListener) {
|
||||
dispatchKeyEvent((KeyListener) cur,
|
||||
(WebclientEvent) curEvent);
|
||||
(WCKeyEvent) curEvent);
|
||||
}
|
||||
// else ...
|
||||
}
|
||||
@ -694,16 +694,16 @@ public class BrowserToJavaEventPump extends Thread {
|
||||
}
|
||||
|
||||
private void dispatchKeyEvent(KeyListener listener,
|
||||
WebclientEvent event) {
|
||||
switch ((int) event.getType()) {
|
||||
WCKeyEvent event) {
|
||||
switch ((int) event.getWebclientEvent().getType()) {
|
||||
case (int) KeyEvent.KEY_PRESSED:
|
||||
listener.keyPressed((KeyEvent) event.getEventData());
|
||||
listener.keyPressed(event);
|
||||
break;
|
||||
case (int) KeyEvent.KEY_RELEASED:
|
||||
listener.keyReleased((KeyEvent) event.getEventData());
|
||||
listener.keyReleased(event);
|
||||
break;
|
||||
case (int) KeyEvent.KEY_TYPED:
|
||||
listener.keyTyped((KeyEvent) event.getEventData());
|
||||
listener.keyTyped(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: KeyListenerTest.java,v 1.2 2004/12/01 15:46:23 edburns%acm.org Exp $
|
||||
* $Id: KeyListenerTest.java,v 1.3 2005/08/20 19:25:52 edburns%acm.org Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -27,11 +27,7 @@
|
||||
package org.mozilla.webclient;
|
||||
|
||||
import junit.framework.TestSuite;
|
||||
import junit.framework.TestResult;
|
||||
import junit.framework.Test;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.Map;
|
||||
import java.util.BitSet;
|
||||
|
||||
import java.awt.Frame;
|
||||
@ -40,9 +36,9 @@ import java.awt.event.KeyListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.BorderLayout;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
||||
// KeyListenerTest.java
|
||||
|
||||
@ -129,6 +125,7 @@ public class KeyListenerTest extends WebclientTestCase {
|
||||
if ('z' == e.getKeyChar()) {
|
||||
KeyListenerTest.keepWaiting = false;
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
canvas.addKeyListener(manualExitKeyListener);
|
||||
@ -143,6 +140,26 @@ public class KeyListenerTest extends WebclientTestCase {
|
||||
bitSet.set(1);
|
||||
}
|
||||
public void keyTyped(KeyEvent e) {
|
||||
System.out.println("Key Pressed");
|
||||
assertTrue(e instanceof WCKeyEvent);
|
||||
WCKeyEvent wcKeyEvent = (WCKeyEvent) e;
|
||||
WebclientEvent wcEvent = wcKeyEvent.getWebclientEvent();
|
||||
assertNotNull(wcEvent);
|
||||
Node domNode = (Node) wcEvent.getSource();
|
||||
assertNotNull(domNode);
|
||||
assertTrue(domNode instanceof Element);
|
||||
Element element = (Element) domNode;
|
||||
String
|
||||
id = element.getAttribute("id"),
|
||||
name = element.getAttribute("name"),
|
||||
nodeName = domNode.getNodeName(),
|
||||
value = domNode.getNodeValue();
|
||||
assertEquals("field1", id);
|
||||
assertEquals("field1", name);
|
||||
assertEquals("INPUT", nodeName);
|
||||
assertEquals("", value);
|
||||
assertEquals('a', e.getKeyChar());
|
||||
|
||||
System.out.println("Key Typed");
|
||||
bitSet.set(2);
|
||||
}
|
||||
@ -194,7 +211,6 @@ public class KeyListenerTest extends WebclientTestCase {
|
||||
|
||||
keyListener = new KeyListener() {
|
||||
public void keyPressed(KeyEvent e) {
|
||||
System.out.println("Key Pressed");
|
||||
if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
|
||||
bitSet.set(0);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: MouseListenerTest.java,v 1.2 2004/10/28 13:57:59 edburns%acm.org Exp $
|
||||
* $Id: MouseListenerTest.java,v 1.3 2005/08/20 19:25:52 edburns%acm.org Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -27,10 +27,7 @@
|
||||
package org.mozilla.webclient;
|
||||
|
||||
import junit.framework.TestSuite;
|
||||
import junit.framework.TestResult;
|
||||
import junit.framework.Test;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.Map;
|
||||
import java.util.BitSet;
|
||||
|
||||
@ -40,9 +37,8 @@ import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.BorderLayout;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
// MouseListenerTest.java
|
||||
|
||||
@ -142,6 +138,18 @@ public class MouseListenerTest extends WebclientTestCase {
|
||||
String href = (String) eventMap.get("href");
|
||||
assertNotNull(href);
|
||||
assertEquals(href, "HistoryTest1.html");
|
||||
Node domNode = (Node) wcMouseEvent.getWebclientEvent().getSource();
|
||||
assertNotNull(domNode);
|
||||
assertTrue(domNode instanceof Element);
|
||||
Element element = (Element) domNode;
|
||||
String
|
||||
id = element.getAttribute("id"),
|
||||
name = domNode.getNodeName(),
|
||||
value = domNode.getNodeValue();
|
||||
domNode = domNode.getFirstChild();
|
||||
name = domNode.getNodeName();
|
||||
value = domNode.getNodeValue();
|
||||
|
||||
bitSet.set(0);
|
||||
}
|
||||
public void mouseExited(MouseEvent e) {
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
<form method="POST" action="/KeyListenerTest2.html">
|
||||
|
||||
<input type="text" name="field1" />
|
||||
<input type="text" id="field1" name="field1" />
|
||||
|
||||
<input type="submit" value="submit" />
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user