/* -*- Mode: C++; tab-width: 2; 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"

[scriptable, uuid(a63f70c0-148b-11d3-9333-00104ba0fd40)]
interface nsIPrompt : nsISupports
{
    /**
     * Puts up an alert dialog with an OK button.
     */
    void alert(in wstring dialogTitle,
               in wstring text);

    /**
     * Puts up an alert dialog with an OK button.
     */
    void alertCheck(in wstring dialogTitle,
                    in wstring text,
                    in wstring checkMsg,
                    out boolean checkValue);

    /**
     * Puts up a dialog with OK and Cancel buttons.
     * @return true for OK, false for Cancel
     */
    boolean confirm(in wstring dialogTitle,
                    in wstring text);

    /**
     * Puts up a dialog with OK and Cancel buttons, and
     * a message with a single checkbox.
     * @return true for OK, false for Cancel
     */
    boolean confirmCheck(in wstring dialogTitle,
                         in wstring text,
                         in wstring checkMsg,
                         out boolean checkValue);

    /**
     * Values for the savePassword parameter to prompt, promptPassword and
     * promptUsernameAndPassword.
     */
    const PRUint32 SAVE_PASSWORD_NEVER             = 0;
    const PRUint32 SAVE_PASSWORD_FOR_SESSION       = 1;
    const PRUint32 SAVE_PASSWORD_PERMANENTLY       = 2;

    /**
     * Puts up a text input dialog with OK and Cancel buttons.
     * @return true for OK, false for Cancel
     */
    boolean prompt(in wstring dialogTitle,
                   in wstring text,
                   in wstring passwordRealm,
                   in PRUint32 savePassword,
                   in wstring defaultText, 
                   out wstring result);

    /**
     * Puts up a username/password dialog with OK and Cancel buttons.
     * @return true for OK, false for Cancel
     */
    boolean promptUsernameAndPassword(in wstring dialogTitle,
                                      in wstring text,
                                      in wstring passwordRealm,
                                      in PRUint32 savePassword,
                                      out wstring user, 
                                      out wstring pwd);

    /**
     * Puts up a password dialog with OK and Cancel buttons.
     * @return true for OK, false for Cancel
     */
    boolean promptPassword(in wstring dialogTitle,
                           in wstring text,
                           in wstring passwordRealm,
                           in PRUint32 savePassword,
                           out wstring pwd);
    
    /**
     * Puts up a dialog box which has a list box of strings
     */                                               
    boolean select(in wstring dialogTitle,
                   in wstring text,
                   in  PRUint32 count,
                   [array, size_is(count)] in wstring selectList,
                   out long outSelection);

    /**
     * Put up a universal dialog
     */
    void universalDialog(in wstring titleMessage,
                         in wstring dialogTitle, /* e.g., alert, confirm, prompt, prompt password */
                         in wstring text, /* main message for dialog */
                         in wstring checkboxMsg, /* message for checkbox */
                         in wstring button0Text, /* text for first button */
                         in wstring button1Text, /* text for second button */
                         in wstring button2Text, /* text for third button */
                         in wstring button3Text, /* text for fourth button */
                         in wstring editfield1Msg, /*message for first edit field */
                         in wstring editfield2Msg, /* message for second edit field */
                         inout wstring editfield1Value, /* initial and final value for first edit field */
                         inout wstring editfield2Value, /* initial and final value for second edit field */
                         in wstring iconURL, /* url of icon to be displayed in dialog */
                         inout boolean checkboxState, /* initial and final state of checkbox */
                         in PRInt32 numberButtons, /* total number of buttons (0 to 4) */
                         in PRInt32 numberEditfields, /* total number of edit fields (0 to 2) */
                         in PRInt32 editField1Password, /* ??? */
                         out PRInt32 buttonPressed); /* number of button that was pressed (0 to 3) */
};
