Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
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 (322)
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, ≈34🔥, 1💬
Popular Posts:
How to download and install JDK (Java Development Kit) 1.4? If you want to write Java applications, ...
JDK 11 java.sql.jmod is the JMOD file for JDK 11 SQL (Structured Query Language) module. JDK 11 SQL ...
ANTLR is a powerful parser generator for multiple programming languages including Java. ANTLR contai...
commons-collections4-4.2 -sources.jaris the source JAR file for Apache Commons Collections 4.2, whic...
How to download and install ojdbc7.jar for Oracle 12c R1? ojdbc8.jar for Oracle 12c R1 is a Java 7 a...