Files
Mozilla/mozilla/mailnews/base/resources/content/mailContextMenus.js
putterman%netscape.com 5047c978aa r=alecf. More work on context menus for 10881. This time it's the folder pane.
git-svn-id: svn://10.0.0.236/trunk@58565 18797224-902f-48f8-a5cc-f745e15eee43
2000-01-25 05:13:22 +00:00

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);
}