home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 January / 01_02.iso / software / netscape62win / mail.xpi / bin / chrome / messenger.jar / content / messenger / widgetglue.js < prev   
Text File  |  2001-08-15  |  8KB  |  257 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.  * Contributor(s):
  21.  *   Jan Varga (varga@utcru.sk)
  22.  *   Hσkan Waara (hwaara@chello.se)
  23.  */
  24.  
  25. /*
  26.  * widget-specific wrapper glue. There should be one function for every
  27.  * widget/menu item, which gets some context (like the current selection)
  28.  * and then calls a function/command in commandglue
  29.  */
  30.  
  31. //The eventual goal is for this file to go away and its contents to be brought into
  32. //mailWindowOverlay.js.  This is currently being done.
  33.  
  34. //NOTE: gMessengerBundle must be defined and set or this Overlay won't work
  35.  
  36. function ConvertDOMListToResourceArray(nodeList)
  37. {
  38.     var result = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
  39.  
  40.     for (var i=0; i<nodeList.length; i++) {
  41.         result.AppendElement(nodeList[i].resource);
  42.     }
  43.  
  44.     return result;
  45. }
  46.  
  47. function GetSelectedFolderURI()
  48. {
  49.     var folderOutliner = GetFolderOutliner();
  50.     var selection = folderOutliner.outlinerBoxObject.selection;
  51.     if (selection.count == 1)
  52.     {
  53.         var startIndex = {};
  54.         var endIndex = {};
  55.         selection.getRangeAt(0, startIndex, endIndex);
  56.         var folderResource = GetFolderResource(folderOutliner, startIndex.value);
  57.         return folderResource.Value;
  58.     }
  59.  
  60.     return null;
  61. }
  62.  
  63. function MsgRenameFolder() 
  64. {
  65.     var preselectedURI = GetSelectedFolderURI();
  66.     var folderOutliner = GetFolderOutliner();
  67.  
  68.     var name = GetFolderNameFromUri(preselectedURI, folderOutliner);
  69.  
  70.     dump("preselectedURI = " + preselectedURI + "\n");
  71.     var dialog = window.openDialog(
  72.                  "chrome://messenger/content/renameFolderDialog.xul",
  73.                  "newFolder",
  74.                  "chrome,titlebar,modal",
  75.                  {preselectedURI: preselectedURI, 
  76.                   okCallback: RenameFolder, name: name});
  77. }
  78.  
  79. function RenameFolder(name,uri)
  80. {
  81.     dump("uri,name = " + uri + "," + name + "\n");
  82.     var folderOutliner = GetFolderOutliner();
  83.     if (folderOutliner)
  84.     {
  85.     if (uri && (uri != "") && name && (name != "")) {
  86.                 var selectedFolder = GetResourceFromUri(uri);
  87.                 try
  88.                 {
  89.                     messenger.RenameFolder(GetFolderDatasource(), selectedFolder, name);
  90.                 }
  91.                 catch(e)
  92.                 {
  93.                     throw(e); // so that the dialog does not automatically close
  94.                     dump ("Exception : RenameFolder \n");
  95.                 }
  96.  
  97.                 ClearThreadPane();
  98.                 ClearMessagePane();
  99.                 folderOutliner.outlinerBoxObject.selection.clearSelection();
  100.         }
  101.         else {
  102.                 dump("no name or nothing selected\n");
  103.         }   
  104.     }
  105.     else {
  106.     dump("no folder tree\n");
  107.     }
  108. }
  109.  
  110. function MsgEmptyTrash() 
  111. {
  112.     var folderOutliner = GetFolderOutliner();
  113.     var startIndex = {};
  114.     var endIndex = {};
  115.     folderOutliner.outlinerBoxObject.selection.getRangeAt(0, startIndex, endIndex);
  116.     if (startIndex.value >= 0)
  117.     {
  118.         var folderResource = GetFolderResource(folderOutliner, startIndex.value);
  119.         try {
  120.             messenger.EmptyTrash(GetFolderDatasource(), folderResource);
  121.         }
  122.             catch(e)
  123.         {  
  124.             dump ("Exception : messenger.EmptyTrash \n");
  125.         }
  126.     }
  127. }
  128.  
  129. function MsgCompactFolder(isAll) 
  130. {
  131.   // Get the selected folders.
  132.   var selectedFolders = GetSelectedMsgFolders();
  133.  
  134.   if (selectedFolders.length == 1)
  135.   {
  136.     var selectedFolder = selectedFolders[0];
  137.     var resource = selectedFolder.QueryInterface(Components.interfaces.nsIRDFResource);
  138.  
  139.     if (selectedFolder.server.type != "imap") //can be local only
  140.     {
  141.       var msgfolder = resource.QueryInterface(Components.interfaces.nsIMsgFolder);
  142.       var expungedBytes = msgfolder.expungedBytes;
  143.  
  144.       if (expungedBytes > 0)
  145.       { 
  146.         if (gDBView)
  147.         {
  148.           gCurrentlyDisplayedMessage = gDBView.currentlyDisplayedMessage;
  149.         }
  150.  
  151.         ClearThreadPaneSelection();
  152.         ClearThreadPane();
  153.         ClearMessagePane();
  154.       }
  155.       else
  156.       {
  157.         if (!isAll)  //you have one local folder with no room to compact
  158.           return;
  159.       }
  160.     } 
  161.     try
  162.     {
  163.       messenger.CompactFolder(GetFolderDatasource(), resource, isAll);
  164.     }
  165.     catch(ex)
  166.     {
  167.       dump("Exception : messenger.CompactFolder : " + ex + "\n");
  168.     }
  169.   }
  170. }
  171.  
  172. function MsgFolderProperties() 
  173. {
  174.     var preselectedURI = GetSelectedFolderURI();
  175.     var serverType = GetMsgFolderFromUri(preselectedURI).server.type;
  176.     var folderOutliner = GetFolderOutliner();
  177.  
  178.     var name = GetFolderNameFromUri(preselectedURI, folderOutliner);
  179.  
  180.     var windowTitle = gMessengerBundle.getString("folderProperties");
  181.     var dialog = window.openDialog(
  182.                     "chrome://messenger/content/folderProps.xul",
  183.                     "",
  184.                     "chrome,centerscreen,titlebar,modal",
  185.                     {preselectedURI:preselectedURI, serverType:serverType,
  186.                     msgWindow:msgWindow, title:windowTitle,
  187.                     okCallback:FolderProperties, 
  188.                     tabID:"", tabIndex:0, name:name});
  189. }
  190.  
  191. function FolderProperties(name, uri)
  192. {
  193. }
  194.  
  195. function MsgToggleMessagePane()
  196. {
  197.     //OnClickThreadAndMessagePaneSplitter is based on the value before the splitter is toggled.
  198.     OnClickThreadAndMessagePaneSplitterGrippy();
  199.   MsgToggleSplitter("threadpane-splitter");
  200. }
  201.  
  202. function MsgToggleFolderPane()
  203. {
  204.     MsgToggleSplitter("sidebarsplitter");
  205. }
  206.  
  207. function MsgToggleSplitter(id)
  208. {
  209.     var splitter = document.getElementById(id);
  210.     var state = splitter.getAttribute("state");
  211.     if (state == "collapsed")
  212.         splitter.setAttribute("state", null);
  213.     else
  214.         splitter.setAttribute("state", "collapsed")
  215. }
  216.  
  217.  
  218. function NotifyQuitApplication()
  219. {
  220.     var ObserverService = Components.classes["@mozilla.org/observer-service;1"].getService();
  221.     ObserverService = ObserverService.QueryInterface(Components.interfaces.nsIObserverService);
  222.     if (ObserverService)
  223.     {
  224.         try 
  225.         {
  226.             ObserverService.Notify(null, "quit-application", null);
  227.         } 
  228.         catch (ex) 
  229.         {
  230.             // dump("no observer found \n");
  231.         }
  232.     }
  233. }
  234.  
  235. function LastToClose()
  236. {
  237.     var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService();
  238.     var    windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
  239.     var enumerator = windowManagerInterface.getEnumerator( null );
  240.     var count = 0;
  241.  
  242.     while ( enumerator.hasMoreElements() && count < 2 )
  243.     {
  244.         var  windowToClose = enumerator.getNext();
  245.         count++;
  246.     }
  247.     if (count == 1)
  248.         return true;
  249.     else
  250.         return false;
  251. }
  252.  
  253. function MsgSetFolderCharset() 
  254. {
  255.   MsgFolderProperties() 
  256. }
  257.