Package org.eclipse.swt.browser

## Class WindowEvent

- java.lang.Object
- - java.util.EventObject
  - - org.eclipse.swt.events.TypedEvent
    - - org.eclipse.swt.browser.WindowEvent

All Implemented Interfaces:
  `Serializable`

    public class WindowEvent
    extends TypedEvent

A `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.

            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 accommodate 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();
                            }
                    });
            }

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.

Main Browser

- User selects a link that opens in a new window or javascript requests a new window
- OpenWindowListener.open() notified
  - Application creates a new Shell and a second Browser inside that Shell
  - Application registers WindowListener's on that second Browser, such as VisibilityWindowListener
  - Application returns the second Browser as the host for the new window content

Second Browser

- VisibilityWindowListener.show() notified
  - Application sets navigation tool bar, status bar, menu bar and Shell size
  - Application makes the Shell hosting the second Browser visible
  - User now sees the new window

Since:
  3.0
See Also:
  `CloseWindowListener`, `OpenWindowListener`, `VisibilityWindowListener`, Sample code and further information, Serialized Form

### Field Summary

Fields
`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.

### Fields inherited from class org.eclipse.swt.events.TypedEvent

`data, display, time, widget`

### Fields inherited from class java.util.EventObject

`source`

### Constructor Summary

Constructors
`WindowEvent​(Widget widget)` Constructs a new instance of this class.

### Method Summary

All Methods Instance Methods Concrete Methods
`String` `toString()` Returns a string containing a concise, human-readable description of the receiver.

### Methods inherited from class java.util.EventObject

`getSource`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### required

    public boolean required

Specifies whether the platform requires the user to provide a `Browser` to handle the new window.

Since:
  3.1

#### browser

    public Browser browser

`Browser` provided by the application.

#### location

    public Point location

Requested location for the `Shell` hosting the `Browser`. It is `null` if no location has been requested.

#### size

    public Point size

Requested `Browser` size. The client area of the `Shell` hosting the `Browser` should be large enough to accommodate that size. It is `null` if no size has been requested.

#### addressBar

    public boolean addressBar

Specifies whether the `Shell` hosting the `Browser` should display an address bar.

Since:
  3.1

#### menuBar

    public boolean menuBar

Specifies whether the `Shell` hosting the `Browser` should display a menu bar. Note that this is always `true` on OS X.

Since:
  3.1

#### statusBar

    public boolean statusBar

Specifies whether the `Shell` hosting the `Browser` should display a status bar.

Since:
  3.1

#### toolBar

    public boolean toolBar

Specifies whether the `Shell` hosting the `Browser` should display a tool bar.

Since:
  3.1

### Constructor Detail

#### WindowEvent

    public WindowEvent​(Widget widget)

Constructs a new instance of this class.

Parameters:
  `widget` - the widget that fired the event
Since:
  3.5

### Method Detail

#### toString

    public String toString()

Returns a string containing a concise, human-readable description of the receiver.

Overrides:
  `toString` in class `TypedEvent`
Returns:
  a string representation of the event