blob: 8dc165fa0ac8e44c2bd2ad848c48245d23843704 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2016 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.internal.*;
/**
* This listener interface may be implemented in order to receive
* a {@link WindowEvent} notification when a new {@link Browser}
* needs to be provided by the application.
*
* @see Browser#addOpenWindowListener(OpenWindowListener)
* @see Browser#removeOpenWindowListener(OpenWindowListener)
* @see CloseWindowListener
* @see VisibilityWindowListener
*
* @since 3.0
*/
@FunctionalInterface
public interface OpenWindowListener extends SWTEventListener {
/**
* This method is called when a new window needs to be created.
* <p>
* A particular <code>Browser</code> can be passed to the event.browser
* field to host the content of a new window.
* <p>
* A standalone system browser is used to host the new window
* if the event.required field value is <code>false</code> and if the event.browser
* field is left <code>null</code>. The event.required field
* is <code>true</code> on platforms that don't support a standalone system browser for
* new window requests.
* <p>
* The navigation is cancelled if the event.required field is set to
* <code>true</code> and the event.browser field is left <code>null</code>.</p>
* <p>The following fields in the <code>WindowEvent</code> apply:</p>
* <ul>
* <li>(in/out) {@link WindowEvent#required}: true if the platform requires the user to provide a
* <code>Browser</code> to handle the new window or false otherwise.
* <li>(out) {@link WindowEvent#browser}: the new (unique) <code>Browser</code> that will host the
* content of the new window.
* <li>(in) widget the <code>Browser</code> that is requesting to open a
* new window
* </ul>
*
* @param event the <code>WindowEvent</code> that needs to be passed a new
* <code>Browser</code> to handle the new window request
*
* @since 3.0
*/
public void open(WindowEvent event);
}