gecko-dev/mailnews/base/resources/content/widgetglue.js
1999-09-14 06:28:05 +00:00

624 lines
15 KiB
JavaScript

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* 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) 1998-1999 Netscape Communications Corporation. All
* Rights Reserved.
*/
/*
* widget-specific wrapper glue. There should be one function for every
* widget/menu item, which gets some context (like the current selection)
* and then calls a function/command in commandglue
*/
var viewShowAll =0;
var viewShowRead = 1;
var viewShowUnread =2;
var viewShowWatched = 3;
function MsgLoadNewsMessage(url)
{
dump("\n\nMsgLoadNewsMessage from XUL\n");
OpenURL(url);
}
function MsgHome(url)
{
var toolkitCore = XPAppCoresManager.Find("ToolkitCore");
if (!toolkitCore) {
toolkitCore = new ToolkitCore();
if (toolkitCore) {
toolkitCore.Init("ToolkitCore");
}
}
if (toolkitCore) {
toolkitCore.ShowWindow(url, window);
}
}
function MsgNewMessage()
{
dump("\n\nMsgNewMessage from XUL\n");
NewMessage();
}
function MsgGetMessage()
{
GetNewMessages();
}
function MsgDeleteMessage(fromToolbar)
{
dump("\nMsgDeleteMessage from XUL\n");
//dump("from toolbar? " + fromToolbar + "\n");
var tree = GetThreadTree();
if(tree) {
var srcFolder = GetThreadTreeFolder();
// if from the toolbar, return right away if this is a news message
// only allow cancel from the menu: "Edit | Cancel / Delete Message"
if (fromToolbar) {
uri = srcFolder.getAttribute('ref');
//dump("uri[0:6]=" + uri.substring(0,6) + "\n");
if (uri.substring(0,6) == "news:/") {
//dump("delete ignored!\n");
return;
}
}
dump("tree is valid\n");
//get the selected elements
var messageList = tree.selectedItems;
var nextMessage = GetNextMessageAfterDelete(messageList);
//get the current folder
messenger.DeleteMessages(tree, srcFolder, messageList);
SelectNextMessage(nextMessage);
}
}
function MsgDeleteFolder()
{
//get the selected elements
var tree = GetFolderTree();
var folderList = tree.selectedItems;
var i;
var folder, parent;
for(i = 0; i < folderList.length; i++)
{
folder = folderList[i];
folderuri = folder.getAttribute('id');
dump(folderuri);
parent = folder.parentNode.parentNode;
var parenturi = parent.getAttribute('id');
if(parenturi)
dump(parenturi);
else
dump("No parenturi");
dump("folder = " + folder.nodeName + "\n");
dump("parent = " + parent.nodeName + "\n");
messenger.DeleteFolders(tree.database, parent, folder);
}
}
function MsgReplyMessage()
{
dump("\nMsgReplyMessage from XUL\n");
ComposeMessage(1, 0);
}
function MsgReplyToAllMessage()
{
dump("\nMsgReplyToAllMessage from XUL\n");
ComposeMessage(2, 0);
}
function MsgForwardMessage()
{
dump("\nMsgForwardMessage from XUL\n");
MsgForwardAsInline();
}
function MsgForwardAsAttachment()
{
dump("\nMsgForwardAsAttachment from XUL\n");
ComposeMessage(4, 0);
}
function MsgForwardAsInline()
{
dump("\nMsgForwardAsInline from XUL\n");
ComposeMessage(3, 0);
}
function MsgCopyMessage(destFolder)
{
// Get the id for the folder we're copying into
destUri = destFolder.getAttribute('id');
dump(destUri);
var tree = GetThreadTree();
if(tree)
{
//Get the selected messages to copy
var messageList = tree.selectedItems;
//get the current folder
// dump('In copy messages. Num Selected Items = ' + messageList.length);
// dump('\n');
var srcFolder = GetThreadTreeFolder();
messenger.CopyMessages(tree.database, srcFolder, destFolder, messageList, false);
}
}
function MsgMoveMessage(destFolder)
{
// Get the id for the folder we're copying into
destUri = destFolder.getAttribute('id');
dump(destUri);
var tree = GetThreadTree();
if(tree)
{
//Get the selected messages to copy
var messageList = tree.selectedItems;
//get the current folder
var srcFolder = GetThreadTreeFolder();
messenger.CopyMessages(tree.database, srcFolder, destFolder, messageList, true);
}
}
function MsgViewAllMsgs()
{
dump("MsgViewAllMsgs");
if(messageView)
{
messageView.viewType = viewShowAll;
messageView.showThreads = false;
}
RefreshThreadTreeView();
}
function MsgViewUnreadMsg()
{
dump("MsgViewUnreadMsgs");
if(messageView)
{
messageView.viewType = viewShowUnread;
view.showThreads = false;
}
RefreshThreadTreeView();
}
function MsgViewAllThreadMsgs()
{
dump("MsgViewAllMessagesThreaded");
if(messageView)
{
view.viewType = viewShowAll;
view.showThreads = true;
}
RefreshThreadTreeView();
}
function MsgSortByDate()
{
SortThreadPane('DateColumn', 'http://home.netscape.com/NC-rdf#Date');
}
function MsgSortBySender()
{
SortThreadPane('AuthorColumn', 'http://home.netscape.com/NC-rdf#Sender');
}
function MsgSortByStatus()
{
SortThreadPane('StatusColumn', 'http://home.netscape.com/NC-rdf#Status');
}
function MsgSortBySubject()
{
SortThreadPane('SubjectColumn', 'http://home.netscape.com/NC-rdf#Subject');
}
function MsgNewFolder()
{
var folderTree = GetFolderTree();
var selectedFolderList = folderTree.selectedItems;
var selectedFolder = selectedFolderList[0];
if (selectedFolder)
{
var dialog = window.openDialog(
"chrome://messenger/content/newFolderNameDialog.xul",
"",
"chrome",
{title:"New Folder",
okCallback:NewFolder});
}
}
function NewFolder(name)
{
var folderTree = GetFolderTree();
var selectedFolderList = folderTree.selectedItems;
var selectedFolder = selectedFolderList[0];
messenger.NewFolder(folderTree.database, selectedFolder, name);
}
function MsgAccountManager()
{
dump('Opening account manager..\n');
window.open("chrome://messenger/content/AccountManager.xul", "AccountManager", "chrome");
}
function MsgSubscribe()
{
dump('open subscribe window.\n');
window.openDialog("chrome://messenger/content/subscribe.xul", "subscribe", "chrome");
}
function MsgAccountWizard()
{
window.openDialog("chrome://messenger/content/AccountWizard.xul", "wizard", "chrome, modal,height=300,width=400");
}
function MsgOpenAttachment() {}
function MsgSaveAsFile()
{
dump("\MsgSaveAsFile from XUL\n");
var tree = GetThreadTree();
//get the selected elements
var messageList = tree.selectedItems;
if (messageList && messageList.length == 1)
{
var uri = messageList[0].getAttribute('id');
dump (uri);
if (uri)
messenger.saveAs(uri, true);
}
}
function MsgSaveAsTemplate()
{
dump("\MsgSaveAsTemplate from XUL\n");
var tree = GetThreadTree();
//get the selected elements
var messageList = tree.selectedItems;
if (messageList && messageList.length == 1)
{
var uri = messageList[0].getAttribute('id');
dump (uri);
if (uri)
messenger.saveAs(uri, false);
}
}
function MsgSendUnsentMsg()
{
messenger.SendUnsentMessages();
}
function MsgLoadFirstDraft()
{
messenger.LoadFirstDraft();
}
function MsgUpdateMsgCount() {}
function MsgRenameFolder()
{
var tree = GetFolderTree();
if (tree)
{
var folderList = tree.selectedItems;
if (folderList && folderList.length == 1)
{
var folder = folderList[0];
if (folder)
{
var dialog = window.openDialog(
"chrome://messenger/content/newFolderNameDialog.xul",
"",
"chrome",
{title:"Rename Folder",
okCallback:RenameFolder});
}
}
}
}
function RenameFolder(name)
{
var tree = GetFolderTree();
if (tree)
{
var folderList = tree.selectedItems;
if (folderList && folderList.length == 1)
{
var folder = folderList[0];
if (folder)
messenger.RenameFolder(tree.database, folder, name);
}
}
}
function MsgEmptyTrash()
{
var tree = GetFolderTree();
if (tree)
{
var folderList = tree.selectedItems;
if (folderList)
{
var folder;
folder = folderList[0];
if (folder)
{
messenger.EmptyTrash(tree.database, folder);
if(IsSpecialFolderSelected('Trash'))
{
RefreshThreadTreeView()
}
}
}
}
}
function MsgCompactFolder()
{
//get the selected elements
var tree = GetFolderTree();
if (tree)
{
var folderList = tree.selectedItems;
if (folderList)
{
var i;
var folder;
for(i = 0; i < folderList.length; i++)
{
folder = folderList[i];
if (folder)
{
folderuri = folder.getAttribute('id');
dump(folderuri);
dump("folder = " + folder.nodeName + "\n");
messenger.CompactFolder(tree.database, folder);
}
}
}
}
}
function MsgImport() {}
function MsgWorkOffline() {}
function MsgSynchronize() {}
function MsgGetSelectedMsg() {}
function MsgGetFlaggedMsg() {}
function MsgEditUndo()
{
messenger.Undo();
}
function MsgEditRedo()
{
messenger.Redo();
}
function MsgEditCut() {}
function MsgEditCopy() {}
function MsgEditPaste() {}
function MsgSelectAll() {}
function MsgSelectThread() {}
function MsgSelectFlaggedMsg() {}
function MsgFind() {}
function MsgFindAgain() {}
function MsgSearchMessages() {
window.openDialog("chrome://messenger/content/SearchDialog.xul", "SearchMail", "chrome");
}
function MsgFilters() {
window.openDialog("chrome://messenger/content/FilterListDialog.xul", "FilterDialog", "chrome");
}
function MsgToggleMessagePane()
{
MsgToggleSplitter("messagePaneSplitter");
}
function MsgToggleSplitter(id)
{
var splitter = document.getElementById("messagePaneSplitter");
var state = splitter.getAttribute("state");
if (state == "collapsed")
splitter.setAttribute("state", null);
else
splitter.setAttribute("state", "collapsed")
}
function MsgShowFolders()
{
}
function MsgFolderProperties() {}
function MsgShowMsgToolbar() {}
function MsgShowLocationbar() {}
function MsgSortByFlag() {}
function MsgSortByPriority() {}
function MsgSortBySize() {}
function MsgSortByThread() {}
function MsgSortByUnread() {}
function MsgSortByOrderReceived() {}
function MsgSortAscending() {}
function MsgSortDescending() {}
function MsgViewThreadsUnread() {}
function MsgViewWatchedThreadsUnread() {}
function MsgViewIgnoreThread() {}
function MsgViewAllHeaders() {}
function MsgViewNormalHeaders() {}
function MsgViewBriefHeaders() {}
function MsgViewAttachInline() {}
function MsgWrapLongLines() {}
function MsgIncreaseFont() {}
function MsgDecreaseFont() {}
function MsgReload() {}
function MsgShowImages() {}
function MsgRefresh() {}
function MsgStop() {}
function MsgViewPageSource() {}
function MsgViewPageInfo() {}
function MsgFirstUnreadMessage() {}
function MsgFirstFlaggedMessage() {}
function MsgNextMessage()
{
GoNextMessage(GoMessage, false);
}
function MsgNextUnreadMessage()
{
GoNextMessage(GoUnreadMessage, true);
}
function MsgNextFlaggedMessage()
{
GoNextMessage(GoFlaggedMessage, true);
}
function MsgPreviousMessage()
{
GoPreviousMessage(GoMessage, false);
}
function MsgPreviousUnreadMessage()
{
GoPreviousMessage(GoUnreadMessage, true);
}
function MsgPreviousFlaggedMessage()
{
GoPreviousMessage(GoFlaggedMessage, true);
}
function MsgGoBack() {}
function MsgGoForward() {}
function MsgEditMessageAsNew() {}
function MsgAddSenderToAddressBook() {}
function MsgAddAllToAddressBook() {}
function MsgMarkMsgAsRead(markRead)
{
dump("\MsgMarkMsgAsRead from XUL\n");
var tree = GetThreadTree();
//get the selected elements
var messageList = tree.selectedItems;
messenger.MarkMessagesRead(tree.database, messageList, markRead);
}
function MsgMarkThreadAsRead() {}
function MsgMarkByDate() {}
function MsgMarkAllRead()
{
var folderTree = GetFolderTree();;
var selectedFolderList = folderTree.selectedItems;
if(selectedFolderList.length > 0)
{
var selectedFolder = selectedFolderList[0];
messenger.MarkAllMessagesRead(folderTree.database, selectedFolder);
}
else {
dump("Nothing was selected\n");
}
}
function MsgMarkAsFlagged(markFlagged)
{
dump("\MsgMarkMsgAsFlagged from XUL\n");
var tree = GetThreadTree();
//get the selected elements
var messageList = tree.selectedItems;
messenger.MarkMessagesFlagged(tree.database, messageList, markFlagged);
}
function MsgIgnoreThread() {}
function MsgWatchThread() {}
var bindCount = 0;
function onStatus() {
var status = document.getElementById("Messenger:Status");
if ( status ) {
var text = status.getAttribute("value");
if ( text == "" ) {
text = defaultStatus;
}
var statusText = document.getElementById("statusText");
if ( statusText ) {
statusText.setAttribute( "value", text );
}
} else {
dump("Can't find status broadcaster!\n");
}
}
var startTime = 0;
function onProgress() {
var throbber = document.getElementById("Messenger:Throbber");
var meter = document.getElementById("Messenger:LoadingProgress");
if ( throbber && meter ) {
var busy = throbber.getAttribute("busy");
var wasBusy = meter.getAttribute("mode") == "undetermined" ? "true" : "false";
if ( busy == "true" ) {
if ( wasBusy == "false" ) {
// Remember when loading commenced.
startTime = (new Date()).getTime();
// Turn progress meter on.
meter.setAttribute("mode","undetermined");
}
// Update status bar.
} else if ( busy == "false" && wasBusy == "true" ) {
// Record page loading time.
var status = document.getElementById("Messenger:Status");
if ( status ) {
var elapsed = ( (new Date()).getTime() - startTime ) / 1000;
var msg = "Document: Done (" + elapsed + " secs)";
dump( msg + "\n" );
status.setAttribute("value",msg);
defaultStatus = msg;
}
// Turn progress meter off.
meter.setAttribute("mode","normal");
}
}
}
function dumpProgress() {
var broadcaster = document.getElementById("Messenger:LoadingProgress");
var meter = document.getElementById("meter");
dump( "bindCount=" + bindCount + "\n" );
dump( "broadcaster mode=" + broadcaster.getAttribute("mode") + "\n" );
dump( "broadcaster value=" + broadcaster.getAttribute("value") + "\n" );
dump( "meter mode=" + meter.getAttribute("mode") + "\n" );
dump( "meter value=" + meter.getAttribute("value") + "\n" );
}