258 lines
8.8 KiB
JavaScript
258 lines
8.8 KiB
JavaScript
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/*
|
|
* 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 Communicator client code,
|
|
* released March 31, 1998.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape Communications
|
|
* Corporation. Portions created by Netscape are
|
|
* Copyright (C) 2000 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
*/
|
|
|
|
function fillThreadPaneContextMenu()
|
|
{
|
|
var tree = GetThreadTree();
|
|
var selectedItems = tree.selectedItems;
|
|
var numSelected = selectedItems.length;
|
|
|
|
ShowMenuItem("threadPaneContext-openNewWindow", (numSelected <= 1));
|
|
EnableMenuItem("threadPaneContext-openNewWindow", false);
|
|
|
|
ShowMenuItem("threadPaneContext-editAsNew", (numSelected <= 1));
|
|
EnableMenuItem("threadPaneContext-editAsNew", false);
|
|
|
|
ShowMenuItem("threadPaneContext-sep-open", (numSelected <= 1));
|
|
|
|
ShowMenuItem("threadPaneContext-replySender", (numSelected <= 1));
|
|
EnableMenuItem("threadPaneContext-replySender", (numSelected == 1));
|
|
|
|
ShowMenuItem("threadPaneContext-replyAll", (numSelected <= 1));
|
|
EnableMenuItem("threadPaneContext-replyAll", (numSelected == 1));
|
|
|
|
ShowMenuItem("threadPaneContext-forward", true);
|
|
EnableMenuItem("threadPaneContext-forward", (numSelected > 0));
|
|
|
|
ShowMenuItem("threadPaneContext-sep-reply", true);
|
|
|
|
ShowMenuItem("threadPaneContext-moveMenu", true);
|
|
EnableMenuItem("threadPaneContext-moveMenu", (numSelected > 0));
|
|
|
|
ShowMenuItem("threadPaneContext-copyMenu", true);
|
|
EnableMenuItem("threadPaneContext-copyMenu", (numSelected > 0));
|
|
|
|
ShowMenuItem("threadPaneContext-saveAs", (numSelected <= 1));
|
|
EnableMenuItem("threadPaneContext-saveAs", (numSelected == 1));
|
|
|
|
ShowMenuItem("threadPaneContext-print", true);
|
|
EnableMenuItem("threadPaneContext-print", (numSelected > 0));
|
|
|
|
ShowMenuItem("threadPaneContext-delete", true);
|
|
EnableMenuItem("threadPaneContext-delete", (numSelected > 0));
|
|
|
|
ShowMenuItem("threadPaneContext-sep-edit", (numSelected <= 1));
|
|
|
|
ShowMenuItem("threadPaneContext-addSenderToAddressBook", (numSelected <= 1));
|
|
EnableMenuItem("threadPaneContext-addSenderToAddressBook", false);
|
|
|
|
ShowMenuItem("threadPaneContext-addAllToAddressBook", (numSelected <= 1));
|
|
EnableMenuItem("threadPaneContext-addAllToAddressBook", false);
|
|
|
|
return(true);
|
|
}
|
|
|
|
function fillFolderPaneContextMenu()
|
|
{
|
|
var tree = GetFolderTree();
|
|
var selectedItems = tree.selectedItems;
|
|
var numSelected = selectedItems.length;
|
|
|
|
var popupNode = document.getElementById('folderPaneContext');
|
|
|
|
var targetFolder = document.popupNode.parentNode.parentNode;
|
|
if (targetFolder.getAttribute('selected') != 'true')
|
|
{
|
|
tree.selectItem(targetFolder);
|
|
}
|
|
|
|
var isServer = targetFolder.getAttribute('IsServer') == 'true';
|
|
var serverType = targetFolder.getAttribute('ServerType');
|
|
var specialFolder = targetFolder.getAttribute('SpecialFolder');
|
|
|
|
ShowMenuItem("folderPaneContext-getMessages", (numSelected <= 1) && (isServer && (serverType != 'nntp')));
|
|
EnableMenuItem("folderPaneContext-getMessages", true);
|
|
|
|
ShowMenuItem("folderPaneContext-openNewWindow", (numSelected <= 1) && !isServer);
|
|
EnableMenuItem("folderPaneContext-openNewWindow", (false));
|
|
|
|
SetupRenameMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder);
|
|
SetupRemoveMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder);
|
|
|
|
ShowMenuItem("folderPaneContext-emptyTrash", (numSelected <= 1) && (specialFolder == 'Trash'));
|
|
EnableMenuItem("folderPaneContext-emptyTrash", true);
|
|
|
|
ShowMenuItem("folderPaneContext-sendUnsentMessages", (numSelected <= 1) && (specialFolder == 'Unsent Messages'));
|
|
EnableMenuItem("folderPaneContext-sendUnsentMessages", true);
|
|
|
|
ShowMenuItem("folderPaneContext-unsubscribe", (numSelected <= 1) && ((serverType == 'nntp') && !isServer));
|
|
EnableMenuItem("folderPaneContext-unsubscribe", false);
|
|
|
|
ShowMenuItem("folderPaneContext-markFolderRead", (numSelected <= 1) && ((serverType == 'nntp') && !isServer));
|
|
EnableMenuItem("folderPaneContext-markFolderRead", false);
|
|
|
|
ShowMenuItem("folderPaneContext-sep-edit", (numSelected <= 1));
|
|
|
|
SetupNewMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder);
|
|
|
|
ShowMenuItem("folderPaneContext-subscribe", (numSelected <= 1) && (serverType == 'nntp'));
|
|
EnableMenuItem("folderPaneContext-subscribe", true);
|
|
|
|
ShowMenuItem("folderPaneContext-sep-new", ((numSelected<=1) && (specialFolder != "Unsent Messages")));
|
|
|
|
ShowMenuItem("folderPaneContext-searchMessages", (numSelected<=1));
|
|
EnableMenuItem("folderPaneContext-searchMessages", false);
|
|
|
|
ShowMenuItem("folderPaneContext-sep-search", (numSelected<=1));
|
|
|
|
SetupPropertiesMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder);
|
|
return(true);
|
|
}
|
|
|
|
function SetupRenameMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder)
|
|
{
|
|
var isSpecialFolder = specialFolder != 'none';
|
|
var isMail = serverType != 'nntp';
|
|
var canRename = (targetFolder.getAttribute('CanRename') == "true");
|
|
|
|
ShowMenuItem("folderPaneContext-rename", (numSelected <= 1) && (isServer || canRename));
|
|
EnableMenuItem("folderPaneContext-rename", !isServer);
|
|
|
|
if(isServer)
|
|
{
|
|
if(isMail)
|
|
{
|
|
SetMenuItemValue("folderPaneContext-rename", Bundle.GetStringFromName("renameAccount"));
|
|
}
|
|
else
|
|
{
|
|
SetMenuItemValue("folderPaneContext-rename", Bundle.GetStringFromName("renameNewsAccount"));
|
|
}
|
|
}
|
|
else if(canRename)
|
|
{
|
|
SetMenuItemValue("folderPaneContext-rename", Bundle.GetStringFromName("renameFolder"));
|
|
}
|
|
}
|
|
|
|
function SetupRemoveMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder)
|
|
{
|
|
var isMail = serverType != 'nntp';
|
|
var isInbox = specialFolder == "Inbox";
|
|
var isTrash = specialFolder == "Trash";
|
|
var isUnsent = specialFolder == "Unsent Messages";
|
|
var showRemove = (numSelected <=1) && (isServer || (isMail && (!(isInbox || isTrash || isUnsent))));
|
|
|
|
|
|
ShowMenuItem("folderPaneContext-remove", showRemove);
|
|
EnableMenuItem("folderPaneContext-remove", false);
|
|
|
|
if(isServer)
|
|
{
|
|
if(isMail)
|
|
{
|
|
SetMenuItemValue("folderPaneContext-remove", Bundle.GetStringFromName("removeAccount"));
|
|
}
|
|
else
|
|
{
|
|
SetMenuItemValue("folderPaneContext-remove", Bundle.GetStringFromName("removeNewsAccount"));
|
|
}
|
|
}
|
|
else if(isMail && !(isInbox || isTrash || isUnsent))
|
|
{
|
|
SetMenuItemValue("folderPaneContext-remove", Bundle.GetStringFromName("removeFolder"));
|
|
}
|
|
}
|
|
|
|
function SetupNewMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder)
|
|
{
|
|
var canCreateNew = targetFolder.getAttribute('CanCreateSubfolders') == 'true';
|
|
var showNew = (numSelected <=1) && (serverType != 'nntp') && canCreateNew;
|
|
ShowMenuItem("folderPaneContext-new", showNew);
|
|
EnableMenuItem("folderPaneContext-new", true);
|
|
if(showNew)
|
|
{
|
|
if(isServer)
|
|
SetMenuItemValue("folderPaneContext-new", Bundle.GetStringFromName("newFolder"));
|
|
else
|
|
SetMenuItemValue("folderPaneContext-new", Bundle.GetStringFromName("newSubfolder"));
|
|
}
|
|
|
|
}
|
|
|
|
function SetupPropertiesMenuItem(targetFolder, numSelected, isServer, serverType, specialFolder)
|
|
{
|
|
ShowMenuItem("folderPaneContext-properties", (numSelected <=1));
|
|
EnableMenuItem("folderPaneContext-properties", false);
|
|
|
|
if(isServer)
|
|
{
|
|
SetMenuItemValue("folderPaneContext-properties", Bundle.GetStringFromName("accountProperties"));
|
|
}
|
|
else if(specialFolder == 'Inbox')
|
|
{
|
|
SetMenuItemValue("folderPaneContext-properties", Bundle.GetStringFromName("inboxProperties"));
|
|
}
|
|
else if(specialFolder == 'Trash')
|
|
{
|
|
SetMenuItemValue("folderPaneContext-properties", Bundle.GetStringFromName("trashProperties"));
|
|
}
|
|
else if(specialFolder == 'Unsent Messages')
|
|
{
|
|
SetMenuItemValue("folderPaneContext-properties", Bundle.GetStringFromName("unsentMessagesProperties"));
|
|
}
|
|
else if(serverType == 'nntp')
|
|
{
|
|
SetMenuItemValue("folderPaneContext-properties", Bundle.GetStringFromName("newsgroupProperties"));
|
|
}
|
|
else
|
|
{
|
|
SetMenuItemValue("folderPaneContext-properties", Bundle.GetStringFromName("folderProperties"));
|
|
}
|
|
|
|
}
|
|
|
|
function ShowMenuItem(id, showItem)
|
|
{
|
|
var item = document.getElementById(id);
|
|
var showing = (item.getAttribute('hidden') !='true');
|
|
if(item && (showItem != showing))
|
|
item.setAttribute('hidden', showItem ? '' : 'true');
|
|
}
|
|
|
|
function EnableMenuItem(id, enableItem)
|
|
{
|
|
var item = document.getElementById(id);
|
|
var enabled = (item.getAttribute('disabled') !='true');
|
|
if(item && (enableItem != enabled))
|
|
{
|
|
item.setAttribute('disabled', enableItem ? '' : 'true');
|
|
}
|
|
}
|
|
|
|
function SetMenuItemValue(id, value)
|
|
{
|
|
var item = document.getElementById(id);
|
|
if(item)
|
|
item.setAttribute('value', value);
|
|
|
|
} |