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
⏎ ru/atomation/jbrowser/impl/JBrowserWindowCreator.java
package ru.atomation.jbrowser.impl; import static org.mozilla.browser.MozillaExecutor.isMozillaThread; import static org.mozilla.browser.XPCOMUtils.create; import static org.mozilla.browser.XPCOMUtils.qi; import static org.mozilla.interfaces.nsIWebBrowserChrome.CHROME_ALL; import static org.mozilla.interfaces.nsIWebBrowserChrome.CHROME_DEFAULT; import java.awt.Rectangle; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.mozilla.browser.impl.DOMAdapter; import org.mozilla.interfaces.nsIBaseWindow; import org.mozilla.interfaces.nsIDOMEventTarget; import org.mozilla.interfaces.nsIDOMWindow2; import org.mozilla.interfaces.nsIDocShellTreeItem; import org.mozilla.interfaces.nsISupports; import org.mozilla.interfaces.nsIWebBrowser; import org.mozilla.interfaces.nsIWebBrowserChrome; import org.mozilla.xpcom.Mozilla; import ru.atomation.jbrowser.abstracts.AbstractBrowserWindowCreator; import ru.atomation.jbrowser.interfaces.NativeBrowser; /** * based on embedding/browser/gtk/EmbedWindowCreator.cpp, * based on mozswing WindowCreator */ public class JBrowserWindowCreator extends AbstractBrowserWindowCreator { protected Map<JBrowserComponent<?>, DOMAdapter> domAdapters; protected Set<NativeBrowser> attachedBrowsers; JBrowserWindowCreator() { domAdapters = new HashMap<JBrowserComponent<?>, DOMAdapter>(); attachedBrowsers = Collections.synchronizedSet(new HashSet<NativeBrowser>()); } @Override public nsISupports queryInterface(String aIID) { return Mozilla.queryInterface(this, aIID); } /** * Callback when mozilla wants to open a new window */ @Override public nsIWebBrowserChrome createWindow(nsIWebBrowserChrome parent, long flags) { if (getBrowserFactory() == null) { return parent; } //we disable attaching on creation for fixing deadlocks JBrowserComponent<?> browser; if (parent instanceof JBrowserComponent<?>) { browser = getBrowserFactory().createDisplayableBrowser((JBrowserComponent<?>) parent, false, flags); } else { browser = getBrowserFactory().createDisplayableBrowser(null, false, flags); } //wait for peer creation while (!browser.getComponent().isDisplayable()) { try { Thread.sleep(100); } catch (InterruptedException e) { //ignoring } } //and now attaching browser browser.getBrowserManager().getWindowCreator().attachBrowser(browser, flags); return (NativeBrowser) browser; } /** * Creates a mozilla browser and adds it into a Swing window. * The Swing window must be already created and realized!! * (i.e. after addNotify()) */ @Override public void attachBrowser(JBrowserComponent<?> browserComponent, long chromeFlags) { assert isMozillaThread(); if (!browserComponent.getComponent().isDisplayable()) { return; } if (!(browserComponent instanceof NativeBrowser)) { throw new IllegalStateException("Browsr component must implements NativeBrowser inteface"); } NativeBrowser browser = (NativeBrowser) browserComponent; synchronized (attachedBrowsers) { if (attachedBrowsers.contains(browser)) { return; } attachedBrowsers.add(browser); } if (chromeFlags == CHROME_DEFAULT) { chromeFlags = CHROME_ALL; } //create new webbrowser component nsIWebBrowser webBrowser = create("@mozilla.org/embedding/browser/nsWebBrowser;1", nsIWebBrowser.class); //$NON-NLS-1$ //create and set our embedding implementation browser.setWebBrowser(webBrowser); browser.setChromeFlags(chromeFlags); webBrowser.setContainerWindow(browser); //set flag whether displaying html content or chrome content boolean isChromeContent = (browser.getChromeFlags() & nsIWebBrowserChrome.CHROME_OPENAS_CHROME) != 0; nsIDocShellTreeItem item = qi(webBrowser, nsIDocShellTreeItem.class); item.setItemType( isChromeContent ? nsIDocShellTreeItem.typeChromeWrapper : nsIDocShellTreeItem.typeContentWrapper); //get dimension of the mozilla area. Usually, the widget does not //have the correct bounds at this stage yet, so use defaults Rectangle dim = browserComponent.getComponent().getBounds(); nsIBaseWindow baseWindow = qi(webBrowser, nsIBaseWindow.class); //create the native mozilla area baseWindow.initWindow(browserComponent.getHandle(), 0, 0, 0, dim.width, dim.height); baseWindow.create(); // bind the dom listener nsIDOMWindow2 domWin = qi(webBrowser.getContentDOMWindow(), nsIDOMWindow2.class); nsIDOMEventTarget et = domWin.getWindowRoot(); DOMAdapter domAdapter = new DOMAdapter(browserComponent); for (String ev : DOMAdapter.hookedEvents) { et.addEventListener(ev, domAdapter, false); } //-put dom-adapter to map domAdapters.put(browserComponent, domAdapter); browser.onBrowserAttached(); } /** * Remove mozilla browser from Swing window, and then * destroys the browser. The Swing window will continue * to exist. */ @Override public void detachBrowser(JBrowserComponent<?> browserComponent) { assert isMozillaThread(); if (!(browserComponent instanceof NativeBrowser)) { throw new IllegalStateException("Browsr component must implements NativeBrowser inteface"); } NativeBrowser browser = (NativeBrowser) browserComponent; synchronized (attachedBrowsers) { if (!attachedBrowsers.contains(browser)) { return; } attachedBrowsers.remove(browser); } nsIWebBrowser webBrowser = browser.getWebBrowser(); DOMAdapter domAdapter = domAdapters.get(browserComponent); if (domAdapter != null) { nsIDOMWindow2 domWin = qi(webBrowser.getContentDOMWindow(), nsIDOMWindow2.class); nsIDOMEventTarget et = domWin.getWindowRoot(); if (et != null) { for (String ev : DOMAdapter.hookedEvents) { et.removeEventListener(ev, domAdapter, false); } } } webBrowser.setParentURIContentListener(null); browserComponent.onBrowserDetached(); nsIBaseWindow baseWindow = qi(webBrowser, nsIBaseWindow.class); baseWindow.destroy(); webBrowser.setContainerWindow(null); } }
⏎ ru/atomation/jbrowser/impl/JBrowserWindowCreator.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, 8561👍, 1💬
Popular Posts:
What Is poi-scratchpad-3.5.jar? poi-scratchpad-3.5.jar is one of the JAR files for Apache POI 3.5, w...
Smack is an Open Source XMPP (Jabber) client library for instant messaging and presence. A pure Java...
Oracle Business Intelligence (BI) Beans enables developers to productively build business intelligen...
ZooKeeper is a centralized service for maintaining configuration information, naming, providing dist...
JAX-WS is an API for building web services and clients. It is the next generation Web Services API r...