public class WindowEvent extends TypedEvent
WindowEvent is sent by a Browser when
a new window needs to be created or when an existing window needs to be
closed. This notification occurs when a javascript command such as
window.open or window.close gets executed by
a Browser.
The following example shows how WindowEvent's are typically
handled.
The following notifications are emitted when the user selects a hyperlink that targets a new window
or as the result of a javascript that executes window.open.
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Main Window");
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
initialize(display, browser);
shell.open();
browser.setUrl("http://www.eclipse.org");
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
static void initialize(final Display display, Browser browser) {
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent event) {
// Certain platforms can provide a default full browser.
// simply return in that case if the application prefers
// the default full browser to the embedded one set below.
if (!event.required) return;
// Embed the new window
Shell shell = new Shell(display);
shell.setText("New Window");
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
initialize(display, browser);
event.browser = browser;
}
});
browser.addVisibilityWindowListener(new VisibilityWindowListener() {
public void hide(WindowEvent event) {
Browser browser = (Browser)event.widget;
Shell shell = browser.getShell();
shell.setVisible(false);
}
public void show(WindowEvent event) {
Browser browser = (Browser)event.widget;
Shell shell = browser.getShell();
if (event.location != null) shell.setLocation(event.location);
if (event.size != null) {
Point size = event.size;
shell.setSize(shell.computeSize(size.x, size.y));
}
if (event.addressBar || event.menuBar || event.statusBar || event.toolBar) {
// Create widgets for the address bar, menu bar, status bar and/or tool bar
// leave enough space in the Shell to accomodate a Browser of the size
// given by event.size
}
shell.open();
}
});
browser.addCloseWindowListener(new CloseWindowListener() {
public void close(WindowEvent event) {
Browser browser = (Browser)event.widget;
Shell shell = browser.getShell();
shell.close();
}
});
}
Main Browser
Second Browser
CloseWindowListener,
OpenWindowListener,
VisibilityWindowListener,
Serialized Form| Modifier and Type | Field and Description |
|---|---|
boolean |
addressBar
Specifies whether the
Shell hosting the Browser should
display an address bar. |
Browser |
browser
Browser provided by the application. |
Point |
location
Requested location for the
Shell hosting the Browser. |
boolean |
menuBar
Specifies whether the
Shell hosting the Browser should
display a menu bar. |
boolean |
required
Specifies whether the platform requires the user to provide a
Browser to handle the new window. |
Point |
size
Requested
Browser size. |
boolean |
statusBar
Specifies whether the
Shell hosting the Browser should
display a status bar. |
boolean |
toolBar
Specifies whether the
Shell hosting the Browser should
display a tool bar. |
data, display, time, widgetsourcepublic boolean required
Browser to handle the new window.public Browser browser
Browser provided by the application.public Point location
Shell hosting the Browser.
It is null if no location has been requested.public Point size
Browser size. The client area of the Shell
hosting the Browser should be large enough to accomodate that size.
It is null if no size has been requested.public boolean addressBar
Shell hosting the Browser should
display an address bar.public boolean menuBar
Shell hosting the Browser should
display a menu bar.public boolean statusBar
Shell hosting the Browser should
display a status bar.public boolean toolBar
Shell hosting the Browser should
display a tool bar.Guidelines for using Eclipse APIs. Copyright (c) IBM Corp. and others 2000, 2006. All rights reserved.