1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Components.utils.import("resource:///modules/mailServices.js");
Components.utils.import("resource://gre/modules/Services.jsm");
var dialog;
/**
* Pass in keyToEdit as a window argument to turn this dialog into an edit
* tag dialog.
*/
function onLoad()
{
let windowArgs = window.arguments[0];
dialog = {};
dialog.OKButton = document.documentElement.getButton("accept");
dialog.nameField = document.getElementById("name");
dialog.nameField.focus();
// call this when OK is pressed
dialog.okCallback = windowArgs.okCallback;
if (windowArgs.keyToEdit)
initializeForEditing(windowArgs.keyToEdit);
doEnabling();
}
/**
* Turn the new tag dialog into an edit existing tag dialog
*/
function initializeForEditing(aTagKey)
{
dialog.editTagKey = aTagKey;
// Change the title of the dialog
var messengerBundle = document.getElementById("bundle_messenger");
document.title = messengerBundle.getString("editTagTitle");
// override the OK button
document.documentElement.setAttribute("ondialogaccept", "return onOKEditTag();");
// extract the color and name for the current tag
document.getElementById("tagColorPicker").color = MailServices.tags.getColorForKey(aTagKey);
dialog.nameField.value = MailServices.tags.getTagForKey(aTagKey);
}
/**
* on OK handler for editing a new tag.
*/
function onOKEditTag()
{
// get the tag name of the current key we are editing
let existingTagName = MailServices.tags.getTagForKey(dialog.editTagKey);
// it's ok if the name didn't change
if (existingTagName != dialog.nameField.value)
{
// don't let the user edit a tag to the name of another existing tag
if (MailServices.tags.getKeyForTag(dialog.nameField.value))
{
alertForExistingTag();
return false; // abort the OK
}
MailServices.tags.setTagForKey(dialog.editTagKey, dialog.nameField.value);
}
MailServices.tags.setColorForKey(dialog.editTagKey, document.getElementById("tagColorPicker").color);
return dialog.okCallback();
}
/**
* on OK handler for creating a new tag. Alerts the user if a tag with
* the name already exists.
*/
function onOKNewTag()
{
var name = dialog.nameField.value;
if (MailServices.tags.getKeyForTag(name))
{
alertForExistingTag();
return false;
}
return dialog.okCallback(name, document.getElementById("tagColorPicker").color);
}
/**
* Alerts the user that they are trying to create a tag with a name that
* already exists.
*/
function alertForExistingTag()
{
var messengerBundle = document.getElementById("bundle_messenger");
var alertText = messengerBundle.getString("tagExists");
Services.prompt.alert(window, document.title, alertText);
}
function doEnabling()
{
dialog.OKButton.disabled = !dialog.nameField.value;
}
|