/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * The contents of this file are subject to the Netscape Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s): 
 */

#include "nsISupports.idl"
#include "domstubs.idl"

interface nsIHelperAppLauncher;
interface nsILocalFile;

/**
 * nsIHelperAppLauncherDialog
 * ==========================
 * This interface is used to display a confirmatino dialog before
 * launching a "helper app" to handle content not handled by
 * Mozilla.
 *
 * Usage:  Clients (of which there is one: the nsIExternalHelperAppService
 * implementation in mozilla/uriloader/exthandler) create an instance of
 * this interface (using the contract ID) and then call the show() method.
 *
 * The dialog is shown non-modally.  The implementation of the dialog
 * will access methods of the nsIHelperAppLauncher passed in to show()
 * in order to cause a "save to disk" or "open using" action.
 *
 * Note: The promptForSaveToFile and showProgressDialog methods are
 *       obsolescent.  Caller(s) will be converted to use specific
 *       file-picker and progress-dialog interfaces.
 */

[scriptable, uuid(d7ebddf0-4c84-11d4-807a-00600811a9c3)]
interface nsIHelperAppLauncherDialog : nsISupports {
    // Show confirmation dialog for launching application (or "save to
    // disk") for content specified by aLauncher.
    void show( in nsIHelperAppLauncher aLauncher, in nsISupports aContext );
	
	// invoke a save to file dialog instead of the full fledged helper app dialog.
	// aDefaultFileName --> default file name to provide (can be null)
	// aSuggestedFileExtension --> sugested file extension
	// aFileLocation --> return value for the file location
	nsILocalFile promptForSaveToFile(in nsISupports aWindowContext, in wstring aDefaultFile, in wstring aSuggestedFileExtension );

	void showProgressDialog(in nsIHelperAppLauncher aLauncher, in nsISupports aContext);
};


%{C++
#define NS_IHELPERAPPLAUNCHERDLG_CONTRACTID    "@mozilla.org/helperapplauncherdialog;1"
#define NS_IHELPERAPPLAUNCHERDLG_CLASSNAME "Mozilla Helper App Launcher Confirmation Dialog"
%}
