import java.awt.BorderLayout;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import com.teamdev.jxbrowser.WebBrowser;
import com.teamdev.jxbrowser.WebBrowserFactory;
import com.teamdev.jxbrowser.event.LocationEvent;
import com.teamdev.jxbrowser.event.RequestAdapter;
import com.teamdev.jxbrowser.event.RequestListener;
import com.teamdev.jxbrowser.event.StateEvent;
import com.teamdev.xpcom.Xpcom;
public class SubmitDemo extends JFrame {
private static final String THE_URL = "http://www.google.com";
final AtomicBoolean mutex = new AtomicBoolean(false);
RequestListener requestListener = new RequestAdapter() {
@Override
public void locationChanged(final LocationEvent e) {
final String curURL = e.getRequestUrlName();
if(!curURL.equals("about:blank") && ! (curURL.startsWith(THE_URL) && curURL.length() < 25) /* if com.ua, com.in com.de etc */ ) {
// now is submit invoked in google search form in this demo
System.out.println("The submit URL is:" + curURL);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
e.getWebBrowser().stop();
}
});
}
}
@Override
public void stateChanged(StateEvent e) {
if (!e.isLoadingDocument() && e.isNetwork()) {
synchronized (mutex) {
mutex.set(true);
mutex.notifyAll();
}
}
}
};
void myMain() throws Throwable {
final WebBrowser browser = WebBrowserFactory.getInstance()
.createBrowser();
setLayout(new BorderLayout());
add(browser.getComponent(), BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(640, 480);
browser.addRequestListener(requestListener);
browser.navigate(THE_URL);
// wait wile loading finish
synchronized (mutex) {
if(!mutex.get()) {
mutex.wait(1000);
}
}
mutex.set(false);
}
public static void main(String[] args) {
Xpcom.initialize(Xpcom.AWT);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SubmitDemo demo = new SubmitDemo();
try {
demo.myMain();
} catch (Throwable e) {
e.printStackTrace();
}
}
});
}
}
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import org.mozilla.interfaces.nsIDOMElement;
import org.mozilla.interfaces.nsIDOMEvent;
import org.mozilla.interfaces.nsIDOMEventListener;
import org.mozilla.interfaces.nsIDOMEventTarget;
import org.mozilla.interfaces.nsIDOMWindow;
import org.mozilla.interfaces.nsIDOMWindow2;
import org.mozilla.interfaces.nsISupports;
import org.mozilla.interfaces.nsIWebBrowser;
import org.mozilla.interfaces.nsIWebBrowserFocus;
import org.mozilla.interfaces.nsIWebNavigation;
import org.mozilla.xpcom.Mozilla;
import com.teamdev.jxbrowser.WebBrowser;
import com.teamdev.jxbrowser.WebBrowserFactory;
import com.teamdev.jxbrowser.mozilla.MozillaWebBrowser;
import com.teamdev.xpcom.Xpcom;
public class ButtonClickDemo extends JFrame {
private static final String CONTENT = "<html>"
+ "<head><title>Button Click Demo</title></head>"
+ " <body>"
+ " <h1>Button Click demo</h1>"
+ " <form id=f_id>"
+ " <input id=btn_id name=Submit value=Submit type=\"submit\"/>"
+ " </form>"
+ " </body>"
+ "</html>";
private static final String CONTENT_1 = "<h1>You was click on submit button</h1>";
private void addClickListener(final WebBrowser webBrowser) {
final nsIWebBrowser browser = ((MozillaWebBrowser) webBrowser)
.getWebBrowser();
Xpcom.invokeLater(new Runnable() {
public void run() {
final nsIDOMWindow domWindow = browser.getContentDOMWindow();
final nsIDOMWindow2 domWindow2 = (nsIDOMWindow2) domWindow
.queryInterface(nsIDOMWindow2.NS_IDOMWINDOW2_IID);
nsIDOMEventTarget domEventTarget = domWindow2.getWindowRoot();
domEventTarget.addEventListener("click",
new nsIDOMEventListener() {
public void handleEvent(nsIDOMEvent event) {
nsIWebBrowserFocus focus = (nsIWebBrowserFocus) browser
.queryInterface(nsIWebBrowserFocus.NS_IWEBBROWSERFOCUS_IID);
nsIDOMElement element = focus
.getFocusedElement();
if (element.getAttribute("type").equals(
"submit")) {
nsIWebNavigation nav = (nsIWebNavigation) browser
.queryInterface(nsIWebNavigation.NS_IWEBNAVIGATION_IID);
nav.stop(nsIWebNavigation.STOP_ALL);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
webBrowser.setContent(CONTENT_1,
"text/html");
}
});
}
}
public nsISupports queryInterface(String uuid) {
return Mozilla.queryInterface(this, uuid);
}
}, true);
}
});
}
void myMain() throws Throwable {
final WebBrowser browser = WebBrowserFactory.getInstance()
.createBrowser();
setLayout(new BorderLayout());
add(browser.getComponent(), BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(640, 480);
addClickListener(browser);
browser.setContent(CONTENT, "text/html");
}
public static void main(String[] args) {
Xpcom.initialize(Xpcom.AWT);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ButtonClickDemo demo = new ButtonClickDemo();
try {
demo.myMain();
} catch (Throwable e) {
e.printStackTrace();
}
}
});
}
}