/******************************************************************************* * Copyright (c) 2003, 2009 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.swt.browser; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; /** * A WindowEvent is sent by a {@link 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

* * *

Second Browser

* * * @see CloseWindowListener * @see OpenWindowListener * @see VisibilityWindowListener * @see Sample code and further information * * @since 3.0 */ public class WindowEvent extends TypedEvent { /** * Specifies whether the platform requires the user to provide a * Browser to handle the new window. * * @since 3.1 */ public boolean required; /** * Browser provided by the application. */ public Browser browser; /** * Requested location for the Shell hosting the Browser. * It is null if no location has been requested. */ public Point location; /** * 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. */ public Point size; /** * Specifies whether the Shell hosting the Browser should * display an address bar. * * @since 3.1 */ public boolean addressBar; /** * Specifies whether the Shell hosting the Browser should * display a menu bar. Note that this is always true on OS X. * * @since 3.1 */ public boolean menuBar; /** * Specifies whether the Shell hosting the Browser should * display a status bar. * * @since 3.1 */ public boolean statusBar; /** * Specifies whether the Shell hosting the Browser should * display a tool bar. * * @since 3.1 */ public boolean toolBar; static final long serialVersionUID = 3617851997387174969L; /** * Constructs a new instance of this class. * * @param widget the widget that fired the event * * @since 3.5 */ public WindowEvent(Widget widget) { super(widget); } /** * Returns a string containing a concise, human-readable * description of the receiver. * * @return a string representation of the event */ @Override public String toString() { String string = super.toString (); return string.substring (0, string.length() - 1) // remove trailing '}' + " required=" + required + " browser=" + browser + " location=" + location + " size=" + size + " addressBar=" + addressBar + " menuBar=" + menuBar + " statusBar=" + statusBar + " toolBar=" + toolBar + "}"; } }