+++ /dev/null
-/*\r
- * CTOCWidget.js\r
- * $Revision: 1.3 $ $Date: 2003/07/14 06:02:50 $\r
- */\r
-\r
-/* ***** BEGIN LICENSE BLOCK *****\r
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1\r
- *\r
- * The contents of this file are subject to the Mozilla Public License Version\r
- * 1.1 (the "License"); you may not use this file except in compliance with\r
- * the License. You may obtain a copy of the License at\r
- * http://www.mozilla.org/MPL/\r
- *\r
- * Software distributed under the License is distributed on an "AS IS" basis,\r
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\r
- * for the specific language governing rights and limitations under the\r
- * License.\r
- *\r
- * The Original Code is Netscape code.\r
- *\r
- * The Initial Developer of the Original Code is\r
- * Netscape Corporation.\r
- * Portions created by the Initial Developer are Copyright (C) 2003\r
- * the Initial Developer. All Rights Reserved.\r
- *\r
- * Contributor(s): Bob Clary <bclary@netscape.com>\r
- *\r
- * ***** END LICENSE BLOCK ***** */\r
-\r
-function CTOCWidget(domTOCModel, target)\r
-{\r
- if (domTOCModel.documentElement.nodeName != 'toc')\r
- {\r
- throw 'CTOCWidget called on non toc Document: ' + domTOCModel.nodeName;\r
- }\r
-\r
- this.model = domTOCModel;\r
- this.target = target;\r
- this.view = document.createElement('div');\r
- this.view.setAttribute('class', CTOCWidget._classprefix + '_view');\r
-\r
- var modelItems = domTOCModel.documentElement.childNodes;\r
- for (var i = 0; i < modelItems.length; i++)\r
- {\r
- var modelItem = modelItems.item(i);\r
- if (modelItem.nodeType == Node.ELEMENT_NODE)\r
- {\r
- var viewItem = CTOCWidget.createItemView(modelItem, target);\r
- this.view.appendChild(viewItem);\r
- }\r
- }\r
-}\r
-\r
-CTOCWidget._handleImages = { open: '/toolbox/examples/2003/CTOCWidget/minus.gif', closed: '/toolbox/examples/2003/CTOCWidget/plus.gif', height: '12px', width: '16px'};\r
-CTOCWidget._classprefix = 'CTOCWidget';\r
-\r
-CTOCWidget.createItemView = function (modelItem, target)\r
-{\r
- if (modelItem.nodeType != Node.ELEMENT_NODE)\r
- {\r
- throw 'CTOCWidget.createItemView called on non-Element: ' + modelItem.nodeName;\r
- }\r
-\r
- var i;\r
-\r
- var viewItem = document.createElement('div');\r
- viewItem.setAttribute('class', CTOCWidget._classprefix + '_item');\r
-\r
- var viewItemHandle = document.createElement('div');\r
- viewItemHandle.setAttribute('class', CTOCWidget._classprefix + '_itemhandle');\r
- viewItemHandle.style.cursor = 'pointer';\r
-\r
- var viewItemHandleImg = document.createElement('img');\r
- viewItemHandleImg.style.height = CTOCWidget._handleImages.height;\r
- viewItemHandleImg.style.width = CTOCWidget._handleImages.width;\r
- viewItemHandleImg.addEventListener('click', CTOCWidget.toggleHandle, false);\r
-\r
- var viewItemHandleLink;\r
- if (!modelItem.getAttribute('url'))\r
- {\r
- viewItemHandleLink = document.createElement('span');\r
- }\r
- else \r
- {\r
- viewItemHandleLink = document.createElement('a');\r
- viewItemHandleLink.setAttribute('href', modelItem.getAttribute('url'));\r
- viewItemHandleLink.setAttribute('target', target);\r
- }\r
- viewItemHandleLink.appendChild(document.createTextNode(modelItem.getAttribute('title')));\r
-\r
- viewItemHandle.appendChild(viewItemHandleImg);\r
- viewItemHandle.appendChild(viewItemHandleLink);\r
- viewItem.appendChild(viewItemHandle);\r
-\r
- if (modelItem.childNodes.length == 0)\r
- {\r
- viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.open);\r
- }\r
- else\r
- {\r
- viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.closed);\r
-\r
- var viewItemChildren = document.createElement('div');\r
- viewItemChildren.setAttribute('class', CTOCWidget._classprefix + '_itemchildren');\r
- viewItemChildren.style.display = 'none';\r
- viewItemChildren.style.position = 'relative';\r
- viewItemChildren.style.left = '1em';\r
-\r
- for (i = 0; i < modelItem.childNodes.length; i++)\r
- {\r
- var modelItemChild = modelItem.childNodes.item(i);\r
- if (modelItemChild.nodeType == Node.ELEMENT_NODE)\r
- {\r
- viewItemChildren.appendChild(CTOCWidget.createItemView(modelItemChild, target));\r
- }\r
- }\r
-\r
- viewItem.appendChild(viewItemChildren);\r
- }\r
-\r
- return viewItem;\r
-};\r
-\r
-// fires on img part of the handle\r
-CTOCWidget.toggleHandle = function(e)\r
-{\r
- switch (e.eventPhase)\r
- {\r
- case Event.CAPTURING_PHASE:\r
- case Event.BUBBLING_PHASE:\r
- return true;\r
- \r
- case Event.AT_TARGET:\r
- \r
- e.preventBubble();\r
-\r
- var domHandle = e.target.parentNode;\r
- var domChildren = domHandle.nextSibling;\r
-\r
- if (!domChildren)\r
- {\r
- return true;\r
- }\r
-\r
- switch(domChildren.style.display)\r
- {\r
- case '':\r
- case 'block':\r
- domChildren.style.display = 'none';\r
- e.target.setAttribute('src', CTOCWidget._handleImages.closed);\r
- break;\r
- case 'none':\r
- domChildren.style.display = 'block';\r
- e.target.setAttribute('src', CTOCWidget._handleImages.open);\r
- break;\r
- default:\r
- return false;\r
- }\r
-\r
- return true;\r
-\r
- default:\r
- dump('Unknown Event Phase ' + e.eventPhase);\r
- break;\r
- }\r
-\r
- return true;\r
-}\r
-\r