diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WindowEvent.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WindowEvent.java | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WindowEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WindowEvent.java new file mode 100644 index 0000000000..ae7551533a --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WindowEvent.java @@ -0,0 +1,218 @@ +/******************************************************************************* + * Copyright (c) 2003, 2009 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.swt.browser; + +import org.eclipse.swt.widgets.*; +import org.eclipse.swt.events.*; +import org.eclipse.swt.graphics.*; + +/** + * A <code>WindowEvent</code> 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 + * <code>window.open</code> or <code>window.close</code> gets executed by + * a <code>Browser</code>. + * + * <p> + * The following example shows how <code>WindowEvent</code>'s are typically + * handled. + * + * <code><pre> + * 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(); + * } + * }); + * } + * </pre></code> + * + * 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. + * + * <p>Main Browser + * <ul> + * <li>User selects a link that opens in a new window or javascript requests a new window</li> + * <li>OpenWindowListener.open() notified</li> + * <ul> + * <li>Application creates a new Shell and a second Browser inside that Shell</li> + * <li>Application registers WindowListener's on that second Browser, such as VisibilityWindowListener</li> + * <li>Application returns the second Browser as the host for the new window content</li> + * </ul> + * </ul> + * + * <p>Second Browser + * <ul> + * <li>VisibilityWindowListener.show() notified</li> + * <ul> + * <li>Application sets navigation tool bar, status bar, menu bar and Shell size + * <li>Application makes the Shell hosting the second Browser visible + * <li>User now sees the new window + * </ul> + * </ul> + * + * @see CloseWindowListener + * @see OpenWindowListener + * @see VisibilityWindowListener + * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> + * + * @since 3.0 + */ +public class WindowEvent extends TypedEvent { + + /** + * Specifies whether the platform requires the user to provide a + * <code>Browser</code> to handle the new window. + * + * @since 3.1 + */ + public boolean required; + + + /** + * <code>Browser</code> provided by the application. + */ + public Browser browser; + + /** + * Requested location for the <code>Shell</code> hosting the <code>Browser</code>. + * It is <code>null</code> if no location has been requested. + */ + public Point location; + + /** + * Requested <code>Browser</code> size. The client area of the <code>Shell</code> + * hosting the <code>Browser</code> should be large enough to accommodate that size. + * It is <code>null</code> if no size has been requested. + */ + public Point size; + + /** + * Specifies whether the <code>Shell</code> hosting the <code>Browser</code> should + * display an address bar. + * + * @since 3.1 + */ + public boolean addressBar; + + /** + * Specifies whether the <code>Shell</code> hosting the <code>Browser</code> should + * display a menu bar. Note that this is always <code>true</code> on OS X. + * + * @since 3.1 + */ + public boolean menuBar; + + /** + * Specifies whether the <code>Shell</code> hosting the <code>Browser</code> should + * display a status bar. + * + * @since 3.1 + */ + public boolean statusBar; + + /** + * Specifies whether the <code>Shell</code> hosting the <code>Browser</code> 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 + */ +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 + + "}"; +} +} |