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

  1. /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public
  4.  * License Version 1.1 (the "License"); you may not use this file
  5.  * except in compliance with the License. You may obtain a copy of
  6.  * the License at http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the License is distributed on an "AS
  9.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  10.  * implied. See the License for the specific language governing
  11.  * rights and limitations under the License.
  12.  *
  13.  * The Original Code is Mozilla Communicator client code.
  14.  *
  15.  * The Initial Developer of the Original Code is Netscape Communications
  16.  * Corporation.  Portions created by Netscape are
  17.  * Copyright (C) 1998 Netscape Communications Corporation. All
  18.  * Rights Reserved.
  19.  *
  20.  * Contributor(s):
  21.  * Alec Flett <alecf@netscape.com>
  22.  */
  23.  
  24. var smtpService;
  25. var serverList;                 // the root <tree> node
  26.  
  27. var addButton;
  28. var editButton;
  29. var deleteButton;
  30. var setDefaultButton;
  31. var messengerStrings;
  32.  
  33. var hasEdited=false;            // whether any kind of edits have occured
  34.  
  35. // event handlersn
  36. function onLoad()
  37. {
  38.     if (!messengerStrings)
  39.         messengerStrings = srGetStrBundle("chrome://messenger/locale/messenger.properties");    
  40.     if (!smtpService)
  41.         smtpService = Components.classes["@mozilla.org/messengercompose/smtp;1"].getService(Components.interfaces.nsISmtpService);
  42.  
  43.  
  44.     serverList = document.getElementById("smtpTree");
  45.     addButton        = document.getElementById("addButton");
  46.     editButton       = document.getElementById("editButton");
  47.     deleteButton     = document.getElementById("deleteButton");
  48.     setDefaultButton = document.getElementById("setDefaultButton");
  49.     
  50.     refreshServerList();
  51.  
  52.     doSetOKCancel(onOk, 0);
  53. }
  54.  
  55. function onSelectionChange(event)
  56. {
  57.     updateButtons();
  58. }
  59.  
  60. function onDelete(event)
  61. {
  62.     var server = getSelectedServer();
  63.     if (!server) return;
  64.     smtpService.deleteSmtpServer(server);
  65.     refreshServerList();
  66. }
  67.  
  68. function onAdd(event)
  69. {
  70.     openServerEditor(null);
  71. }
  72.  
  73. function onEdit(event)
  74. {
  75.     if (serverList.selectedItems.length <= 0) return;
  76.  
  77.     var server = getSelectedServer();
  78.     openServerEditor(server);
  79. }
  80.  
  81. function onSetDefault(event)
  82. {
  83.     if (serverList.selectedItems.length <= 0) return;
  84.  
  85.     smtpService.defaultServer = getSelectedServer();
  86.     refreshServerList();
  87. }
  88.  
  89. function onOk()
  90. {
  91.     window.arguments[0].result = true;
  92.     window.close();
  93. }
  94.  
  95. function updateButtons()
  96. {
  97.     if (serverList.selectedItems.length <= 0) {
  98.         editButton.setAttribute("disabled", "true");
  99.         deleteButton.setAttribute("disabled", "true");
  100.         setDefaultButton.setAttribute("disabled", "true");
  101.     } else {
  102.         editButton.removeAttribute("disabled");
  103.         
  104.         // can't delete default server
  105.         var server = getSelectedServer();
  106.         if (smtpService.defaultServer == server) {
  107.             dump("Selected default server!\n");
  108.             setDefaultButton.setAttribute("disabled", "true");
  109.             deleteButton.setAttribute("disabled", "true");
  110.         }
  111.         else {
  112.             setDefaultButton.removeAttribute("disabled");
  113.             deleteButton.removeAttribute("disabled");
  114.         }
  115.     }
  116.  
  117. }
  118.  
  119. function refreshServerList()
  120. {
  121.     // save selection
  122.     var oldSelectedIds = new Array;
  123.     serverList.clearItemSelection();
  124.     var selectedItems = serverList.selectedItems;
  125.     for (var i=0; i< selectedItems.length; i++)
  126.         oldSelectedIds[i] = selectedItems[0].id;
  127.  
  128.     var treeChildren = document.getElementById("smtpTreeChildren");
  129.  
  130.     // remove all children
  131.     while (treeChildren.hasChildNodes())
  132.         treeChildren.removeChild(treeChildren.lastChild);
  133.  
  134.     var defaultServer = smtpService.defaultServer;
  135.     fillSmtpServers(treeChildren,smtpService.smtpServers, defaultServer);
  136.  
  137.     // restore selection
  138.     for (var i=0; i< oldSelectedIds.length; i++) {
  139.         var element = document.getElementById(oldSelectedIds[i]);
  140.         if (element)
  141.             serverList.selectItem(element);
  142.     }
  143. }
  144.  
  145. // helper functions
  146.  
  147. function fillSmtpServers(treechildren, servers, defaultServer)
  148. {
  149.     if (!treechildren) return;
  150.     if (!servers) return;
  151.  
  152.     var serverCount = servers.Count();
  153.     for (var i=0 ; i<serverCount; i++) {
  154.         var server = servers.QueryElementAt(i, Components.interfaces.nsISmtpServer);
  155.         var isDefault = (defaultServer.key == server.key);
  156.         var treeitem = createSmtpTreeItem(server, isDefault);
  157.         treechildren.appendChild(treeitem);
  158.     }
  159.  
  160. }
  161.  
  162. function createSmtpTreeItem(server, isDefault)
  163. {
  164.     var treeitem = document.createElement("treeitem");
  165.     var treerow = document.createElement("treerow");
  166.     var treecell = document.createElement("treecell");
  167.  
  168.     var hostname = server.hostname;
  169.     if (isDefault)
  170.         hostname += " " + messengerStrings.GetStringFromName("defaultServerTag");
  171.     
  172.     treecell.setAttribute("value", hostname);
  173.     treeitem.setAttribute("key", server.key);
  174.     // give it some unique id
  175.     treeitem.id = "smtpServer." + server.key;
  176.     treerow.appendChild(treecell);
  177.     treeitem.appendChild(treerow);
  178.  
  179.     return treeitem;
  180. }
  181.  
  182. function openServerEditor(serverarg)
  183. {
  184.     var args = {server: serverarg,
  185.                 result: false};
  186.     window.openDialog("chrome://messenger/content/SmtpServerEdit.xul",
  187.                       "smtpEdit", "chrome,titlebar,modal", args);
  188.     if (args.result) {
  189.         refreshServerList();
  190.         hasEdited = true;
  191.     }
  192.     return args.result;
  193. }
  194.  
  195. function getSelectedServer()
  196. {
  197.     var serverKey = serverList.selectedItems[0].getAttribute("key");
  198.     var server = smtpService.getServerByKey(serverKey);
  199.     
  200.     return server;
  201. }
  202.