Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JBrowser Source Code Files
JBrowser Source Code Files are provided in the source package file.
You can download JBrowser source package as described in the previous tutorial and go to the "src" sub-folder to view Source Code files.
You can also browse JBrowser Source Code files below:
✍: FYIcenter
⏎ org/mozilla/browser/impl/DOMAdapter.java
package org.mozilla.browser.impl; import static org.mozilla.browser.MozillaExecutor.swingAsyncExec; import static org.mozilla.browser.XPCOMUtils.qi; import java.awt.Component; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.mozilla.browser.MozillaExecutor; import org.mozilla.browser.MozillaKeyEvent; import org.mozilla.browser.MozillaMouseEvent; import org.mozilla.dom.NodeFactory; import org.mozilla.interfaces.nsIDOMEvent; import org.mozilla.interfaces.nsIDOMEventListener; import org.mozilla.interfaces.nsIDOMKeyEvent; import org.mozilla.interfaces.nsIDOMMouseEvent; import org.mozilla.interfaces.nsISupports; import org.mozilla.xpcom.Mozilla; import org.w3c.dom.Node; import ru.atomation.jbrowser.impl.JBrowserComponent; /** * Listener for loading events in mozilla browser */ public class DOMAdapter implements nsIDOMEventListener { static Log log = LogFactory.getLog(DOMAdapter.class); public static String[] hookedEvents = new String[]{ "click", "mousedown", "mouseup", "mouseover", "mousemove", "mouseout", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ "keydown", "keyup", "keypress" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ }; private final JBrowserComponent<?> browserComponent; public DOMAdapter(JBrowserComponent<?> browserComponent) { this.browserComponent = browserComponent; } public void handleEvent(nsIDOMEvent event) { assert MozillaExecutor.isMozillaThread(); //log.debug("DOM event: "+event.getType()); nsIDOMMouseEvent nsmev = qi(event, nsIDOMMouseEvent.class); if (nsmev != null) { fireAWTEvent(nsmev); } else { nsIDOMKeyEvent nskev = qi(event, nsIDOMKeyEvent.class); if (nskev != null) { fireAWTEvent(nskev); } } } private void fireAWTEvent(nsIDOMMouseEvent nsmev) { final Component source = browserComponent.getComponent(); final int id; String type = nsmev.getType(); if (type.equals("click")) { //$NON-NLS-1$ id = MouseEvent.MOUSE_CLICKED; } else if (type.equals("mousedown")) { //$NON-NLS-1$ id = MouseEvent.MOUSE_PRESSED; } else if (type.equals("mouseup")) { //$NON-NLS-1$ id = MouseEvent.MOUSE_RELEASED; } else if (type.equals("mouseover")) { //$NON-NLS-1$ id = MouseEvent.MOUSE_ENTERED; } else if (type.equals("mousemove")) { //$NON-NLS-1$ id = MouseEvent.MOUSE_MOVED; } else if (type.equals("mouseout")) { //$NON-NLS-1$ id = MouseEvent.MOUSE_EXITED; } else { //unknown log.error("Unknown mouse event type " + type); //$NON-NLS-1$ return; } final Node sourceNode = NodeFactory.getNodeInstance(nsmev.getTarget()); final long when = System.currentTimeMillis(); int mods = 0; if (nsmev.getShiftKey()) { mods |= MouseEvent.SHIFT_DOWN_MASK; } if (nsmev.getCtrlKey()) { mods |= MouseEvent.CTRL_DOWN_MASK; } if (nsmev.getMetaKey()) { mods |= MouseEvent.META_DOWN_MASK; } if (nsmev.getAltKey()) { mods |= MouseEvent.ALT_DOWN_MASK; } if (nsmev.getButton() == 0) { mods |= MouseEvent.BUTTON1_DOWN_MASK; //left } if (nsmev.getButton() == 1) { mods |= MouseEvent.BUTTON2_DOWN_MASK; //middle } if (nsmev.getButton() == 2) { mods |= MouseEvent.BUTTON3_DOWN_MASK; //right } final int modifiers = mods; final int x = nsmev.getClientX(); final int y = nsmev.getClientY(); final int clickCount = "click".equals(nsmev.getType()) ? 1 : 0; //$NON-NLS-1$ final int button; if (nsmev.getButton() == 0) { button = MouseEvent.BUTTON1; //left } else if (nsmev.getButton() == 1) { button = MouseEvent.BUTTON2; //middle } else if (nsmev.getButton() == 2) { button = MouseEvent.BUTTON3; //right } else { button = MouseEvent.NOBUTTON; } swingAsyncExec(new Runnable() { public void run() { try { MozillaMouseEvent ev = new MozillaMouseEvent(source, sourceNode, id, when, modifiers, x, y, clickCount, false, button); JBrowserComponent<?> component = (JBrowserComponent<?>) ev.getSource(); component.processEvent(ev); } catch (Exception e) { log.error("failed to dispatch awt event", e); //$NON-NLS-1$ } } }); } private void fireAWTEvent(nsIDOMKeyEvent nskev) { final Component source = browserComponent.getComponent(); final int id; String type = nskev.getType(); if (type.equals("keydown")) { //$NON-NLS-1$ id = KeyEvent.KEY_PRESSED; } else if (type.equals("keyup")) { //$NON-NLS-1$ id = KeyEvent.KEY_RELEASED; } else if (type.equals("keypress")) { //$NON-NLS-1$ id = KeyEvent.KEY_TYPED; } else { //unknown log.error("Unknown key event type " + type); //$NON-NLS-1$ return; } final Node sourceNode = NodeFactory.getNodeInstance(nskev.getTarget()); final long when = System.currentTimeMillis(); int mods = 0; if (nskev.getShiftKey()) { mods |= KeyEvent.SHIFT_DOWN_MASK; } if (nskev.getCtrlKey()) { mods |= KeyEvent.CTRL_DOWN_MASK; } if (nskev.getMetaKey()) { mods |= KeyEvent.META_DOWN_MASK; } if (nskev.getAltKey()) { mods |= KeyEvent.ALT_DOWN_MASK; } final int modifiers = mods; //nsIDOMNSUIEvent nskev2 = qi(nskev, nsIDOMNSUIEvent.class); //long which = nskev2.getWhich(); final long mozKeyCode = nskev.getKeyCode(); final long mozCharCode = nskev.getCharCode(); log.debug("moz keycode=" + mozKeyCode + " charcode=" + mozCharCode); //$NON-NLS-1$ //$NON-NLS-2$ final int awtKeyCode; if (id != KeyEvent.KEY_TYPED) { awtKeyCode = (int) mozKeyCode; } else { awtKeyCode = KeyEvent.VK_UNDEFINED; } final char awtKeyChar1; if (mozCharCode != 0) { awtKeyChar1 = (char) mozCharCode; } else { awtKeyChar1 = 0; } //send awt event swingAsyncExec(new Runnable() { public void run() { try { MozillaKeyEvent ev = new MozillaKeyEvent(source, sourceNode, id, when, modifiers, awtKeyCode, awtKeyChar1); //mozilla event has either keyCode!=0 xor keyChar!=0 //awt events have keyCode!=0 and keyChar!=0 for //printable chars if (awtKeyChar1 == 0 && !ev.isActionKey()) { char awtKeyChar2 = (char) awtKeyCode; if (Character.isLetter(awtKeyChar2) && (modifiers & KeyEvent.SHIFT_DOWN_MASK) == 0) { awtKeyChar2 = Character.toLowerCase(awtKeyChar2); } ev.setKeyChar(awtKeyChar2); } log.debug("awt id=" + id + " keycode=" + ev.getKeyCode() + " keychar='" + ev.getKeyChar() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ JBrowserComponent<?> component = (JBrowserComponent<?>) ev.getSource(); component.processEvent(ev); } catch (Exception e) { log.error("failed to dispatch awt event", e); //$NON-NLS-1$ } } }); } public nsISupports queryInterface(String uuid) { return Mozilla.queryInterface(this, uuid); } }
⏎ org/mozilla/browser/impl/DOMAdapter.java
Or download all of them as a single archive file:
File name: jbrowser-1.9-fyi.zip File size: 625318 bytes Release date: 2022-11-10 Download
⇐ Download and Install JBrowser Source Package
2017-07-17, 8380👍, 1💬
Popular Posts:
SLF4J API is a simple API that allows to plug in any desired logging library at deployment time. Her...
JDK 11 java.desktop.jmod is the JMOD file for JDK 11 Desktop module. JDK 11 Desktop module compiled ...
Joda-Time provides a quality replacement for the Java date and time classes. The design allows for m...
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms, it was develo...
JDK 11 jdk.javadoc.jmod is the JMOD file for JDK 11 Java Document tool, which can be invoked by the ...