/* -*- 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 text);

    /**
     * Puts up a dialog with OK and Cancel buttons.
     * @return true for OK, false for Cancel
     */
    boolean confirm(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 text,
                         in wstring checkMsg,
                         out boolean checkValue);

    /**
     * Puts up a text input dialog with OK and Cancel buttons.
     * @return true for OK, false for Cancel
     */
    boolean prompt(in wstring text,
                   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 text,
                                      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 text, 
                           in wstring title,
                           out wstring pwd);
    
    /**
     * Puts up a dialog box which has a list box of strings
     */                                               
    boolean select(in wstring inDialogTitle,
                   in wstring inMsg,
                   in  PRUint32 inCount,
                   [array, size_is(inCount)] in wstring inList,
                   out long outSelection);

    /**
     * Put up a universal dialog
     */
    void universalDialog(in wstring inTitleMessage,
                         in wstring inDialogTitle, /* e.g., alert, confirm, prompt, prompt password */
                         in wstring inMsg, /* main message for dialog */
                         in wstring inCheckboxMsg, /* message for checkbox */
                         in wstring inButton0Text, /* text for first button */
                         in wstring inButton1Text, /* text for second button */
                         in wstring inButton2Text, /* text for third button */
                         in wstring inButton3Text, /* text for fourth button */
                         in wstring inEditfield1Msg, /*message for first edit field */
                         in wstring inEditfield2Msg, /* message for second edit field */
                         inout wstring inoutEditfield1Value, /* initial and final value for first edit field */
                         inout wstring inoutEditfield2Value, /* initial and final value for second edit field */
                         in wstring inIConURL, /* url of icon to be displayed in dialog */
                         inout boolean inoutCheckboxState, /* initial and final state of checkbox */
                         in PRInt32 inNumberButtons, /* total number of buttons (0 to 4) */
                         in PRInt32 inNumberEditfields, /* total number of edit fields (0 to 2) */
                         in PRInt32 inEditField1Password, /* ??? */
                         out PRInt32 outButtonPressed); /* number of button that was pressed (0 to 3) */
};
