aboutsummaryrefslogblamecommitdiffstats
path: root/lib/prompts.js
blob: ac21c4953f43ddc7b73b788390f6cb928cdad295 (plain) (tree)

















































































                                                                               
/*global exports: false, require: false, console: false */
/*jslint onevar: false */
// Released under the MIT/X11 license
// http://www.opensource.org/licenses/mit-license.php
"use strict";
// ==============================================================
var {Cc,Ci} = require("chrome");
// just for JSLINT var Cc, Ci = {};
var promptTitle = "Bugzilla Triage Script";

/**
 * general prompts for a string method
 *
 * @return String with the password
 */
exports.prompt = function prompt(prompt, defaultValue) {
    var stringValue = {
        value: defaultValue ? defaultValue : ""
    };

    var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
            .getService(Ci.nsIPromptService);
    var result = prompts.prompt(null, promptTitle, prompt,
            stringValue, null, {});
    if (result) {
        return stringValue.value;
    } else {
        return undefined;
    }
};

/**
 * returns password with a special password
 *
 * @return String with the password
 */
exports.promptPassword = function promptPassword(prompt) {
    if (!prompt) { // either undefined or null
        prompt = "Enter password:";
    }
    var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
            .getService(Ci.nsIPromptService);
    var password = {
        value : ""
    }; // default the password to pass
    var check = {
        value : true
    }; // default the checkbox to true
    var result = prompts.promptPassword(null, "Bugzilla Triage Script", prompt,
            password, null, check);
    // result is true if OK was pressed, false if cancel was pressed.
    // password.value is set if OK was pressed.
    // The checkbox is not displayed.
    if (result) {
        return password.value ? password.value : null;
    } else {
        return undefined;
    }
};

/**
 * YES/NO prompt; returns boolean or null (for Cancel)
 * https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIPromptService
 */
exports.promptYesNoCancel = function promptOKNoCancel(prompt) {
    if (!prompt) { // either undefined or null
        console.error("Prompt is required!");
        return undefined;
    }
    var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
            .getService(Ci.nsIPromptService);

    var result = prompts.confirmEx(null, "Bugzilla Triage Script", prompt,
            prompts.STD_YES_NO_BUTTONS, null, null, null, null, {});
    if (result === 0) {
        return true;
    } else if (result === 1) {
        return false;
    } else {
        return null;
    }
};