Bug 374404 - Don't ship WidgetStateManager as part of toolkit/mailr=bsmedberg
authorasqueella@gmail.com
Mon, 26 Mar 2007 14:02:00 -0700
changeset 119 50fbfb454007d0d9c363579cc829ec6ce2a6bc15
parent 118 399800cb7063fccef8260d32ede8eafeaa5ee2b7
child 120 8707dec1e24348f990f3357e7794df480aeafb8f
push idunknown
push userunknown
push dateunknown
bugs374404
milestone1.9a4pre
Bug 374404 - Don't ship WidgetStateManager as part of toolkit/mailr=bsmedberg
toolkit/content/jar.mn
toolkit/content/nsWidgetStateManager.js
toolkit/obsolete/content/widgetStateManager.js
toolkit/obsolete/jar.mn
--- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn
@@ -27,17 +27,16 @@ toolkit.jar:
 *+ content/global/editMenuOverlay.xul         (editMenuOverlay.xul)
 *+ content/global/finddialog.js               (finddialog.js)
 *+ content/global/finddialog.xul              (finddialog.xul)
 *+ content/global/findUtils.js                (findUtils.js)
 *+ content/global/globalOverlay.js            (globalOverlay.js)
 *+ content/global/inlineSpellCheckUI.js       (inlineSpellCheckUI.js)
 +  content/global/mozilla.xhtml               (mozilla.xhtml)
 *+ content/global/nsDragAndDrop.js            (nsDragAndDrop.js)
-*+ content/global/nsWidgetStateManager.js     (nsWidgetStateManager.js)
 +  content/global/selectDialog.js             (selectDialog.js)
 +  content/global/selectDialog.xul            (selectDialog.xul)
 *+ content/global/viewZoomOverlay.js          (viewZoomOverlay.js)
 *+ content/global/bindings/autocomplete.xml    (widgets/autocomplete.xml)
 *+ content/global/bindings/browser.xml         (widgets/browser.xml)
 *+ content/global/bindings/button.xml          (widgets/button.xml)
 *+ content/global/bindings/checkbox.xml        (widgets/checkbox.xml)
 *+ content/global/bindings/colorpicker.xml     (widgets/colorpicker.xml)
deleted file mode 100644
--- a/toolkit/content/nsWidgetStateManager.js
+++ /dev/null
@@ -1,399 +0,0 @@
-# -*- Mode: Java; tab-width: 2; c-basic-offset: 2; -*-
-#
-# ***** 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.org Code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#   Ben Goodger <mozilla@bengoodger.com> (Original Author)
-#
-# 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 *****
-
-# ... and so it came to pass that on the 4th day of June, A.D. 2003, this file
-# was excised of the cruel and unfortunate brace/indentation scheme perpetrated
-# upon it by the same author who now writes these words, some three years and 
-# two months after the original act. Note that while cvs blame shifts like leaves
-# in the autumn breeze, by and large the responsibility for this code remains 
-# with me. 
-
-var wsm;
-
-// For panels displayed inside the main dialog, this value will be the child iframe
-// window. For panels displayed in sub-dialogs, those launched by panels of the main
-// dialog, this will be the sub dialog window. 
-var gCurrentWindow = null;
-
-function nsWidgetStateManager (aFrameID)
-{
-
-  this.dataManager = {
-    /** Persisted Data Hash Table
-     *  Page_ID -> Element_ID -> Property -> Value
-     **/
-    pageData: { },
-
-    setPageData: function (aPageTag, aDataObject)
-    {
-      this.pageData[aPageTag] = aDataObject;
-    },
-
-    getPageData: function (aPageTag)
-    {
-      if (!(aPageTag in this.pageData))
-        this.pageData[aPageTag] = { };
-
-      if (!('elementIDs' in this.pageData[aPageTag]))
-        this.pageData[aPageTag].elementIDs = new Object();
-
-      if (!('userData' in this.pageData[aPageTag]))
-        this.pageData[aPageTag].userData = new Object();
-
-      return this.pageData[aPageTag];
-    },
-
-    setItemData: function (aPageTag, aItemID, aDataObject)
-    {
-      if (!(aPageTag in this.pageData))
-        this.pageData[aPageTag] = new Object();
-      
-      this.pageData[aPageTag].elementIDs[aItemID] = aDataObject;
-    },
-
-    getItemData: function (aPageTag, aItemID)
-    {
-      if (!(aItemID in this.pageData[aPageTag].elementIDs))
-        this.pageData[aPageTag].elementIDs[aItemID] = new Object();
-      return this.pageData[aPageTag].elementIDs[aItemID];
-    }
-  }
-
-  this.contentID    = aFrameID;
-
-  wsm               = this;
-
-  /** Element Handlers
-   *  Provides default get and set handler functions for supported
-   *  widgets. Clients can override or add new widgets.
-   **/
-  this.handlers     = {
-    menulist:
-      {  get: wsm.get_Menulist,    set: wsm.set_Menulist      },
-    radiogroup:
-      {  get: wsm.get_Radiogroup,  set: wsm.set_Radiogroup    },
-    checkbox:
-      {  get: wsm.get_Checkbox,    set: wsm.set_Checkbox      },
-    textbox:
-      {  get: wsm.get_Textbox,     set: wsm.set_Textbox       },
-    listitem:
-      {  get: wsm.get_Listitem,    set: wsm.set_Listitem      },
-    data:
-      {  get: wsm.get_Data,        set: wsm.set_Data          },
-    default_handler:
-      {  get: wsm.get_Default,     set: wsm.set_Default       }
-  }
-
-  // extra attributes to scan and save.
-  this.attributes   = [];
-}
-
-nsWidgetStateManager.prototype =
-{
-  get contentArea ()
-  {
-    return window.frames[this.contentID];
-  },
-
-  savePageData: function (aPageTag, aWindow)
-  {
-    gCurrentWindow = aWindow || this.contentArea;
-      
-    if (!(aPageTag in this.dataManager.pageData))
-      return;
-
-    if ("GetFields" in gCurrentWindow) {
-      // save page data based on user supplied function in content area
-      var dataObject = gCurrentWindow.GetFields();
-      if (dataObject)        
-        this.dataManager.pageData[aPageTag].userData = dataObject;
-    }
-
-    // Automatic element retrieval. This is done in two ways.
-    // 1) if an element id array is present in the document, this is
-    //    used to build a list of elements to persist. <-- performant
-    // 2) otherwise, all elements with "wsm_persist" set to true
-    //    are persisted <-- non-performant.
-    var elements;
-    if ("_elementIDs" in gCurrentWindow) {
-      elements = [];
-      for (var i = 0; i < gCurrentWindow._elementIDs.length; i++) {
-        var elt = gCurrentWindow.document.getElementById(gCurrentWindow._elementIDs[i]);
-        if (elt)
-          elements[elements.length] = elt;
-        else {
-          // see bug #40329. People forget this too often, and it breaks Prefs
-          dump("*** FIX ME: '_elementIDs' in '" + gCurrentWindow.location.href.split('/').pop() +
-               "' contains a reference to a non-existent element ID '" +
-          gCurrentWindow._elementIDs[i] + "'.\n");
-        }
-      }
-    }
-    else 
-      elements = gCurrentWindow.document.getElementsByAttribute("wsm_persist", "true");
-
-    for (var ii = 0; ii < elements.length; ii++) {
-      var elementID   = elements[ii].id;
-      var elementType = elements[ii].localName;
- 
-      // persist attributes
-      var get_Func = (elementType in this.handlers) ?
-      this.handlers[elementType].get :
-      this.handlers.default_handler.get;
-      this.dataManager.setItemData(aPageTag, elementID, get_Func(elementID));
-    }
-  },
-
-  setPageData: function (aPageTag, aWindow)
-  {
-    gCurrentWindow = aWindow || this.contentArea;
-
-    var pageData = this.dataManager.getPageData(aPageTag);
-    if ("SetFields" in gCurrentWindow)
-      gCurrentWindow.SetFields(pageData.userData)
-
-    if (!('elementIDs' in pageData))
-      return;
-
-    for (var elementID in pageData.elementIDs) {
-      var element = gCurrentWindow.document.getElementById(elementID);
-      if (element) {
-        var elementType = element.localName;
-        var set_Func = (elementType in this.handlers) ?
-          this.handlers[elementType].set :
-          this.handlers.default_handler.set;
-        set_Func(elementID, pageData.elementIDs[elementID]);
-      }
-    }
-  },
-
-
-  /** Widget Get/Set Function Implementations
-   *  These can be overridden by the client.
-   **/
-  generic_Set: function (aElement, aDataObject)
-  {
-    if (aElement) {
-      for (var property in aDataObject) {
-        if (property == "localname")
-          continue;
-        if (!aDataObject[property] && typeof aDataObject[property] == "boolean")
-          aElement.removeAttribute(property);
-        else
-          aElement.setAttribute(property, aDataObject[property]);
-      }
-      
-      if (!aElement.getAttribute("disabled","true"))
-        aElement.removeAttribute("disabled");
-    }
-  },
-
-  generic_Get: function (aElement)
-  {
-    if (aElement) {
-      var dataObject = new Object();
-      var wsmAttributes = aElement.getAttribute("wsm_attributes");
-      var attributes = wsm.attributes;              // make a copy
-      if (wsmAttributes != "")
-        attributes.push(wsmAttributes.split(" "));  // modify the copy
-
-      for (var i = 0; i < attributes.length; i++)
-        dataObject[attributes[i]] = aElement.getAttribute(attributes[i]);
-
-      dataObject.localname = aElement.localName;
-      return dataObject;
-    }
-    return null;
-  },
-
-  // <menulist>
-  set_Menulist: function (aElementID, aDataObject)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    // set all generic properties
-    wsm.generic_Set(element, aDataObject);
-    // set menulist specific properties
-    if ("value" in aDataObject) {
-      try {
-        element.value = aDataObject.value;
-      }
-      catch (ex) {
-        dump(aElementID + ", ex: " + ex + "\n");
-      }
-    }
-  },
-
-  get_Menulist: function (aElementID)
-  {
-    var element     = gCurrentWindow.document.getElementById(aElementID);
-    // retrieve all generic attributes
-    var dataObject  = wsm.generic_Get(element);
-    // retrieve all menulist specific attributes
-    if (dataObject) {
-      dataObject.value = element.getAttribute("value");
-      return dataObject;
-    }
-    return null;
-  },
-
-  // <radiogroup>
-  set_Radiogroup: function (aElementID, aDataObject)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    wsm.generic_Set(element, aDataObject);
-    if ("value" in aDataObject)
-      element.value = aDataObject.value;
-    if ("disabled" in aDataObject)
-      element.disabled = aDataObject.disabled;
-  },
-
-  get_Radiogroup: function (aElementID)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    var dataObject = wsm.generic_Get(element);
-    if (dataObject) {
-      dataObject.value = element.getAttribute("value");
-      return dataObject;
-    }
-    return null;
-  },
-
-  // <textbox>
-  set_Textbox: function (aElementID, aDataObject)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    wsm.generic_Set(element, aDataObject);
-  },
-
-  get_Textbox: function (aElementID)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    var dataObject = wsm.generic_Get(element);
-    if (dataObject) {
-      dataObject.value = element.value;
-      return dataObject;
-    }
-    return null;
-  },
-
-  // <checkbox>
-  set_Checkbox: function (aElementID, aDataObject)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    // Set generic properites. 
-    wsm.generic_Set(element, aDataObject);
-    // Handle reversed boolean values.
-    if ("checked" in aDataObject && element.hasAttribute("reversed"))
-      element.checked = !aDataObject.checked; 
-  },
-
-  get_Checkbox: function (aElementID)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    var dataObject = wsm.generic_Get(element);
-    if (dataObject) {
-      var checked = element.checked;
-      dataObject.checked = element.getAttribute("reversed") == "true" ? !checked : checked;
-      return dataObject;
-    }
-    return null;
-  },
-
-  // <listitem>
-  set_Listitem: function (aElementID, aDataObject)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    wsm.generic_Set(element, aDataObject);
-  },
-
-  get_Listitem: function (aElementID)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    var dataObject = wsm.generic_Get(element);
-    if (dataObject) {
-      if (element.getAttribute("type") == "checkbox")
-        dataObject.checked = element.checked;
-      return dataObject;
-    }
-    return null;
-  },
-
-  // <data>
-  set_Data: function (aElementID, aDataObject)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    wsm.generic_Set(element, aDataObject);
-    if ("value" in aDataObject)
-      element.setAttribute("value", aDataObject.value);
-  },
-
-  get_Data: function (aElementID)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    var dataObject = wsm.generic_Get(element);
-    if (dataObject) {
-      dataObject.value = element.getAttribute("value");
-      return dataObject;
-    }
-    return null;
-  },
-
-  // <default>
-  set_Default: function (aElementID, aDataObject)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    wsm.generic_Set(element, aDataObject);
-  },
-
-  get_Default: function (aElementID)
-  {
-    var element = gCurrentWindow.document.getElementById(aElementID);
-    var dataObject = wsm.generic_Get(element);
-    return dataObject ? dataObject : null;
-  }
-}
-
-
-# M:tHoF Greatest Hits Section (Append one line per edit):
-# it will be dark soon 
-# MANOS MADE ME PERMANENT! 
-# there is no way out of here
-# [The Master is] not dead as you know it. He is with us always..
-# My name is Torgo, I take care of the place while the Master is away. 
-# The car won't start
deleted file mode 100644
--- a/toolkit/obsolete/content/widgetStateManager.js
+++ /dev/null
@@ -1,464 +0,0 @@
-/* -*- Mode: Java; tab-width: 2; c-basic-offset: 2; -*-
- * 
- * ***** 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.org Code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Ben "Count XULula" Goodger <rgoodger@ihug.co.nz>
- *   Alec Flett <alecf@netscape.com>
- *
- * 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 ***** */
-
-
-/** class WizardStateManager ( string frame_id, object pageMap )
- *  - purpose: object for managing data in iframe multi-panel dialogs.
- *  - in: string frame id/name set of iframe, pageMap showing navigation of wizard
- *  - out: nothing (object)
- **/
-function WidgetStateManager( frame_id, panelPrefix, panelSuffix )
-{
-  // data members
-  /**
-   *  hash table for data values:
-   *    page1  =>  id1  =>  value1
-   *    page1  =>  id2  =>  value2
-   *    page2  =>  id1  =>  value1
-   *    page2  =>  id2  =>  value2
-   **/
-  this.PageData          = [];
-  this.content_frame     = window.frames[frame_id];
-
-  this.panelPrefix       = ( panelPrefix ) ? panelPrefix : null;
-  this.panelSuffix       = ( panelSuffix ) ? panelSuffix : null;
-  
-  // member functions
-  this.SavePageData      = WSM_SavePageData;
-  this.SetPageData       = WSM_SetPageData;
-  this.PageIsValid       = WSM_PageIsValid;
-  this.GetTagFromURL     = WSM_GetTagFromURL;
-  this.GetURLFromTag     = WSM_GetURLFromTag;
-  this.toString          = WSM_toString;
-  this.AddAttributes     = WSM_AddAttributes;
-  this.ElementIsIgnored  = WSM_ElementIsIgnored;
-  this.HasValidElements  = WSM_HasValidElements;
-  this.LookupElement     = WSM_LookupElement;
-  this.GetDataForTag     = WSM_GetDataForTag;
-  this.SetDataForTag     = WSM_SetDataForTag;
-}
-
-/** void SavePageData() ;
- *  - purpose: retrieves form/widget data from a generic page stored in a frame.
- *  -          useful for retrieving and persisting wizard/prefs page data that
- *  -          has not been added to permanent storage. 
- *  -          for full reference, please refer to user manual at:
- *  -            http://www.mozilla.org/xpapps/ui/wizards.html
- *  - in:  nothing
- *  - out: nothing
- **/               
-function WSM_SavePageData( currentPageTag, optAttributes, exclElements, inclElements )
-{
-  // 11/26/99: changing this to support the saving of an optional number of extra
-  // attributes other than the default value. these attributes are specified as 
-  // strings in an array passed in as the second parameter. these values are stored
-  // in the table associated with the element:
-  // 
-  // this.wsm.PageData[pageTag][element][id]    - id of element       (default)
-  // this.wsm.PageData[pageTag][element][value] - value of element    (default)
-  // this.wsm.PageData[pageTag][element][foo]   - optional attribute  (default)
-  // 11/27/99: changing this to support the exclusion of specified elements.
-  // typically this is includes fieldsets, legends and labels. These are default
-  // and do not need to be passed. 
-  
-  if( !currentPageTag )
-    currentPageTag = this.GetTagFromURL( this.content_frame.location.href, this.panelPrefix, this.panelSuffix, true );
-  
-  var doc = this.content_frame.document;
-  var thisTagData = this.GetDataForTag(currentPageTag);
-
-  if( this.content_frame.GetFields ) {
-    // user GetFields function
-    this.SetDataForTag(currentPageTag, this.content_frame.GetFields());
-    var string = "";
-    for( var i in thisTagData )
-    {
-      string += "element: " + i + "\n";
-    }
-  }
-  else if (doc && doc.controls) {
-    var fields = doc.controls;
-    var data = [];
-    for( i = 0; i < fields.length; i++ ) 
-    { 
-      data[i] = []; 
-      var formElement = fields[i];
-      var elementEntry = thisTagData[formElement.id] = [];
-
-      // check to see if element is excluded
-      if( !this.ElementIsIgnored( formElement, exclElements ) )
-        elementEntry.excluded = false;
-      else 
-        elementEntry.excluded = true;
-
-      if( formElement.localName.toLowerCase() == "select" ) { // select & combo
-        /* commenting out until select fields work properly, or someone tells me how
-           to do this (also, is it better to store .value, or .text?):*/
-          if( formElement.getAttribute("multiple") ) {
-            // multiple selections
-            for( var j = 0, idx = 0; j < formElement.options.length; j++ )
-            {
-              if( formElement.options[j].selected ) {
-                elementEntry.value[idx] = formElement.options[j].value;
-                idx++;
-              }
-            }
-          }
-          else {
-              // single selections
-              if (formElement.options[formElement.selectedIndex]) {
-                  var value = formElement.options[formElement.selectedIndex].value;
-                  dump("*** VALUE=" + value + "\n");
-                  formElement.arbitraryvalue = value;
-                  this.AddAttributes( formElement, elementEntry, "arbitraryvalue", optAttributes );
-                  this.AddAttributes( formElement, elementEntry, "value", optAttributes);
-              }
-          }
-      }
-      else if( formElement.getAttribute("type") &&
-               ( formElement.type.toLowerCase() == "checkbox" ||
-                 formElement.type.toLowerCase() == "radio" ) ) {
-        // XXX 11/04/99
-        this.AddAttributes( formElement, elementEntry, "checked", optAttributes );
-      }
-      else if( formElement.type == "text" &&
-               formElement.getAttribute( "datatype" ) == "nsIFileSpec" &&
-               formElement.value ) {
-        try {
-          var filespec = Components.classes["@mozilla.org/filespec;1"].createInstance();
-          filespec = filespec.QueryInterface( Components.interfaces.nsIFileSpec );
-        }
-        catch(e) {
-          dump("*** Failed to create filespec object\n");
-        }
-        filespec.nativePath = formElement.value;
-        this.AddAttributes( formElement, elementEntry, "filespec", optAttributes )
-      }
-      else
-        this.AddAttributes( formElement, elementEntry, "value", optAttributes );  // generic
-
-      elementEntry.id       = formElement.id;
-      elementEntry.localName = formElement.localName;
-      // save the type attribute on the element if one is present
-      elementEntry.elType   = ( formElement.type ) ? formElement.type : null;
-    }
-  }
-  if( !this.HasValidElements( thisTagData ) )
-    thisTagData.noData = true; // page has no (valid) elements
-}
-
-/** void SetPageData() ;
- *  - purpose: populates the loaded page with appropriate data from the data 
- *  -          table.
- *  -          for full reference, please refer to user manual at:
- *  -            http://www.mozilla.org/xpapps/ui/wizards.html
- *  - in:  nothing.
- *  - out: nothing.
- **/
-function WSM_SetPageData( currentPageTag, hasExtraAttributes )
-{
-  if( !currentPageTag )
-    currentPageTag = this.GetTagFromURL( this.content_frame.location.href, this.panelPrefix, this.panelSuffix, true );
-  
-	var doc = this.content_frame.document;
-  var thisTagData = this.GetDataForTag(currentPageTag);
-  if ( thisTagData && !thisTagData.nodata) {
-  	for( var i in thisTagData ) {
-      if( thisTagData[i].excluded || !i )
-        continue;     // element is excluded, goto next
-     
-      var id    = thisTagData[i].id;
-      var value = thisTagData[i].value;
-
-      dump("*** id & value: " + id + " : " + value + "\n");
-      
-      if( this.content_frame.SetFields && !hasExtraAttributes )
-        this.content_frame.SetFields( id, value );  // user provided setfields
-      else if( this.content_frame.SetFields && hasExtraAttributes )
-        this.content_frame.SetFields( id, value, thisTagData[i]); // SetFields + attrs
-      else {                              // automated data provision
-        var formElement = doc.getElementById( i );
-        
-        if( formElement && hasExtraAttributes ) {        // if extra attributes are set, set them
-          for( var attName in thisTagData[i] ) 
-          {
-            // for each attribute set for this element
-            if( attName == "value" || attName == "id" )
-              continue;                   // don't set value/id (value = default, id = dangerous)
-            var attValue  = thisTagData[i][attName];
-            formElement.setAttribute( attName, attValue );
-          }
-        }
-        
-        // default "value" attributes        
-        if( formElement && formElement.localName.toLowerCase() == "input" ) {
-          if( formElement.type.toLowerCase() == "checkbox" ||
-              formElement.type.toLowerCase() == "radio" ) {
-            if( value == undefined )
-              formElement.checked = formElement.defaultChecked;
-            else 
-              formElement.checked = value;
-/*            oops.. appears we've reimplemented 'reversed'. this will be why its not working for alecf. 
-              if( formElement.getAttribute( "reversed" ) )
-                formElement.checked = !value;
-              else
-                formElement.checked = value;
-                */
-          }
-          else if( formElement.type.toLowerCase() == "text" &&
-               formElement.getAttribute( "datatype" ) == "nsIFileSpec" ) {
-            // formElement has something to do with fileSpec. looked important
-            if( value ) {
-              var filespec = value.QueryInterface( Components.interfaces.nsIFileSpec );
-              try {
-                formElement.value = filespec.nativePath;
-              } 
-              catch( ex ) {
-                dump("Still need to fix uninitialized filespec problem!\n");
-              }
-            } 
-            else
-              formElement.value = formElement.defaultValue;
-          }
-          else {                          // some other type of form element
-            if( value == undefined )
-              formElement.value = formElement.defaultValue;
-            else
-              formElement.value = value;
-          }
-        } 
-        else if( formElement && formElement.localName.toLowerCase() == "select" ) {
-          /* commenting this out until select widgets work properly */
-            if( formElement.getAttribute("multiple") &&
-                typeof(value) == "object" ) {
-              // multiple selected items
-              for( var j = 0; j < value.length; j++ )
-              {
-                for ( var k = 0; k < formElement.options.length; k++ )
-                {
-                  if( formElement.options[k].value == value[j] )
-                    formElement.options[k].selected = true;
-                }
-              }
-            }
-            else {
-              // single selected item
-              for ( k = 0; k < formElement.options.length; k++ )
-              {
-                dump("*** value=" + value + "; options[k].value=" + formElement.options[k].value + "\n");
-                if( formElement.options[k].value == value )
-                  formElement.options[k].selected = true;
-              }
-            }            
-        }
-        else if( formElement && formElement.localName.toLowerCase() == "textarea" )
-          formElement.value = value;
-      }
-    }
-  }
-  // initialize the pane
-  if (this.content_frame.onInit) {
-    dump("Calling custom onInit()\n");
-    this.content_frame.onInit();
-  }
-    
-}   
-
-/** boolean PageIsValid()
- * - purpose: returns whether the given page is in a valid state
- * - in:
- * - out: 
- */
-function WSM_PageIsValid()
-{
-  if( this.content_frame.validate )
-    return this.content_frame.validate();
-
-  // page is valid by default
-  return true;
-}
-
-
-/** string GetTagFromURL( string tag, string prefix, string postfix ) ;
- *  - purpose: fetches a tag from a URL
- *  - in:   string url representing the complete location of the page.
- *  - out:  string tag representing the specific page to be loaded
- **/               
-function WSM_GetTagFromURL( url, prefix, suffix, mode )
-{
-  // NOTE TO SELF: this is an accident WAITING to happen
-  if (!prefix) return undefined;
-  if( mode )
-    return url.substring( prefix.length, url.lastIndexOf(suffix) );
-  else
-    return url.substring( url.lastIndexOf(prefix) + 1, url.lastIndexOf(suffix) );
-}
-
-/** string GetUrlFromTag( string tag, string prefix, string postfix ) ;
- *  - purpose: creates a complete URL based on a tag.
- *  - in:  string tag representing the specific page to be loaded
- *  - out: string url representing the complete location of the page.
- **/               
-function WSM_GetURLFromTag( tag, prefix, postfix ) 
-{
-  return prefix + tag + postfix;
-}
-
-/** string toString() ;
- *  - purpose: returns a string representation of the object
- *  - in: nothing;
- *  - out: nothing;
- **/
-function WSM_toString()
-{
-  var string = "";
-  for( var i in this.PageData ) {
-    for( var j in this.PageData[i] ) {
-      for( var k in this.PageData[i][j] ) {
-        string += "WSM.PageData[" + i + "][" + j + "][" + k + "] : " + this.PageData[i][j][k] + ";\n";
-      }
-    }
-  }
-  return string;
-}
-
-/** void AddAttributes( DOMElement formElement, AssocArray elementEntry, 
-                        String valueAttribute, StringArray optAttributes ) ;
- *  - purpose: adds name/value entries to associative array.
- *  - in:       formElement - element to add attributes from
- *  -           elementEntry - the associative array to add data to
- *  -           valueAttribute - string representing which attribute represents 
- *  -               value (e.g. "value", "checked")
- *  -           optAttributes - array of extra attributes to store. 
- *  - out: nothing;
- **/
-function WSM_AddAttributes( formElement, elementEntry, valueAttribute, optAttributes )
-{
-  // 07/01/00 adding in a reversed thing here for alecf's ultra picky mail prefs :P:P
-  if( formElement.getAttribute("reversed") )
-    elementEntry.value = !formElement[valueAttribute]; // get the value (e.g. "checked")
-  else
-    elementEntry.value = formElement[valueAttribute]; // get the value (e.g. "checked")
-  
-  if( optAttributes ) {   // if we've got optional attributes, add em
-    for(var k = 0; k < optAttributes.length; k++ ) 
-    {
-      attValue = formElement.getAttribute( optAttributes[k] );
-      if( attValue )
-        elementEntry[optAttributes[k]] = attValue;
-    }
-  }
-}
-
-/** string ElementIsIgnored( DOMElement element, StringArray exclElements ) ;
- *  - purpose: check to see if the current element is one of the ignored elements
- *  - in:       element - element to check, 
- *  -           exclElements - array of string ignored attribute localNames;
- *  - out:      boolean if element is ignored (true) or not (false);
- **/
-function WSM_ElementIsIgnored( element, exclElements )
-{
-  if (!exclElements) return false;
-  for( var i = 0; i < exclElements.length; i++ )
-  {
-    if( element.localName.toLowerCase() == exclElements[i] )
-      return true;
-  }
-  return false;
-}
-
-/** string HasValidElements( AssocArray dataStore ) ;
- *  - purpose:  checks to see if there are any elements on this page that are 
- *  -           valid.
- *  - in:       associative array representing the page;
- *  - out:      boolean whether or not valid elements are present (true) or not (false);
- **/
-function WSM_HasValidElements( dataStore )
-{
-  for( var i in dataStore ) 
-  {
-    if( !dataStore[i].excluded )
-      return true;
-  }
-  return false;
-}
-
-
-function WSM_LookupElement( element, lookby, property )
-{
-  for(var i in this.PageData )
-  {
-    for( var j in this.PageData[i] )
-    {
-      if(!lookby) 
-        lookby = "id";    // search by id by default
-      if( j[lookby] == element && !property )
-        return j;
-      else if( j[lookby] == element ) {
-        var container = [];
-        for( var k = 0; k < property.length; k++ )
-        {
-          container[k] = this.PageData[i][k][property[k]];
-        }
-        return container; // only support one single match per hash just now
-      }
-    }
-  }
-  return undefined;
-}
-
-/**
- * array GetDataForTag(string tag)
- * - purpose: to get the array associated with this tag
- *            creates the array if one doesn't already exist
- * - in:      tag
- * - out:     the associative array for this page
- */
-function WSM_GetDataForTag(tag) {
-  if (!this.PageData[tag])
-    this.PageData[tag] = [];
-  return this.PageData[tag];
-}
-
-function WSM_SetDataForTag(tag, data) {
-  this.PageData[tag] = data;
-}
-
-/* it will be dark soon */
--- a/toolkit/obsolete/jar.mn
+++ b/toolkit/obsolete/jar.mn
@@ -2,9 +2,8 @@ toolkit.jar:
 +  content/global/globalOverlay.xul             (content/globalOverlay.xul)
 *+ content/global/dialogOverlay.xul             (content/dialogOverlay.xul)
 *+ content/global/dialogOverlay.js              (content/dialogOverlay.js)
 +  content/global/nsClipboard.js                (content/nsClipboard.js)
 +  content/global/nsTreeController.js           (content/nsTreeController.js)
 +  content/global/nsTreeSorting.js              (content/nsTreeSorting.js)
 +  content/global/nsUserSettings.js             (content/nsUserSettings.js)
 +  content/global/strres.js                     (content/strres.js)
-+  content/global/widgetStateManager.js         (content/widgetStateManager.js)