Browser conventions allow spawning new browser windows.
Things that can trigger a new browser window include the following:
- The user right-clicks a link and selects Open in New Window from the context menu (note that you must build this functionality yourself).
- The user holds down Shift while clicking a link.
- The user clicks a link that has a named target for which no browser currently exists.
When the user performs an action within the browser that spawns a new browser window, any OpenWindowListeners are first notified. OpenWindowListener declares one method:
public void open(WindowEvent event)
As with CloseWindowListener, the three WindowEvent fields (browser, location, and field) are null when passed to open(), and the widget field inherited from TypedEvent contains a reference to the current browser.
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.OpenWindowListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class OpenWindowListenerUsing {
public static void main(String[] args) {
final Display display = new Display();
Shell shell = new Shell(display);
Browser browser = new Browser(shell, SWT.NONE);
browser.setBounds(5, 5, 600, 600);
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent event) {
Shell shell = new Shell(display);
shell.setText("New Window");
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
event.browser = browser;
}
});
browser.setUrl("http://java2s.com");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}