Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java218
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
+ + "}";
+}
+}

Back to the top