blob: e6c2874336ca6725543761f70e05d2af248dc089 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2016 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.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:
* <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);
}