diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/WCKeyEvent.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/WCKeyEvent.java new file mode 100644 index 00000000000..fb7a9c333ce --- /dev/null +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/WCKeyEvent.java @@ -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 + */ + +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; + } + + +} diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java index 419d42f33e7..8a476c358f9 100644 --- a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java @@ -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; } } diff --git a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/KeyListenerTest.java b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/KeyListenerTest.java index 08f0a4e6d8b..172b63d5f1d 100644 --- a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/KeyListenerTest.java +++ b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/KeyListenerTest.java @@ -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); } diff --git a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/MouseListenerTest.java b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/MouseListenerTest.java index c772b890782..3937a07fecb 100644 --- a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/MouseListenerTest.java +++ b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/MouseListenerTest.java @@ -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) { diff --git a/mozilla/java/webclient/test/automated/src/test/KeyListenerTest1.html b/mozilla/java/webclient/test/automated/src/test/KeyListenerTest1.html index 5b084938a0e..23e60fe87f9 100644 --- a/mozilla/java/webclient/test/automated/src/test/KeyListenerTest1.html +++ b/mozilla/java/webclient/test/automated/src/test/KeyListenerTest1.html @@ -11,7 +11,7 @@
- +