home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / mozil06.zip / bin / chrome / messenger.jar / content / messenger / widgetglue.js < prev   
Text File  |  2001-02-14  |  9KB  |  294 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  2.  * The contents of this file are subject to the Netscape Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/NPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is Mozilla Communicator client code, released
  13.  * March 31, 1998.
  14.  * 
  15.  * The Initial Developer of the Original Code is Netscape
  16.  * Communications Corporation. Portions created by Netscape are
  17.  * Copyright (C) 1998-1999 Netscape Communications Corporation. All
  18.  * Rights Reserved.
  19.  */
  20.  
  21. /*
  22.  * widget-specific wrapper glue. There should be one function for every
  23.  * widget/menu item, which gets some context (like the current selection)
  24.  * and then calls a function/command in commandglue
  25.  */
  26.  
  27. //The eventual goal is for this file to go away and its contents to be brought into
  28. //mailWindowOverlay.js.  This is currently being done.
  29.  
  30.  
  31.  
  32. function ConvertDOMListToResourceArray(nodeList)
  33. {
  34.     var result = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
  35.  
  36.     for (var i=0; i<nodeList.length; i++) {
  37.         result.AppendElement(nodeList[i].resource);
  38.     }
  39.  
  40.     return result;
  41. }
  42.  
  43.  
  44.  
  45. function GetSelectedFolderURI()
  46. {
  47.     var uri = null;
  48.     var selectedFolder = null;
  49.     try {
  50.         var folderTree = GetFolderTree(); 
  51.         var selectedFolderList = folderTree.selectedItems;
  52.     
  53.         //  you can only select one folder / server to add new folder / subscribe to
  54.         if (selectedFolderList.length == 1) {
  55.             selectedFolder = selectedFolderList[0];
  56.         }
  57.         else {
  58.             //dump("number of selected folder was " + selectedFolderList.length + "\n");
  59.         }
  60.     }
  61.     catch (ex) {
  62.         // dump("failed to get the selected folder\n");
  63.         uri = null;
  64.     }
  65.  
  66.     try {
  67.                if (selectedFolder) {
  68.             uri = selectedFolder.getAttribute('id');
  69.             // dump("folder to preselect: " + preselectedURI + "\n");
  70.         }
  71.     }
  72.     catch (ex) {
  73.         uri = null;
  74.     }
  75.  
  76.     return uri;
  77. }
  78.  
  79.  
  80. function MsgRenameFolder() 
  81. {
  82.     var preselectedURI = GetSelectedFolderURI();
  83.     var folderTree = GetFolderTree();
  84.  
  85.     var name = GetFolderNameFromUri(preselectedURI, folderTree);
  86.  
  87.     dump("preselectedURI = " + preselectedURI + "\n");
  88.     var windowTitle = Bundle.GetStringFromName("renameFolderDialogTitle");
  89.     var dialog = window.openDialog(
  90.                     "chrome://messenger/content/renameFolderNameDialog.xul",
  91.                     "newFolder",
  92.                     "chrome,titlebar,modal",
  93.                 {preselectedURI:preselectedURI, title:windowTitle,
  94.                     okCallback:RenameFolder, name:name});
  95. }
  96.  
  97. function RenameFolder(name,uri)
  98. {
  99.     dump("uri,name = " + uri + "," + name + "\n");
  100.     var folderTree = GetFolderTree();
  101.     if (folderTree)
  102.     {
  103.     if (uri && (uri != "") && name && (name != "")) {
  104.                 var selectedFolder = GetResourceFromUri(uri);
  105.                 folderTree.clearItemSelection();
  106.                 try
  107.                 {
  108.                     messenger.RenameFolder(GetFolderDatasource(), selectedFolder, name);
  109.                 }
  110.                 catch(e)
  111.                 {
  112.                     dump ("Exception : RenameFolder \n");
  113.                 }
  114.  
  115.         }
  116.         else {
  117.                 dump("no name or nothing selected\n");
  118.         }   
  119.     }
  120.     else {
  121.     dump("no folder tree\n");
  122.     }
  123. }
  124.  
  125. function MsgEmptyTrash() 
  126. {
  127.     var tree = GetFolderTree();
  128.     if (tree)
  129.     {
  130.         var folderList = tree.selectedItems;
  131.         if (folderList)
  132.         {
  133.             var folder;
  134.             folder = folderList[0];
  135.             if (folder)
  136.             {
  137.                 var trashUri = GetSelectTrashUri(folder);
  138.                 if (trashUri)
  139.                 {
  140.                     var trashElement = document.getElementById(trashUri);
  141.                     if (trashElement)
  142.                     {
  143.                         dump ('found trash folder\n');
  144.                         trashElement.setAttribute('open','');
  145.                     }
  146.                     var trashSelected = IsSpecialFolderSelected('Trash');
  147.                     if(trashSelected)
  148.                     {
  149.                         tree.clearItemSelection();
  150.                         RefreshThreadTreeView();
  151.                     }
  152.                     try {
  153.                           messenger.EmptyTrash(tree.database, folder.resource);
  154.                       }
  155.                       catch(e)
  156.                        {  
  157.                           dump ("Exception : messenger.EmptyTrash \n");
  158.                        }
  159.                     if (trashSelected)
  160.                     {
  161.                         trashElement = document.getElementById(trashUri);
  162.                         if (trashElement)
  163.                             ChangeSelection(tree, trashElement);
  164.                     }
  165.                 }
  166.             }
  167.         }
  168.     }
  169. }
  170.  
  171. function MsgCompactFolder() 
  172. {
  173.     //get the selected elements
  174.     var tree = GetFolderTree();
  175.     if (tree)
  176.     {
  177.         var folderList = tree.selectedItems;
  178.         if (folderList)
  179.         {
  180.             var messageUri = "";
  181.             var selctedFolderUri = "";
  182.             var isImap = false;
  183.             if (folderList.length == 1)
  184.             {
  185.                 selectedFolderUri = folderList[0].getAttribute('id');
  186.                 var threadTree = GetThreadTree();
  187.                 var messageList = threadTree.selectedItems;
  188.                 if (messageList && messageList.length == 1)
  189.                     messageUri = messageList[0].getAttribute('id');
  190.                 if (selectedFolderUri.indexOf("imap:") != -1)
  191.                 {
  192.                     isImap = true;
  193.                 }
  194.                 else
  195.                 {
  196.                     ClearThreadTreeSelection();
  197.                     ClearMessagePane();
  198.                 }
  199.             }
  200.             var i;
  201.             var folder;
  202.             for(i = 0; i < folderList.length; i++)
  203.             {
  204.                 folder = folderList[i];
  205.                 if (folder)
  206.                 {
  207.                     folderuri = folder.getAttribute('id');
  208.                     dump(folderuri + "\n");
  209.                     dump("folder = " + folder.localName + "\n"); 
  210.                     try
  211.                     {
  212.                       messenger.CompactFolder(tree.database, folder.resource);
  213.                     }
  214.                     catch(e)
  215.                     {
  216.                       dump ("Exception : messenger.CompactFolder \n");
  217.                     }
  218.                 }
  219.             }
  220.             if (!isImap && selectedFolderUri && selectedFolderUri != "")
  221.             {
  222.                 /* this doesn't work; local compact is now an async operation
  223.                 dump("selected folder = " + selectedFolderUri + "\n");
  224.                 var selectedFolder =
  225.                     document.getElementById(selectedFolderUri);
  226.                 ChangeSelection(tree, selectedFolder);
  227.                 */
  228.                 tree.clearItemSelection();
  229.             }
  230.         }
  231.     }
  232. }
  233.  
  234.  
  235. function MsgToggleMessagePane()
  236. {
  237.     //OnClickThreadAndMessagePaneSplitter is based on the value before the splitter is toggled.
  238.     OnClickThreadAndMessagePaneSplitter();
  239.     MsgToggleSplitter("threadpane-splitter");
  240. }
  241.  
  242. function MsgToggleFolderPane()
  243. {
  244.     MsgToggleSplitter("sidebarsplitter");
  245. }
  246.  
  247. function MsgToggleSplitter(id)
  248. {
  249.     var splitter = document.getElementById(id);
  250.     var state = splitter.getAttribute("state");
  251.     if (state == "collapsed")
  252.         splitter.setAttribute("state", null);
  253.     else
  254.         splitter.setAttribute("state", "collapsed")
  255. }
  256.  
  257.  
  258. function NotifyQuitApplication()
  259. {
  260.     var ObserverService = Components.classes["@mozilla.org/observer-service;1"].getService();
  261.     ObserverService = ObserverService.QueryInterface(Components.interfaces.nsIObserverService);
  262.     if (ObserverService)
  263.     {
  264.         try 
  265.         {
  266.             ObserverService.Notify(null, "quit-application", null);
  267.         } 
  268.         catch (ex) 
  269.         {
  270.             // dump("no observer found \n");
  271.         }
  272.     }
  273. }
  274.  
  275. function LastToClose()
  276. {
  277.     var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService();
  278.     var    windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
  279.     var enumerator = windowManagerInterface.getEnumerator( null );
  280.     var count = 0;
  281.  
  282.     while ( enumerator.hasMoreElements() && count < 2 )
  283.     {
  284.         var  windowToClose = enumerator.getNext();
  285.         count++;
  286.     }
  287.     if (count == 1)
  288.         return true;
  289.     else
  290.         return false;
  291. }
  292.  
  293.  
  294.