mail3panewindowcommands.js

来自「现在很火的邮件客户端软件thunderbird的源码」· JavaScript 代码 · 共 1,151 行 · 第 1/3 页

JS
1,151
字号
# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-# ***** BEGIN LICENSE BLOCK *****# Version: MPL 1.1/GPL 2.0/LGPL 2.1## The contents of this file are subject to the Mozilla 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/MPL/## 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 the Initial Developer are Copyright (C) 1998-2000# the Initial Developer. All Rights Reserved.## Contributor(s):#   Jan Varga <varga@nixcorp.com>#   H錵an Waara (hwaara@chello.se)## Alternatively, the contents of this file may be used under the terms of# either the GNU General Public License Version 2 or later (the "GPL"), or# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),# in which case the provisions of the GPL or the LGPL are applicable instead# of those above. If you wish to allow use of your version of this file only# under the terms of either the GPL or the LGPL, and not to allow others to# use your version of this file under the terms of the MPL, indicate your# decision by deleting the provisions above and replace them with the notice# and other provisions required by the GPL or the LGPL. If you do not delete# the provisions above, a recipient may use your version of this file under# the terms of any one of the MPL, the GPL or the LGPL.## ***** END LICENSE BLOCK *****var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);var gMessengerBundle = document.getElementById("bundle_messenger");// Controller object for folder panevar FolderPaneController ={   supportsCommand: function(command)	{		switch ( command )		{			case "cmd_delete":			case "button_delete":			//case "cmd_selectAll": the folder pane currently only handles single selection			case "cmd_cut":			case "cmd_copy":			case "cmd_paste":				return true;							default:				return false;		}	},	isCommandEnabled: function(command)	{    if (IsFakeAccount())       return false;		switch ( command )		{			case "cmd_cut":			case "cmd_copy":			case "cmd_paste":				return false;			case "cmd_delete":			case "button_delete":			if ( command == "cmd_delete" )				goSetMenuValue(command, 'valueFolder');      var folderTree = GetFolderTree();      var startIndex = {};      var endIndex = {};      folderTree.view.selection.getRangeAt(0, startIndex, endIndex);      if (startIndex.value >= 0) {        var canDeleteThisFolder;				var specialFolder = null;				var isServer = null;				var serverType = null;				try {          var folderResource = GetFolderResource(folderTree, startIndex.value);          specialFolder = GetFolderAttribute(folderTree, folderResource, "SpecialFolder");          isServer = GetFolderAttribute(folderTree, folderResource, "IsServer");          serverType = GetFolderAttribute(folderTree, folderResource, "ServerType");          if (serverType == "nntp") {			     	if ( command == "cmd_delete" ) {					      goSetMenuValue(command, 'valueNewsgroup');				    	  goSetAccessKey(command, 'valueNewsgroupAccessKey');            }          }				}				catch (ex) {					//dump("specialFolder failure: " + ex + "\n");				}         if (specialFolder == "Inbox" || specialFolder == "Trash" || specialFolder == "Drafts" ||            specialFolder == "Sent" || specialFolder == "Templates" || specialFolder == "Unsent Messages" ||            (specialFolder == "Junk" && !CanRenameDeleteJunkMail(GetSelectedFolderURI())) || isServer == "true")          canDeleteThisFolder = false;        else          canDeleteThisFolder = true;        return canDeleteThisFolder && isCommandEnabled(command);      }			else				return false;			default:				return false;		}	},	doCommand: function(command)	{    // if the user invoked a key short cut then it is possible that we got here for a command which is    // really disabled. kick out if the command should be disabled.    if (!this.isCommandEnabled(command)) return;		switch ( command )		{			case "cmd_delete":			case "button_delete":				MsgDeleteFolder();				break;		}	},		onEvent: function(event)	{	}};// DefaultController object (handles commands when one of the trees does not have focus)var DefaultController ={   supportsCommand: function(command)	{		switch ( command )		{      case "cmd_createFilterFromPopup":			case "cmd_close":			case "cmd_reply":			case "button_reply":			case "cmd_replySender":			case "cmd_replyGroup":			case "cmd_replyall":			case "button_replyall":			case "cmd_forward":			case "button_forward":			case "cmd_forwardInline":			case "cmd_forwardAttachment":			case "cmd_editAsNew":      case "cmd_createFilterFromMenu":			case "cmd_delete":			case "button_delete":      case "button_junk":			case "cmd_shiftDelete":			case "cmd_nextMsg":      case "button_next":      case "button_previous":			case "cmd_nextUnreadMsg":			case "cmd_nextFlaggedMsg":			case "cmd_nextUnreadThread":			case "cmd_previousMsg":			case "cmd_previousUnreadMsg":			case "cmd_previousFlaggedMsg":      case "button_goForward":      case "button_goBack":      case "cmd_goForward":      case "cmd_goBack":      case "cmd_goStartPage":			case "cmd_viewAllMsgs":			case "cmd_viewUnreadMsgs":      case "cmd_viewThreadsWithUnread":      case "cmd_viewWatchedThreadsWithUnread":      case "cmd_viewIgnoredThreads":      case "cmd_undo":      case "cmd_redo":			case "cmd_expandAllThreads":			case "cmd_collapseAllThreads":			case "cmd_renameFolder":			case "cmd_sendUnsentMsgs":			case "cmd_openMessage":      case "button_print":			case "cmd_print":			case "cmd_printpreview":			case "cmd_printSetup":			case "cmd_saveAsFile":			case "cmd_saveAsTemplate":      case "cmd_properties":			case "cmd_viewPageSource":			case "cmd_setFolderCharset":			case "cmd_reload":      case "button_getNewMessages":			case "cmd_getNewMessages":      case "cmd_getMsgsForAuthAccounts":			case "cmd_getNextNMessages":			case "cmd_find":			case "cmd_findAgain":			case "cmd_findPrevious":      case "cmd_search":      case "button_mark":      case "cmd_tag":			case "cmd_markAsRead":			case "cmd_markAllRead":			case "cmd_markThreadAsRead":      case "cmd_markReadByDate":			case "cmd_markAsFlagged":			case "cmd_markAsJunk":			case "cmd_markAsNotJunk":      case "cmd_recalculateJunkScore":      case "cmd_applyFilters":      case "cmd_runJunkControls":      case "cmd_deleteJunk":      case "button_file":			case "cmd_file":			case "cmd_emptyTrash":			case "cmd_compactFolder":  	  case "cmd_settingsOffline":      case "cmd_close":      case "cmd_selectAll":      case "cmd_selectThread":      case "cmd_moveToFolderAgain":				return true;      case "cmd_downloadFlagged":      case "cmd_downloadSelected":      case "cmd_synchronizeOffline":        return MailOfflineMgr.isOnline();      case "cmd_watchThread":      case "cmd_killThread":        return(isNewsURI(GetFirstSelectedMessage()));			default:				return false;		}	},  isCommandEnabled: function(command)  {    var enabled = new Object();    enabled.value = false;    var checkStatus = new Object();    if (IsFakeAccount())       return false;    switch ( command )    {      case "cmd_delete":        UpdateDeleteCommand();        // fall through      case "button_delete":        if (gDBView)          gDBView.getCommandStatus(nsMsgViewCommandType.deleteMsg, enabled, checkStatus);        return enabled.value;      case "cmd_shiftDelete":        if (gDBView)          gDBView.getCommandStatus(nsMsgViewCommandType.deleteNoTrash, enabled, checkStatus);        return enabled.value;      case "button_junk":        UpdateJunkToolbarButton();        if (gDBView)          gDBView.getCommandStatus(nsMsgViewCommandType.junk, enabled, checkStatus);        return enabled.value;      case "cmd_killThread":        return GetNumSelectedMessages() > 0;      case "cmd_watchThread":        if (gDBView)          gDBView.getCommandStatus(nsMsgViewCommandType.toggleThreadWatched, enabled, checkStatus);        return enabled.value;      case "cmd_createFilterFromPopup":      case "cmd_createFilterFromMenu":        var loadedFolder = GetLoadedMsgFolder();        if (!(loadedFolder && loadedFolder.server.canHaveFilters))          return false;   // else fall thru      case "cmd_saveAsFile":      case "cmd_saveAsTemplate":        if (GetNumSelectedMessages() > 1)          return false;   // else fall thru      case "cmd_reply":      case "button_reply":      case "cmd_replySender":      case "cmd_replyGroup":      case "cmd_replyall":      case "button_replyall":      case "cmd_forward":      case "button_forward":      case "cmd_forwardInline":      case "cmd_forwardAttachment":      case "cmd_editAsNew":      case "cmd_openMessage":      case "button_print":      case "cmd_print":      case "cmd_viewPageSource":      case "cmd_reload":        if (GetNumSelectedMessages() > 0)        {          if (gDBView)          {            gDBView.getCommandStatus(nsMsgViewCommandType.cmdRequiringMsgBody, enabled, checkStatus);            return enabled.value;          }        }        return false;      case "cmd_printpreview":	      if ( GetNumSelectedMessages() == 1 && gDBView)        {           gDBView.getCommandStatus(nsMsgViewCommandType.cmdRequiringMsgBody, enabled, checkStatus);           return enabled.value;        }        return false;      case "cmd_printSetup":        return true;      case "cmd_markAsFlagged":      case "button_file":      case "cmd_file":        return (GetNumSelectedMessages() > 0 );      case "cmd_markAsJunk":      case "cmd_markAsNotJunk":      case "cmd_recalculateJunkScore":        // can't do news on junk yet.        return (GetNumSelectedMessages() > 0 && !isNewsURI(GetFirstSelectedMessage()));      case "cmd_applyFilters":        if (gDBView)          gDBView.getCommandStatus(nsMsgViewCommandType.applyFilters, enabled, checkStatus);        return enabled.value;      case "cmd_runJunkControls":        if (gDBView)          gDBView.getCommandStatus(nsMsgViewCommandType.runJunkControls, enabled, checkStatus);        return enabled.value;      case "cmd_deleteJunk":        if (gDBView)          gDBView.getCommandStatus(nsMsgViewCommandType.deleteJunk, enabled, checkStatus);        return enabled.value;      case "button_mark":      case "cmd_tag":      case "cmd_markAsRead":      case "cmd_markThreadAsRead":        return GetNumSelectedMessages() > 0;      case "button_previous":      case "button_next":        return IsViewNavigationItemEnabled();      case "cmd_nextMsg":      case "cmd_nextUnreadMsg":      case "cmd_nextUnreadThread":      case "cmd_previousMsg":      case "cmd_previousUnreadMsg":        return IsViewNavigationItemEnabled();      case "button_goForward":      case "button_goBack":      case "cmd_goForward":      case "cmd_goBack":        if (gDBView)          enabled.value = gDBView.navigateStatus((command == "cmd_goBack" || command == "button_goBack") ? nsMsgNavigationType.back : nsMsgNavigationType.forward);        return enabled.value;      case "cmd_goStartPage":        return pref.getBoolPref("mailnews.start_page.enabled") && !IsMessagePaneCollapsed();      case "cmd_markAllRead":      case "cmd_markReadByDate":        return IsFolderSelected();      case "cmd_find":      case "cmd_findAgain":      case "cmd_findPrevious":        return IsMessageDisplayedInMessagePane();        break;      case "cmd_search":        return IsCanSearchMessagesEnabled();      case "cmd_selectAll":        return gDBView != null;      // these are enabled on when we are in threaded mode      case "cmd_selectThread":        if (GetNumSelectedMessages() <= 0) return false;      case "cmd_expandAllThreads":      case "cmd_collapseAllThreads":        if (!gDBView || !gDBView.supportsThreading)           return false;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?