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, ≈27🔥, 1💬
Popular Posts:
What Is jms.jar? I heard it's related to JMS (Java Message Service) 1.1? The if you have an jms.jar ...
Where Can I see Java Source Code files for Xerces Java 2.11.2? Here are Java Source Code files for X...
SLF4J API is a simple API that allows to plug in any desired logging library at deployment time. Her...
Apache BCEL Source Code Files are inside the Apache BCEL source package file like bcel-6.5.0-src.zip...
Java Cryptography Extension 1.6 JAR File Size and Download Location: File name: jce.jar, jce-1.6.jar...