You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2007/05/09 04:56:45 UTC

svn commit: r536397 [30/36] - in /tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo: ./ nls/ src/ src/animation/ src/cal/ src/charting/ src/charting/svg/ src/charting/vml/ src/collections/ src/crypto/ src/data/ src/data/core/ src/data/old/ src/da...

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicController.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicController.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicController.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicController.js Tue May  8 19:56:15 2007
@@ -0,0 +1,16 @@
+
+dojo.provide("dojo.widget.TreeBasicController");dojo.require("dojo.event.*");dojo.require("dojo.json");dojo.require("dojo.io.*");dojo.widget.defineWidget("dojo.widget.TreeBasicController", dojo.widget.HtmlWidget, {widgetType:"TreeBasicController", DNDController:"", dieWithTree:false, initialize:function (args, frag) {if (this.DNDController == "create") {dojo.require("dojo.dnd.TreeDragAndDrop");this.DNDController = new dojo.dnd.TreeDNDController(this);}}, listenTree:function (tree) {dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");dojo.event.topic.subscribe(tree.eventNames.treeClick, this, "onTreeClick");dojo.event.topic.subscribe(tree.eventNames.treeCreate, this, "onTreeCreate");dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");if (this.DNDController) {this.DNDController.listenTree(tree);}}, unlistenTree:function (tree) {dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");dojo.eve
 nt.topic.unsubscribe(tree.eventNames.treeClick, this, "onTreeClick");dojo.event.topic.unsubscribe(tree.eventNames.treeCreate, this, "onTreeCreate");dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");}, onTreeDestroy:function (message) {var tree = message.source;this.unlistenTree(tree);if (this.dieWithTree) {this.destroy();}}, onCreateDOMNode:function (message) {var node = message.source;if (node.expandLevel > 0) {this.expandToLevel(node, node.expandLevel);}}, onTreeCreate:function (message) {var tree = message.source;var _this = this;if (tree.expandLevel) {dojo.lang.forEach(tree.children, function (child) {_this.expandToLevel(child, tree.expandLevel - 1);});}}, expandToLevel:function (node, level) {if (level == 0) {return;}
+var children = node.children;var _this = this;var handler = function (node, expandLevel) {this.node = node;this.expandLevel = expandLevel;this.process = function () {for (var i = 0; i < this.node.children.length; i++) {var child = node.children[i];_this.expandToLevel(child, this.expandLevel);}};};var h = new handler(node, level - 1);this.expand(node, false, h, h.process);}, onTreeClick:function (message) {var node = message.source;if (node.isLocked()) {return false;}
+if (node.isExpanded) {this.collapse(node);} else {this.expand(node);}}, expand:function (node, sync, callObj, callFunc) {node.expand();if (callFunc) {callFunc.apply(callObj, [node]);}}, collapse:function (node) {node.collapse();}, canMove:function (child, newParent) {if (child.actionIsDisabled(child.actions.MOVE)) {return false;}
+if (child.parent !== newParent && newParent.actionIsDisabled(newParent.actions.ADDCHILD)) {return false;}
+var node = newParent;while (node.isTreeNode) {if (node === child) {return false;}
+node = node.parent;}
+return true;}, move:function (child, newParent, index) {if (!this.canMove(child, newParent)) {return false;}
+var result = this.doMove(child, newParent, index);if (!result) {return result;}
+if (newParent.isTreeNode) {this.expand(newParent);}
+return result;}, doMove:function (child, newParent, index) {child.tree.move(child, newParent, index);return true;}, canRemoveNode:function (child) {if (child.actionIsDisabled(child.actions.REMOVE)) {return false;}
+return true;}, removeNode:function (node, callObj, callFunc) {if (!this.canRemoveNode(node)) {return false;}
+return this.doRemoveNode(node, callObj, callFunc);}, doRemoveNode:function (node, callObj, callFunc) {node.tree.removeNode(node);if (callFunc) {callFunc.apply(dojo.lang.isUndefined(callObj) ? this : callObj, [node]);}}, canCreateChild:function (parent, index, data) {if (parent.actionIsDisabled(parent.actions.ADDCHILD)) {return false;}
+return true;}, createChild:function (parent, index, data, callObj, callFunc) {if (!this.canCreateChild(parent, index, data)) {return false;}
+return this.doCreateChild.apply(this, arguments);}, doCreateChild:function (parent, index, data, callObj, callFunc) {var widgetType = data.widgetType ? data.widgetType : "TreeNode";var newChild = dojo.widget.createWidget(widgetType, data);parent.addChild(newChild, index);this.expand(parent);if (callFunc) {callFunc.apply(callObj, [newChild]);}
+return newChild;}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicController.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicController.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicController.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicControllerV3.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicControllerV3.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicControllerV3.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicControllerV3.js Tue May  8 19:56:15 2007
@@ -0,0 +1,58 @@
+
+dojo.provide("dojo.widget.TreeBasicControllerV3");dojo.require("dojo.event.*");dojo.require("dojo.json");dojo.require("dojo.io.*");dojo.require("dojo.widget.TreeCommon");dojo.require("dojo.widget.TreeNodeV3");dojo.require("dojo.widget.TreeV3");dojo.widget.defineWidget("dojo.widget.TreeBasicControllerV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {this.listenedTrees = {};}, {listenTreeEvents:["afterSetFolder", "afterTreeCreate", "beforeTreeDestroy"], listenNodeFilter:function (elem) {return elem instanceof dojo.widget.Widget;}, editor:null, initialize:function (args) {if (args.editor) {this.editor = dojo.widget.byId(args.editor);this.editor.controller = this;}}, getInfo:function (elem) {return elem.getInfo();}, onBeforeTreeDestroy:function (message) {this.unlistenTree(message.source);}, onAfterSetFolder:function (message) {if (message.source.expandLevel > 0) {this.expandToLevel(message.source, message.source.expandLevel);}
+if (message.source.loadLevel > 0) {this.loadToLevel(message.source, message.source.loadLevel);}}, _focusNextVisible:function (nodeWidget) {if (nodeWidget.isFolder && nodeWidget.isExpanded && nodeWidget.children.length > 0) {returnWidget = nodeWidget.children[0];} else {while (nodeWidget.isTreeNode && nodeWidget.isLastChild()) {nodeWidget = nodeWidget.parent;}
+if (nodeWidget.isTreeNode) {var returnWidget = nodeWidget.parent.children[nodeWidget.getParentIndex() + 1];}}
+if (returnWidget && returnWidget.isTreeNode) {this._focusLabel(returnWidget);return returnWidget;}}, _focusPreviousVisible:function (nodeWidget) {var returnWidget = nodeWidget;if (!nodeWidget.isFirstChild()) {var previousSibling = nodeWidget.parent.children[nodeWidget.getParentIndex() - 1];nodeWidget = previousSibling;while (nodeWidget.isFolder && nodeWidget.isExpanded && nodeWidget.children.length > 0) {returnWidget = nodeWidget;nodeWidget = nodeWidget.children[nodeWidget.children.length - 1];}} else {nodeWidget = nodeWidget.parent;}
+if (nodeWidget && nodeWidget.isTreeNode) {returnWidget = nodeWidget;}
+if (returnWidget && returnWidget.isTreeNode) {this._focusLabel(returnWidget);return returnWidget;}}, _focusZoomIn:function (nodeWidget) {var returnWidget = nodeWidget;if (nodeWidget.isFolder && !nodeWidget.isExpanded) {this.expand(nodeWidget);} else {if (nodeWidget.children.length > 0) {nodeWidget = nodeWidget.children[0];}}
+if (nodeWidget && nodeWidget.isTreeNode) {returnWidget = nodeWidget;}
+if (returnWidget && returnWidget.isTreeNode) {this._focusLabel(returnWidget);return returnWidget;}}, _focusZoomOut:function (node) {var returnWidget = node;if (node.isFolder && node.isExpanded) {this.collapse(node);} else {node = node.parent;}
+if (node && node.isTreeNode) {returnWidget = node;}
+if (returnWidget && returnWidget.isTreeNode) {this._focusLabel(returnWidget);return returnWidget;}}, onFocusNode:function (e) {var node = this.domElement2TreeNode(e.target);if (node) {node.viewFocus();dojo.event.browser.stopEvent(e);}}, onBlurNode:function (e) {var node = this.domElement2TreeNode(e.target);if (!node) {return;}
+var labelNode = node.labelNode;labelNode.setAttribute("tabIndex", "-1");node.viewUnfocus();dojo.event.browser.stopEvent(e);node.tree.domNode.setAttribute("tabIndex", "0");}, _focusLabel:function (node) {var lastFocused = node.tree.lastFocused;var labelNode;if (lastFocused && lastFocused.labelNode) {labelNode = lastFocused.labelNode;dojo.event.disconnect(labelNode, "onblur", this, "onBlurNode");labelNode.setAttribute("tabIndex", "-1");dojo.html.removeClass(labelNode, "TreeLabelFocused");}
+labelNode = node.labelNode;labelNode.setAttribute("tabIndex", "0");node.tree.lastFocused = node;dojo.html.addClass(labelNode, "TreeLabelFocused");dojo.event.connectOnce(labelNode, "onblur", this, "onBlurNode");dojo.event.connectOnce(labelNode, "onfocus", this, "onFocusNode");labelNode.focus();}, onKey:function (e) {if (!e.key || e.ctrkKey || e.altKey) {return;}
+var nodeWidget = this.domElement2TreeNode(e.target);if (!nodeWidget) {return;}
+var treeWidget = nodeWidget.tree;if (treeWidget.lastFocused && treeWidget.lastFocused.labelNode) {nodeWidget = treeWidget.lastFocused;}
+switch (e.key) {case e.KEY_TAB:
+if (e.shiftKey) {treeWidget.domNode.setAttribute("tabIndex", "-1");}
+break;case e.KEY_RIGHT_ARROW:
+this._focusZoomIn(nodeWidget);dojo.event.browser.stopEvent(e);break;case e.KEY_LEFT_ARROW:
+this._focusZoomOut(nodeWidget);dojo.event.browser.stopEvent(e);break;case e.KEY_UP_ARROW:
+this._focusPreviousVisible(nodeWidget);dojo.event.browser.stopEvent(e);break;case e.KEY_DOWN_ARROW:
+this._focusNextVisible(nodeWidget);dojo.event.browser.stopEvent(e);break;}}, onFocusTree:function (e) {if (!e.currentTarget) {return;}
+try {var treeWidget = this.getWidgetByNode(e.currentTarget);if (!treeWidget || !treeWidget.isTree) {return;}
+var nodeWidget = this.getWidgetByNode(treeWidget.domNode.firstChild);if (nodeWidget && nodeWidget.isTreeNode) {if (treeWidget.lastFocused && treeWidget.lastFocused.isTreeNode) {nodeWidget = treeWidget.lastFocused;}
+this._focusLabel(nodeWidget);}}
+catch (e) {}}, onAfterTreeCreate:function (message) {var tree = message.source;dojo.event.browser.addListener(tree.domNode, "onKey", dojo.lang.hitch(this, this.onKey));dojo.event.browser.addListener(tree.domNode, "onmousedown", dojo.lang.hitch(this, this.onTreeMouseDown));dojo.event.browser.addListener(tree.domNode, "onclick", dojo.lang.hitch(this, this.onTreeClick));dojo.event.browser.addListener(tree.domNode, "onfocus", dojo.lang.hitch(this, this.onFocusTree));tree.domNode.setAttribute("tabIndex", "0");if (tree.expandLevel) {this.expandToLevel(tree, tree.expandLevel);}
+if (tree.loadLevel) {this.loadToLevel(tree, tree.loadLevel);}}, onTreeMouseDown:function (e) {}, onTreeClick:function (e) {var domElement = e.target;var node = this.domElement2TreeNode(domElement);if (!node || !node.isTreeNode) {return;}
+var checkExpandClick = function (el) {return el === node.expandNode;};if (this.checkPathCondition(domElement, checkExpandClick)) {this.processExpandClick(node);}
+this._focusLabel(node);}, processExpandClick:function (node) {if (node.isExpanded) {this.collapse(node);} else {this.expand(node);}}, batchExpandTimeout:20, expandAll:function (nodeOrTree) {return this.expandToLevel(nodeOrTree, Number.POSITIVE_INFINITY);}, collapseAll:function (nodeOrTree) {var _this = this;var filter = function (elem) {return (elem instanceof dojo.widget.Widget) && elem.isFolder && elem.isExpanded;};if (nodeOrTree.isTreeNode) {this.processDescendants(nodeOrTree, filter, this.collapse);} else {if (nodeOrTree.isTree) {dojo.lang.forEach(nodeOrTree.children, function (c) {_this.processDescendants(c, filter, _this.collapse);});}}
+}, expandToNode:function (node, withSelected) {n = withSelected ? node : node.parent;s = [];while (!n.isExpanded) {s.push(n);n = n.parent;}
+dojo.lang.forEach(s, function (n) {n.expand();});}, expandToLevel:function (nodeOrTree, level) {dojo.require("dojo.widget.TreeTimeoutIterator");var _this = this;var filterFunc = function (elem) {var res = elem.isFolder || elem.children && elem.children.length;return res;};var callFunc = function (node, iterator) {_this.expand(node, true);iterator.forward();};var iterator = new dojo.widget.TreeTimeoutIterator(nodeOrTree, callFunc, this);iterator.setFilter(filterFunc);iterator.timeout = this.batchExpandTimeout;iterator.setMaxLevel(nodeOrTree.isTreeNode ? level - 1 : level);return iterator.start(nodeOrTree.isTreeNode);}, getWidgetByNode:function (node) {var widgetId;var newNode = node;while (!(widgetId = newNode.widgetId)) {newNode = newNode.parentNode;if (newNode == null) {break;}}
+if (widgetId) {return dojo.widget.byId(widgetId);} else {if (node == null) {return null;} else {return dojo.widget.manager.byNode(node);}}
+}, expand:function (node) {if (node.isFolder) {node.expand();}}, collapse:function (node) {if (node.isFolder) {node.collapse();}}, canEditLabel:function (node) {if (node.actionIsDisabledNow(node.actions.EDIT)) {return false;}
+return true;}, editLabelStart:function (node) {if (!this.canEditLabel(node)) {return false;}
+if (!this.editor.isClosed()) {this.editLabelFinish(this.editor.saveOnBlur);}
+this.doEditLabelStart(node);}, editLabelFinish:function (save) {this.doEditLabelFinish(save);}, doEditLabelStart:function (node) {if (!this.editor) {dojo.raise(this.widgetType + ": no editor specified");}
+this.editor.open(node);}, doEditLabelFinish:function (save, server_data) {if (!this.editor) {dojo.raise(this.widgetType + ": no editor specified");}
+var node = this.editor.node;var editorTitle = this.editor.getContents();this.editor.close(save);if (save) {var data = {title:editorTitle};if (server_data) {dojo.lang.mixin(data, server_data);}
+if (node.isPhantom) {var parent = node.parent;var index = node.getParentIndex();node.destroy();dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(this, parent, index, data);} else {var title = server_data && server_data.title ? server_data.title : editorTitle;node.setTitle(title);}} else {if (node.isPhantom) {node.destroy();}}
+}, makeDefaultNode:function (parent, index) {var data = {title:parent.tree.defaultChildTitle};return dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(this, parent, index, data);}, runStages:function (check, prepare, make, finalize, expose, args) {if (check && !check.apply(this, args)) {return false;}
+if (prepare && !prepare.apply(this, args)) {return false;}
+var result = make.apply(this, args);if (finalize) {finalize.apply(this, args);}
+if (!result) {return result;}
+if (expose) {expose.apply(this, args);}
+return result;}});dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {createAndEdit:function (parent, index) {var data = {title:parent.tree.defaultChildTitle};if (!this.canCreateChild(parent, index, data)) {return false;}
+var child = this.doCreateChild(parent, index, data);if (!child) {return false;}
+this.exposeCreateChild(parent, index, data);child.isPhantom = true;if (!this.editor.isClosed()) {this.editLabelFinish(this.editor.saveOnBlur);}
+this.doEditLabelStart(child);}});dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canClone:function (child, newParent, index, deep) {return true;}, clone:function (child, newParent, index, deep) {return this.runStages(this.canClone, this.prepareClone, this.doClone, this.finalizeClone, this.exposeClone, arguments);}, exposeClone:function (child, newParent) {if (newParent.isTreeNode) {this.expand(newParent);}}, doClone:function (child, newParent, index, deep) {var cloned = child.clone(deep);newParent.addChild(cloned, index);return cloned;}});dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canDetach:function (child) {if (child.actionIsDisabledNow(child.actions.DETACH)) {return false;}
+return true;}, detach:function (node) {return this.runStages(this.canDetach, this.prepareDetach, this.doDetach, this.finalizeDetach, this.exposeDetach, arguments);}, doDetach:function (node, callObj, callFunc) {node.detach();}});dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canDestroyChild:function (child) {if (child.parent && !this.canDetach(child)) {return false;}
+return true;}, destroyChild:function (node) {return this.runStages(this.canDestroyChild, this.prepareDestroyChild, this.doDestroyChild, this.finalizeDestroyChild, this.exposeDestroyChild, arguments);}, doDestroyChild:function (node) {node.destroy();}});dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canMoveNotANode:function (child, parent) {if (child.treeCanMove) {return child.treeCanMove(parent);}
+return true;}, canMove:function (child, newParent) {if (!child.isTreeNode) {return this.canMoveNotANode(child, newParent);}
+if (child.actionIsDisabledNow(child.actions.MOVE)) {return false;}
+if (child.parent !== newParent && newParent.actionIsDisabledNow(newParent.actions.ADDCHILD)) {return false;}
+var node = newParent;while (node.isTreeNode) {if (node === child) {return false;}
+node = node.parent;}
+return true;}, move:function (child, newParent, index) {return this.runStages(this.canMove, this.prepareMove, this.doMove, this.finalizeMove, this.exposeMove, arguments);}, doMove:function (child, newParent, index) {child.tree.move(child, newParent, index);return true;}, exposeMove:function (child, newParent) {if (newParent.isTreeNode) {this.expand(newParent);}}});dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canCreateChild:function (parent, index, data) {if (parent.actionIsDisabledNow(parent.actions.ADDCHILD)) {return false;}
+return true;}, createChild:function (parent, index, data) {if (!data) {data = {title:parent.tree.defaultChildTitle};}
+return this.runStages(this.canCreateChild, this.prepareCreateChild, this.doCreateChild, this.finalizeCreateChild, this.exposeCreateChild, [parent, index, data]);}, prepareCreateChild:function () {return true;}, finalizeCreateChild:function () {}, doCreateChild:function (parent, index, data) {var newChild = parent.tree.createNode(data);parent.addChild(newChild, index);return newChild;}, exposeCreateChild:function (parent) {return this.expand(parent);}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicControllerV3.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicControllerV3.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeBasicControllerV3.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeCommon.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeCommon.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeCommon.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeCommon.js Tue May  8 19:56:15 2007
@@ -0,0 +1,13 @@
+
+dojo.provide("dojo.widget.TreeCommon");dojo.require("dojo.widget.*");dojo.declare("dojo.widget.TreeCommon", null, {listenTreeEvents:[], listenedTrees:{}, listenNodeFilter:null, listenTree:function (tree) {var _this = this;if (this.listenedTrees[tree.widgetId]) {return;}
+dojo.lang.forEach(this.listenTreeEvents, function (event) {var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);dojo.event.topic.subscribe(tree.eventNames[event], _this, eventHandler);});var filter;if (this.listenNodeFilter) {this.processDescendants(tree, this.listenNodeFilter, this.listenNode, true);}
+this.listenedTrees[tree.widgetId] = true;}, listenNode:function () {}, unlistenNode:function () {}, unlistenTree:function (tree, nodeFilter) {var _this = this;if (!this.listenedTrees[tree.widgetId]) {return;}
+dojo.lang.forEach(this.listenTreeEvents, function (event) {var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);dojo.event.topic.unsubscribe(tree.eventNames[event], _this, eventHandler);});if (this.listenNodeFilter) {this.processDescendants(tree, this.listenNodeFilter, this.unlistenNode, true);}
+delete this.listenedTrees[tree.widgetId];}, checkPathCondition:function (domElement, condition) {while (domElement && !domElement.widgetId) {if (condition.call(null, domElement)) {return true;}
+domElement = domElement.parentNode;}
+return false;}, domElement2TreeNode:function (domElement) {while (domElement && !domElement.widgetId) {domElement = domElement.parentNode;}
+if (!domElement) {return null;}
+var widget = dojo.widget.byId(domElement.widgetId);if (!widget.isTreeNode) {return null;}
+return widget;}, processDescendants:function (elem, filter, func, skipFirst) {var _this = this;if (!skipFirst) {if (!filter.call(_this, elem)) {return;}
+func.call(_this, elem);}
+var stack = [elem];while (elem = stack.pop()) {dojo.lang.forEach(elem.children, function (elem) {if (filter.call(_this, elem)) {func.call(_this, elem);stack.push(elem);}});}}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeCommon.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeCommon.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeCommon.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenu.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenu.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenu.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenu.js Tue May  8 19:56:15 2007
@@ -0,0 +1,8 @@
+
+dojo.provide("dojo.widget.TreeContextMenu");dojo.require("dojo.event.*");dojo.require("dojo.io.*");dojo.require("dojo.widget.Menu2");dojo.widget.defineWidget("dojo.widget.TreeContextMenu", dojo.widget.PopupMenu2, function () {this.listenedTrees = [];}, {open:function (x, y, parentMenu, explodeSrc) {var result = dojo.widget.PopupMenu2.prototype.open.apply(this, arguments);dojo.event.topic.publish(this.eventNames.open, {menu:this});return result;}, listenTree:function (tree) {var nodes = tree.getDescendants();for (var i = 0; i < nodes.length; i++) {if (!nodes[i].isTreeNode) {continue;}
+this.bindDomNode(nodes[i].labelNode);}
+var _this = this;dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");dojo.event.topic.subscribe(tree.eventNames.moveTo, this, "onMoveTo");dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");dojo.event.topic.subscribe(tree.eventNames.addChild, this, "onAddChild");dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");this.listenedTrees.push(tree);}, unlistenTree:function (tree) {dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");dojo.event.topic.unsubscribe(tree.eventNames.moveTo, this, "onMoveTo");dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");dojo.event.topic.unsubscribe(tree.eventNames.addChild, this, "onAddChild");dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTre
 eDestroy");for (var i = 0; i < this.listenedTrees.length; i++) {if (this.listenedTrees[i] === tree) {this.listenedTrees.splice(i, 1);break;}}
+}, onTreeDestroy:function (message) {this.unlistenTree(message.source);}, bindTreeNode:function (node) {var _this = this;dojo.lang.forEach(node.getDescendants(), function (e) {_this.bindDomNode(e.labelNode);});}, unBindTreeNode:function (node) {var _this = this;dojo.lang.forEach(node.getDescendants(), function (e) {_this.unBindDomNode(e.labelNode);});}, onCreateDOMNode:function (message) {this.bindTreeNode(message.source);}, onMoveFrom:function (message) {if (!dojo.lang.inArray(this.listenedTrees, message.newTree)) {this.unBindTreeNode(message.child);}}, onMoveTo:function (message) {if (dojo.lang.inArray(this.listenedTrees, message.newTree)) {this.bindTreeNode(message.child);}}, onRemoveNode:function (message) {this.unBindTreeNode(message.child);}, onAddChild:function (message) {if (message.domNodeInitialized) {this.bindTreeNode(message.child);}}});dojo.widget.defineWidget("dojo.widget.TreeMenuItem", dojo.widget.MenuItem2, {treeActions:"", initialize:function (args, frag) {t
 his.treeActions = this.treeActions.split(",");for (var i = 0; i < this.treeActions.length; i++) {this.treeActions[i] = this.treeActions[i].toUpperCase();}}, getTreeNode:function () {var menu = this;while (!(menu instanceof dojo.widget.TreeContextMenu)) {menu = menu.parent;}
+var source = menu.getTopOpenEvent().target;while (!source.getAttribute("treeNode") && source.tagName != "body") {source = source.parentNode;}
+if (source.tagName == "body") {dojo.raise("treeNode not detected");}
+var treeNode = dojo.widget.manager.getWidgetById(source.getAttribute("treeNode"));return treeNode;}, menuOpen:function (message) {var treeNode = this.getTreeNode();this.setDisabled(false);var _this = this;dojo.lang.forEach(_this.treeActions, function (action) {_this.setDisabled(treeNode.actionIsDisabled(action));});}, toString:function () {return "[" + this.widgetType + " node " + this.getTreeNode() + "]";}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenu.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenu.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenu.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenuV3.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenuV3.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenuV3.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenuV3.js Tue May  8 19:56:15 2007
@@ -0,0 +1,5 @@
+
+dojo.provide("dojo.widget.TreeContextMenuV3");dojo.require("dojo.event.*");dojo.require("dojo.io.*");dojo.require("dojo.widget.*");dojo.require("dojo.widget.Menu2");dojo.require("dojo.widget.TreeCommon");dojo.widget.defineWidget("dojo.widget.TreeContextMenuV3", [dojo.widget.PopupMenu2, dojo.widget.TreeCommon], function () {this.listenedTrees = {};}, {listenTreeEvents:["afterTreeCreate", "beforeTreeDestroy"], listenNodeFilter:function (elem) {return elem instanceof dojo.widget.Widget;}, onAfterTreeCreate:function (message) {var tree = message.source;this.bindDomNode(tree.domNode);}, onBeforeTreeDestroy:function (message) {this.unBindDomNode(message.source.domNode);}, getTreeNode:function () {var source = this.getTopOpenEvent().target;var treeNode = this.domElement2TreeNode(source);return treeNode;}, open:function () {var result = dojo.widget.PopupMenu2.prototype.open.apply(this, arguments);for (var i = 0; i < this.children.length; i++) {if (this.children[i].menuOpen) {this.ch
 ildren[i].menuOpen(this.getTreeNode());}}
+return result;}, close:function () {for (var i = 0; i < this.children.length; i++) {if (this.children[i].menuClose) {this.children[i].menuClose(this.getTreeNode());}}
+var result = dojo.widget.PopupMenu2.prototype.close.apply(this, arguments);return result;}});dojo.widget.defineWidget("dojo.widget.TreeMenuItemV3", [dojo.widget.MenuItem2, dojo.widget.TreeCommon], function () {this.treeActions = [];}, {treeActions:"", initialize:function (args, frag) {for (var i = 0; i < this.treeActions.length; i++) {this.treeActions[i] = this.treeActions[i].toUpperCase();}}, getTreeNode:function () {var menu = this;while (!(menu instanceof dojo.widget.TreeContextMenuV3)) {menu = menu.parent;}
+var treeNode = menu.getTreeNode();return treeNode;}, menuOpen:function (treeNode) {treeNode.viewEmphasize();this.setDisabled(false);var _this = this;dojo.lang.forEach(_this.treeActions, function (action) {_this.setDisabled(treeNode.actionIsDisabledNow(action));});}, menuClose:function (treeNode) {treeNode.viewUnemphasize();}, toString:function () {return "[" + this.widgetType + " node " + this.getTreeNode() + "]";}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenuV3.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenuV3.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeContextMenuV3.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeControllerExtension.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeControllerExtension.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeControllerExtension.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeControllerExtension.js Tue May  8 19:56:15 2007
@@ -0,0 +1,7 @@
+
+dojo.provide("dojo.widget.TreeControllerExtension");dojo.declare("dojo.widget.TreeControllerExtension", null, {saveExpandedIndices:function (node, field) {var obj = {};for (var i = 0; i < node.children.length; i++) {if (node.children[i].isExpanded) {var key = dojo.lang.isUndefined(field) ? i : node.children[i][field];obj[key] = this.saveExpandedIndices(node.children[i], field);}}
+return obj;}, restoreExpandedIndices:function (node, savedIndices, field) {var _this = this;var handler = function (node, savedIndices) {this.node = node;this.savedIndices = savedIndices;this.process = function () {_this.restoreExpandedIndices(this.node, this.savedIndices, field);};};for (var i = 0; i < node.children.length; i++) {var child = node.children[i];var found = false;var key = -1;if (dojo.lang.isUndefined(field) && savedIndices[i]) {found = true;key = i;}
+if (field) {for (var key in savedIndices) {if (key == child[field]) {found = true;break;}}
+}
+if (found) {var h = new handler(child, savedIndices[key]);_this.expand(child, false, h, h.process);} else {if (child.isExpanded) {dojo.lang.forEach(child.getDescendants(), function (elem) {_this.collapse(elem);});}}
+}}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeControllerExtension.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeControllerExtension.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeControllerExtension.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDemo.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDemo.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDemo.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDemo.js Tue May  8 19:56:15 2007
@@ -0,0 +1,5 @@
+
+dojo.provide("dojo.widget.TreeDemo");dojo.require("dojo.Deferred");dojo.widget.TreeDemo = {reportIfDefered:function (res) {if (res instanceof dojo.Deferred) {res.addCallbacks(function (res) {return res;}, function (err) {dojo.debug("Error");dojo.debugShallow(err);});}}, resetRandomChildren:function (maxCount) {this.randomChildrenMaxCount = maxCount;this.randomChildrenCount = 0;this.randomChildrenDepth = 0;}, makeRandomChildren:function (title) {this.randomChildrenDepth++;var children = [];for (var i = 1; i <= 5; i++) {var t = title + (this.randomChildrenDepth == 1 ? "" : ".") + i;var node = {title:t};children.push(node);this.randomChildrenCount++;if (this.randomChildrenCount >= this.randomChildrenMaxCount) {break;}}
+var i = 1;var _this = this;dojo.lang.forEach(children, function (child) {var t = title + (_this.randomChildrenDepth == 1 ? "" : ".") + i;i++;if (_this.randomChildrenCount < _this.randomChildrenMaxCount && (_this.randomChildrenDepth == 1 && child === children[0] || _this.randomChildrenDepth < 5 && Math.random() > 0.3)) {child.children = _this.makeRandomChildren(t);}});this.randomChildrenDepth--;return children;}, bindDemoMenu:function (controller) {var _t = this;dojo.event.topic.subscribe("treeContextMenuDestroy/engage", function (menuItem) {var node = menuItem.getTreeNode();_t.reportIfDefered(controller.destroyChild(node));});dojo.event.topic.subscribe("treeContextMenuRefresh/engage", function (menuItem) {var node = menuItem.getTreeNode();_t.reportIfDefered(controller.refreshChildren(node));});dojo.event.topic.subscribe("treeContextMenuCreate/engage", function (menuItem) {var node = menuItem.getTreeNode();var d = controller.createAndEdit(node, 0);_t.reportIfDefered(d);});doj
 o.event.topic.subscribe("treeContextMenuUp/engage", function (menuItem) {var node = menuItem.getTreeNode();if (node.isFirstChild()) {return;}
+_t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() - 1));});dojo.event.topic.subscribe("treeContextMenuDown/engage", function (menuItem) {var node = menuItem.getTreeNode();if (node.isLastChild()) {return;}
+_t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() + 1));});dojo.event.topic.subscribe("treeContextMenuEdit/engage", function (menuItem) {var node = menuItem.getTreeNode();_t.reportIfDefered(controller.editLabelStart(node));});}};
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDemo.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDemo.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDemo.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDeselectOnDblselect.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDeselectOnDblselect.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDeselectOnDblselect.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDeselectOnDblselect.js Tue May  8 19:56:15 2007
@@ -0,0 +1,2 @@
+
+dojo.provide("dojo.widget.TreeDeselectOnDblselect");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeSelectorV3");dojo.deprecated("Does anyone still need this extension? (TreeDeselectOnDblselect)");dojo.widget.defineWidget("dojo.widget.TreeDeselectOnDblselect", [dojo.widget.HtmlWidget], {selector:"", initialize:function () {this.selector = dojo.widget.byId(this.selector);dojo.event.topic.subscribe(this.selector.eventNames.dblselect, this, "onDblselect");}, onDblselect:function (message) {this.selector.deselect(message.node);}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDeselectOnDblselect.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDeselectOnDblselect.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDeselectOnDblselect.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDisableWrapExtension.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDisableWrapExtension.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDisableWrapExtension.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDisableWrapExtension.js Tue May  8 19:56:15 2007
@@ -0,0 +1,4 @@
+
+dojo.provide("dojo.widget.TreeDisableWrapExtension");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeExtension");dojo.widget.defineWidget("dojo.widget.TreeDisableWrapExtension", dojo.widget.TreeExtension, {templateCssString:"\n\n\n.TreeDisableWrap {\n\twhite-space: nowrap;\n}\n.TreeIEDisableWrap {\n\twidth: expression( 5 + firstChild.offsetWidth );\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeDisableWrap.css"), listenTree:function (tree) {var wrappingDiv = document.createElement("div");var clazz = tree.classPrefix + "DisableWrap";if (dojo.render.html.ie) {clazz = clazz + " " + tree.classPrefix + "IEDisableWrap";}
+dojo.html.setClass(wrappingDiv, clazz);var table = document.createElement("table");wrappingDiv.appendChild(table);var tbody = document.createElement("tbody");table.appendChild(tbody);var tr = document.createElement("tr");tbody.appendChild(tr);var td = document.createElement("td");tr.appendChild(td);if (tree.domNode.parentNode) {tree.domNode.parentNode.replaceChild(wrappingDiv, tree.domNode);}
+td.appendChild(tree.domNode);tree.domNode = wrappingDiv;}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDisableWrapExtension.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDisableWrapExtension.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDisableWrapExtension.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDndControllerV3.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDndControllerV3.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDndControllerV3.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDndControllerV3.js Tue May  8 19:56:15 2007
@@ -0,0 +1,8 @@
+
+dojo.provide("dojo.widget.TreeDndControllerV3");dojo.require("dojo.dnd.TreeDragAndDropV3");dojo.require("dojo.experimental");dojo.experimental("Tree drag'n'drop' has lots of problems/bugs, it requires dojo drag'n'drop overhaul to work, probably in 0.5");dojo.widget.defineWidget("dojo.widget.TreeDndControllerV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {this.dragSources = {};this.dropTargets = {};this.listenedTrees = {};}, {listenTreeEvents:["afterChangeTree", "beforeTreeDestroy", "afterAddChild"], listenNodeFilter:function (elem) {return elem instanceof dojo.widget.Widget;}, initialize:function (args) {this.treeController = dojo.lang.isString(args.controller) ? dojo.widget.byId(args.controller) : args.controller;if (!this.treeController) {dojo.raise("treeController must be declared");}}, onBeforeTreeDestroy:function (message) {this.unlistenTree(message.source);}, onAfterAddChild:function (message) {this.listenNode(message.child);}, onAfterChangeTree:fun
 ction (message) {if (!message.oldTree) {return;}
+if (!message.newTree || !this.listenedTrees[message.newTree.widgetId]) {this.processDescendants(message.node, this.listenNodeFilter, this.unlistenNode);}
+if (!this.listenedTrees[message.oldTree.widgetId]) {this.processDescendants(message.node, this.listenNodeFilter, this.listenNode);}}, listenNode:function (node) {if (!node.tree.DndMode) {return;}
+if (this.dragSources[node.widgetId] || this.dropTargets[node.widgetId]) {return;}
+var source = null;var target = null;if (!node.actionIsDisabled(node.actions.MOVE)) {var source = this.makeDragSource(node);this.dragSources[node.widgetId] = source;}
+var target = this.makeDropTarget(node);this.dropTargets[node.widgetId] = target;}, makeDragSource:function (node) {return new dojo.dnd.TreeDragSourceV3(node.contentNode, this, node.tree.widgetId, node);}, makeDropTarget:function (node) {return new dojo.dnd.TreeDropTargetV3(node.contentNode, this.treeController, node.tree.DndAcceptTypes, node);}, unlistenNode:function (node) {if (this.dragSources[node.widgetId]) {dojo.dnd.dragManager.unregisterDragSource(this.dragSources[node.widgetId]);delete this.dragSources[node.widgetId];}
+if (this.dropTargets[node.widgetId]) {dojo.dnd.dragManager.unregisterDropTarget(this.dropTargets[node.widgetId]);delete this.dropTargets[node.widgetId];}}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDndControllerV3.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDndControllerV3.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDndControllerV3.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDocIconExtension.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDocIconExtension.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDocIconExtension.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDocIconExtension.js Tue May  8 19:56:15 2007
@@ -0,0 +1,4 @@
+
+dojo.provide("dojo.widget.TreeDocIconExtension");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeExtension");dojo.widget.defineWidget("dojo.widget.TreeDocIconExtension", [dojo.widget.TreeExtension], {templateCssString:"\n\n\n\n\n.TreeStateChildrenYes-ExpandOpen .TreeIconContent {\nbackground-image : url('../templates/images/TreeV3/i_long.gif');\nbackground-repeat : no-repeat;\nbackground-position: 18px 9px;\n}\n\n\n.TreeStateChildrenYes-ExpandClosed .TreeIconContent {\nbackground-image : url();\n}\n\n\n.TreeStateChildrenNo-ExpandLeaf .TreeIconContent {\nbackground-image : url();\n}\n\n.TreeStateChildrenNo-ExpandClosed .TreeIconContent {\nbackground-image : url();\n}\n\n.TreeStateChildrenNo-ExpandOpen .TreeIconContent {\nbackground-image : url();\n}\n\n\n\n.TreeIconDocument {\nbackground-image: url('../templates/images/TreeV3/document.gif');\n}\n\n.TreeExpandOpen .TreeIconFolder {\nbackground-image: url('../templates/images/TreeV3/open.gif');\n}\n\n.TreeE
 xpandClosed .TreeIconFolder {\nbackground-image: url('../templates/images/TreeV3/closed.gif');\n}\n\n\n.TreeIcon {\nwidth: 18px;\nheight: 18px;\nfloat: left;\ndisplay: inline;\nbackground-repeat : no-repeat;\n}\n\ndiv.TreeContent {\nmargin-left: 36px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeDocIcon.css"), listenTreeEvents:["afterChangeTree", "afterSetFolder", "afterUnsetFolder"], listenNodeFilter:function (elem) {return elem instanceof dojo.widget.Widget;}, getnodeDocType:function (node) {var nodeDocType = node.getnodeDocType();if (!nodeDocType) {nodeDocType = node.isFolder ? "Folder" : "Document";}
+return nodeDocType;}, setnodeDocTypeClass:function (node) {var reg = new RegExp("(^|\\s)" + node.tree.classPrefix + "Icon\\w+", "g");var clazz = dojo.html.getClass(node.iconNode).replace(reg, "") + " " + node.tree.classPrefix + "Icon" + this.getnodeDocType(node);dojo.html.setClass(node.iconNode, clazz);}, onAfterSetFolder:function (message) {if (message.source.iconNode) {this.setnodeDocTypeClass(message.source);}}, onAfterUnsetFolder:function (message) {this.setnodeDocTypeClass(message.source);}, listenNode:function (node) {node.contentIconNode = document.createElement("div");var clazz = node.tree.classPrefix + "IconContent";if (dojo.render.html.ie) {clazz = clazz + " " + node.tree.classPrefix + "IEIconContent";}
+dojo.html.setClass(node.contentIconNode, clazz);node.contentNode.parentNode.replaceChild(node.contentIconNode, node.expandNode);node.iconNode = document.createElement("div");dojo.html.setClass(node.iconNode, node.tree.classPrefix + "Icon" + " " + node.tree.classPrefix + "Icon" + this.getnodeDocType(node));node.contentIconNode.appendChild(node.expandNode);node.contentIconNode.appendChild(node.iconNode);dojo.dom.removeNode(node.contentNode);node.contentIconNode.appendChild(node.contentNode);}, onAfterChangeTree:function (message) {var _this = this;if (!message.oldTree || !this.listenedTrees[message.oldTree.widgetId]) {this.processDescendants(message.node, this.listenNodeFilter, this.listenNode);}}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDocIconExtension.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDocIconExtension.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeDocIconExtension.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEditor.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEditor.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEditor.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEditor.js Tue May  8 19:56:15 2007
@@ -0,0 +1,8 @@
+
+dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.RichText");dojo.provide("dojo.widget.TreeEditor");dojo.widget.defineWidget("dojo.widget.TreeEditor", dojo.widget.HtmlWidget, {singleLineMode:false, saveOnBlur:true, sync:false, selectOnOpen:true, controller:null, node:null, richTextParams:{styleSheets:"src/widget/templates/TreeEditor.css"}, getContents:function () {return this.richText.getEditorContent();}, open:function (node) {if (!this.richText) {this.richText = dojo.widget.createWidget("RichText", this.richTextParams, node.labelNode);dojo.event.connect("around", this.richText, "onKeyDown", this, "richText_onKeyDown");dojo.event.connect(this.richText, "onBlur", this, "richText_onBlur");var self = this;dojo.event.connect(this.richText, "onLoad", function () {if (self.selectOnOpen) {self.richText.execCommand("selectall");}});} else {this.richText.open(node.labelNode);}
+this.node = node;}, close:function (save) {this.richText.close(save);this.node = null;}, isClosed:function () {return !this.richText || this.richText.isClosed;}, execCommand:function () {this.richText.execCommand.apply(this.richText, arguments);}, richText_onKeyDown:function (invocation) {var e = invocation.args[0];if ((!e) && (this.object)) {e = dojo.event.browser.fixEvent(this.editor.window.event);}
+switch (e.keyCode) {case e.KEY_ESCAPE:
+this.finish(false);dojo.event.browser.stopEvent(e);break;case e.KEY_ENTER:
+if (e.ctrlKey && !this.singleLineMode) {this.execCommand("inserthtml", "<br/>");} else {this.finish(true);}
+dojo.event.browser.stopEvent(e);break;default:
+return invocation.proceed();}}, richText_onBlur:function () {this.finish(this.saveOnBlur);}, finish:function (save) {return this.controller.editLabelFinish(save, this.sync);}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEditor.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEditor.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEditor.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphasizeOnSelect.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphasizeOnSelect.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphasizeOnSelect.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphasizeOnSelect.js Tue May  8 19:56:15 2007
@@ -0,0 +1,2 @@
+
+dojo.provide("dojo.widget.TreeEmphasizeOnSelect");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeSelectorV3");dojo.require("dojo.html.selection");dojo.widget.defineWidget("dojo.widget.TreeEmphasizeOnSelect", dojo.widget.HtmlWidget, {selector:"", initialize:function () {this.selector = dojo.widget.byId(this.selector);dojo.event.topic.subscribe(this.selector.eventNames.select, this, "onSelect");dojo.event.topic.subscribe(this.selector.eventNames.deselect, this, "onDeselect");}, onSelect:function (message) {message.node.viewEmphasize();}, onDeselect:function (message) {message.node.viewUnemphasize();}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphasizeOnSelect.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphasizeOnSelect.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphasizeOnSelect.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExpandToNodeOnSelect.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExpandToNodeOnSelect.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExpandToNodeOnSelect.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExpandToNodeOnSelect.js Tue May  8 19:56:15 2007
@@ -0,0 +1,2 @@
+
+dojo.provide("dojo.widget.TreeExpandToNodeOnSelect");dojo.require("dojo.widget.HtmlWidget");dojo.widget.defineWidget("dojo.widget.TreeExpandToNodeOnSelect", dojo.widget.HtmlWidget, {selector:"", controller:"", withSelected:false, initialize:function () {this.selector = dojo.widget.byId(this.selector);this.controller = dojo.widget.byId(this.controller);dojo.event.topic.subscribe(this.selector.eventNames.select, this, "onSelect");}, onSelectEvent:function (message) {this.controller.expandToNode(message.node, this.withSelected);}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExpandToNodeOnSelect.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExpandToNodeOnSelect.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExpandToNodeOnSelect.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExtension.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExtension.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExtension.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExtension.js Tue May  8 19:56:15 2007
@@ -0,0 +1,2 @@
+
+dojo.provide("dojo.widget.TreeExtension");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeCommon");dojo.widget.defineWidget("dojo.widget.TreeExtension", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {this.listenedTrees = {};}, {});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExtension.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExtension.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeExtension.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLinkExtension.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLinkExtension.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLinkExtension.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLinkExtension.js Tue May  8 19:56:15 2007
@@ -0,0 +1,5 @@
+
+dojo.provide("dojo.widget.TreeLinkExtension");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeExtension");dojo.widget.defineWidget("dojo.widget.TreeLinkExtension", dojo.widget.TreeExtension, function () {this.params = {};}, {listenTreeEvents:["afterChangeTree"], listenTree:function (tree) {dojo.widget.TreeCommon.prototype.listenTree.call(this, tree);var labelNode = tree.labelNodeTemplate;var newLabel = this.makeALabel();dojo.html.setClass(newLabel, dojo.html.getClass(labelNode));labelNode.parentNode.replaceChild(newLabel, labelNode);}, makeALabel:function () {var newLabel = document.createElement("a");for (var key in this.params) {if (key in {}) {continue;}
+newLabel.setAttribute(key, this.params[key]);}
+return newLabel;}, onAfterChangeTree:function (message) {var _this = this;if (!message.oldTree) {this.listenNode(message.node);}}, listenNode:function (node) {for (var key in node.object) {if (key in {}) {continue;}
+node.labelNode.setAttribute(key, node.object[key]);}}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLinkExtension.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLinkExtension.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLinkExtension.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingController.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingController.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingController.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingController.js Tue May  8 19:56:15 2007
@@ -0,0 +1,12 @@
+
+dojo.provide("dojo.widget.TreeLoadingController");dojo.require("dojo.widget.TreeBasicController");dojo.require("dojo.event.*");dojo.require("dojo.json");dojo.require("dojo.io.*");dojo.widget.defineWidget("dojo.widget.TreeLoadingController", dojo.widget.TreeBasicController, {RPCUrl:"", RPCActionParam:"action", RPCErrorHandler:function (type, obj, evt) {alert("RPC Error: " + (obj.message || "no message"));}, preventCache:true, getRPCUrl:function (action) {if (this.RPCUrl == "local") {var dir = document.location.href.substr(0, document.location.href.lastIndexOf("/"));var localUrl = dir + "/" + action;return localUrl;}
+if (!this.RPCUrl) {dojo.raise("Empty RPCUrl: can't load");}
+return this.RPCUrl + (this.RPCUrl.indexOf("?") > -1 ? "&" : "?") + this.RPCActionParam + "=" + action;}, loadProcessResponse:function (node, result, callObj, callFunc) {if (!dojo.lang.isUndefined(result.error)) {this.RPCErrorHandler("server", result.error);return false;}
+var newChildren = result;if (!dojo.lang.isArray(newChildren)) {dojo.raise("loadProcessResponse: Not array loaded: " + newChildren);}
+for (var i = 0; i < newChildren.length; i++) {newChildren[i] = dojo.widget.createWidget(node.widgetType, newChildren[i]);node.addChild(newChildren[i]);}
+node.state = node.loadStates.LOADED;if (dojo.lang.isFunction(callFunc)) {callFunc.apply(dojo.lang.isUndefined(callObj) ? this : callObj, [node, newChildren]);}}, getInfo:function (obj) {return obj.getInfo();}, runRPC:function (kw) {var _this = this;var handle = function (type, data, evt) {if (kw.lock) {dojo.lang.forEach(kw.lock, function (t) {t.unlock();});}
+if (type == "load") {kw.load.call(this, data);} else {this.RPCErrorHandler(type, data, evt);}};if (kw.lock) {dojo.lang.forEach(kw.lock, function (t) {t.lock();});}
+dojo.io.bind({url:kw.url, handle:dojo.lang.hitch(this, handle), mimetype:"text/json", preventCache:_this.preventCache, sync:kw.sync, content:{data:dojo.json.serialize(kw.params)}});}, loadRemote:function (node, sync, callObj, callFunc) {var _this = this;var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};this.runRPC({url:this.getRPCUrl("getChildren"), load:function (result) {_this.loadProcessResponse(node, result, callObj, callFunc);}, sync:sync, lock:[node], params:params});}, expand:function (node, sync, callObj, callFunc) {if (node.state == node.loadStates.UNCHECKED && node.isFolder) {this.loadRemote(node, sync, this, function (node, newChildren) {this.expand(node, sync, callObj, callFunc);});return;}
+dojo.widget.TreeBasicController.prototype.expand.apply(this, arguments);}, doMove:function (child, newParent, index) {if (newParent.isTreeNode && newParent.state == newParent.loadStates.UNCHECKED) {this.loadRemote(newParent, true);}
+return dojo.widget.TreeBasicController.prototype.doMove.apply(this, arguments);}, doCreateChild:function (parent, index, data, callObj, callFunc) {if (parent.state == parent.loadStates.UNCHECKED) {this.loadRemote(parent, true);}
+return dojo.widget.TreeBasicController.prototype.doCreateChild.apply(this, arguments);}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingController.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingController.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingController.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingControllerV3.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingControllerV3.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingControllerV3.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingControllerV3.js Tue May  8 19:56:15 2007
@@ -0,0 +1,27 @@
+
+dojo.provide("dojo.widget.TreeLoadingControllerV3");dojo.require("dojo.widget.TreeBasicControllerV3");dojo.require("dojo.event.*");dojo.require("dojo.json");dojo.require("dojo.io.*");dojo.require("dojo.Deferred");dojo.require("dojo.DeferredList");dojo.declare("dojo.Error", Error, function (message, extra) {this.message = message;this.extra = extra;this.stack = (new Error()).stack;});dojo.declare("dojo.CommunicationError", dojo.Error, function () {this.name = "CommunicationError";});dojo.declare("dojo.LockedError", dojo.Error, function () {this.name = "LockedError";});dojo.declare("dojo.FormatError", dojo.Error, function () {this.name = "FormatError";});dojo.declare("dojo.RpcError", dojo.Error, function () {this.name = "RpcError";});dojo.widget.defineWidget("dojo.widget.TreeLoadingControllerV3", dojo.widget.TreeBasicControllerV3, {RpcUrl:"", RpcActionParam:"action", preventCache:true, checkValidRpcResponse:function (type, obj) {if (type != "load") {var extra = {};for (var i =
  1; i < arguments.length; i++) {dojo.lang.mixin(extra, arguments[i]);}
+return new dojo.CommunicationError(obj, extra);}
+if (typeof obj != "object") {return new dojo.FormatError("Wrong server answer format " + (obj && obj.toSource ? obj.toSource() : obj) + " type " + (typeof obj), obj);}
+if (!dojo.lang.isUndefined(obj.error)) {return new dojo.RpcError(obj.error, obj);}
+return false;}, getDeferredBindHandler:function (deferred) {return dojo.lang.hitch(this, function (type, obj) {var error = this.checkValidRpcResponse.apply(this, arguments);if (error) {deferred.errback(error);return;}
+deferred.callback(obj);});}, getRpcUrl:function (action) {if (this.RpcUrl == "local") {var dir = document.location.href.substr(0, document.location.href.lastIndexOf("/"));var localUrl = dir + "/local/" + action;return localUrl;}
+if (!this.RpcUrl) {dojo.raise("Empty RpcUrl: can't load");}
+var url = this.RpcUrl;if (url.indexOf("/") != 0) {var protocol = document.location.href.replace(/:\/\/.*/, "");var prefix = document.location.href.substring(protocol.length + 3);if (prefix.lastIndexOf("/") != prefix.length - 1) {prefix = prefix.replace(/\/[^\/]+$/, "/");}
+if (prefix.lastIndexOf("/") != prefix.length - 1) {prefix = prefix + "/";}
+url = protocol + "://" + prefix + url;}
+return url + (url.indexOf("?") > -1 ? "&" : "?") + this.RpcActionParam + "=" + action;}, loadProcessResponse:function (node, result) {if (!dojo.lang.isArray(result)) {throw new dojo.FormatError("loadProcessResponse: Not array loaded: " + result);}
+node.setChildren(result);}, runRpc:function (kw) {var _this = this;var deferred = new dojo.Deferred();dojo.io.bind({url:kw.url, handle:this.getDeferredBindHandler(deferred), mimetype:"text/javascript", preventCache:this.preventCache, sync:kw.sync, content:{data:dojo.json.serialize(kw.params)}});return deferred;}, loadRemote:function (node, sync) {var _this = this;var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};var deferred = this.runRpc({url:this.getRpcUrl("getChildren"), sync:sync, params:params});deferred.addCallback(function (res) {return _this.loadProcessResponse(node, res);});return deferred;}, batchExpandTimeout:0, recurseToLevel:function (widget, level, callFunc, callObj, skipFirst, sync) {if (level == 0) {return;}
+if (!skipFirst) {var deferred = callFunc.call(callObj, widget, sync);} else {var deferred = dojo.Deferred.prototype.makeCalled();}
+var _this = this;var recurseOnExpand = function () {var children = widget.children;var deferreds = [];for (var i = 0; i < children.length; i++) {deferreds.push(_this.recurseToLevel(children[i], level - 1, callFunc, callObj, sync));}
+return new dojo.DeferredList(deferreds);};deferred.addCallback(recurseOnExpand);return deferred;}, expandToLevel:function (nodeOrTree, level, sync) {return this.recurseToLevel(nodeOrTree, nodeOrTree.isTree ? level + 1 : level, this.expand, this, nodeOrTree.isTree, sync);}, loadToLevel:function (nodeOrTree, level, sync) {return this.recurseToLevel(nodeOrTree, nodeOrTree.isTree ? level + 1 : level, this.loadIfNeeded, this, nodeOrTree.isTree, sync);}, loadAll:function (nodeOrTree, sync) {return this.loadToLevel(nodeOrTree, Number.POSITIVE_INFINITY, sync);}, expand:function (node, sync) {var _this = this;var deferred = this.startProcessing(node);deferred.addCallback(function () {return _this.loadIfNeeded(node, sync);});deferred.addCallback(function (res) {dojo.widget.TreeBasicControllerV3.prototype.expand(node);return res;});deferred.addBoth(function (res) {_this.finishProcessing(node);return res;});return deferred;}, loadIfNeeded:function (node, sync) {var deferred;if (node.sta
 te == node.loadStates.UNCHECKED && node.isFolder && !node.children.length) {deferred = this.loadRemote(node, sync);} else {deferred = new dojo.Deferred();deferred.callback();}
+return deferred;}, runStages:function (check, prepare, make, finalize, expose, args) {var _this = this;if (check && !check.apply(this, args)) {return false;}
+var deferred = dojo.Deferred.prototype.makeCalled();if (prepare) {deferred.addCallback(function () {return prepare.apply(_this, args);});}
+if (make) {deferred.addCallback(function () {var res = make.apply(_this, args);return res;});}
+if (finalize) {deferred.addBoth(function (res) {finalize.apply(_this, args);return res;});}
+if (expose) {deferred.addCallback(function (res) {expose.apply(_this, args);return res;});}
+return deferred;}, startProcessing:function (nodesArray) {var deferred = new dojo.Deferred();var nodes = dojo.lang.isArray(nodesArray) ? nodesArray : arguments;for (var i = 0; i < nodes.length; i++) {if (nodes[i].isLocked()) {deferred.errback(new dojo.LockedError("item locked " + nodes[i], nodes[i]));return deferred;}
+if (nodes[i].isTreeNode) {nodes[i].markProcessing();}
+nodes[i].lock();}
+deferred.callback();return deferred;}, finishProcessing:function (nodesArray) {var nodes = dojo.lang.isArray(nodesArray) ? nodesArray : arguments;for (var i = 0; i < nodes.length; i++) {if (!nodes[i].hasLock()) {continue;}
+nodes[i].unlock();if (nodes[i].isTreeNode) {nodes[i].unmarkProcessing();}}
+}, refreshChildren:function (nodeOrTree, sync) {return this.runStages(null, this.prepareRefreshChildren, this.doRefreshChildren, this.finalizeRefreshChildren, this.exposeRefreshChildren, arguments);}, prepareRefreshChildren:function (nodeOrTree, sync) {var deferred = this.startProcessing(nodeOrTree);nodeOrTree.destroyChildren();nodeOrTree.state = nodeOrTree.loadStates.UNCHECKED;return deferred;}, doRefreshChildren:function (nodeOrTree, sync) {return this.loadRemote(nodeOrTree, sync);}, finalizeRefreshChildren:function (nodeOrTree, sync) {this.finishProcessing(nodeOrTree);}, exposeRefreshChildren:function (nodeOrTree, sync) {nodeOrTree.expand();}, move:function (child, newParent, index) {return this.runStages(this.canMove, this.prepareMove, this.doMove, this.finalizeMove, this.exposeMove, arguments);}, doMove:function (child, newParent, index) {child.tree.move(child, newParent, index);return true;}, prepareMove:function (child, newParent, index, sync) {var deferred = this.sta
 rtProcessing(newParent);deferred.addCallback(dojo.lang.hitch(this, function () {return this.loadIfNeeded(newParent, sync);}));return deferred;}, finalizeMove:function (child, newParent) {this.finishProcessing(newParent);}, prepareCreateChild:function (parent, index, data, sync) {var deferred = this.startProcessing(parent);deferred.addCallback(dojo.lang.hitch(this, function () {return this.loadIfNeeded(parent, sync);}));return deferred;}, finalizeCreateChild:function (parent) {this.finishProcessing(parent);}, prepareClone:function (child, newParent, index, deep, sync) {var deferred = this.startProcessing(child, newParent);deferred.addCallback(dojo.lang.hitch(this, function () {return this.loadIfNeeded(newParent, sync);}));return deferred;}, finalizeClone:function (child, newParent) {this.finishProcessing(child, newParent);}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingControllerV3.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingControllerV3.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeLoadingControllerV3.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeNode.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeNode.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeNode.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeNode.js Tue May  8 19:56:15 2007
@@ -0,0 +1,25 @@
+
+dojo.provide("dojo.widget.TreeNode");dojo.require("dojo.html.*");dojo.require("dojo.event.*");dojo.require("dojo.io.*");dojo.widget.defineWidget("dojo.widget.TreeNode", dojo.widget.HtmlWidget, function () {this.actionsDisabled = [];}, {widgetType:"TreeNode", loadStates:{UNCHECKED:"UNCHECKED", LOADING:"LOADING", LOADED:"LOADED"}, actions:{MOVE:"MOVE", REMOVE:"REMOVE", EDIT:"EDIT", ADDCHILD:"ADDCHILD"}, isContainer:true, lockLevel:0, templateString:("<div class=\"dojoTreeNode\"> " + "<span treeNode=\"${this.widgetId}\" class=\"dojoTreeNodeLabel\" dojoAttachPoint=\"labelNode\"> " + "\t\t<span dojoAttachPoint=\"titleNode\" dojoAttachEvent=\"onClick: onTitleClick\" class=\"dojoTreeNodeLabelTitle\">${this.title}</span> " + "</span> " + "<span class=\"dojoTreeNodeAfterLabel\" dojoAttachPoint=\"afterLabelNode\">${this.afterLabel}</span> " + "<div dojoAttachPoint=\"containerNode\" style=\"display:none\"></div> " + "</div>").replace(/(>|<)\s+/g, "$1"), childIconSrc:"", childIconFolder
 Src:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/closed.gif"), childIconDocumentSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/document.gif"), childIcon:null, isTreeNode:true, objectId:"", afterLabel:"", afterLabelNode:null, expandIcon:null, title:"", object:"", isFolder:false, labelNode:null, titleNode:null, imgs:null, expandLevel:"", tree:null, depth:0, isExpanded:false, state:null, domNodeInitialized:false, isFirstChild:function () {return this.getParentIndex() == 0 ? true : false;}, isLastChild:function () {return this.getParentIndex() == this.parent.children.length - 1 ? true : false;}, lock:function () {return this.tree.lock.apply(this, arguments);}, unlock:function () {return this.tree.unlock.apply(this, arguments);}, isLocked:function () {return this.tree.isLocked.apply(this, arguments);}, cleanLock:function () {return this.tree.cleanLock.apply(this, arguments);}, actionIsDisabled:function (action) {var _this = this;var disabled = false;if (
 this.tree.strictFolders && action == this.actions.ADDCHILD && !this.isFolder) {disabled = true;}
+if (dojo.lang.inArray(_this.actionsDisabled, action)) {disabled = true;}
+if (this.isLocked()) {disabled = true;}
+return disabled;}, getInfo:function () {var info = {widgetId:this.widgetId, objectId:this.objectId, index:this.getParentIndex(), isFolder:this.isFolder};return info;}, initialize:function (args, frag) {this.state = this.loadStates.UNCHECKED;for (var i = 0; i < this.actionsDisabled.length; i++) {this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();}
+this.expandLevel = parseInt(this.expandLevel);}, adjustDepth:function (depthDiff) {for (var i = 0; i < this.children.length; i++) {this.children[i].adjustDepth(depthDiff);}
+this.depth += depthDiff;if (depthDiff > 0) {for (var i = 0; i < depthDiff; i++) {var img = this.tree.makeBlankImg();this.imgs.unshift(img);dojo.html.insertBefore(this.imgs[0], this.domNode.firstChild);}}
+if (depthDiff < 0) {for (var i = 0; i < -depthDiff; i++) {this.imgs.shift();dojo.html.removeNode(this.domNode.firstChild);}}
+}, markLoading:function () {this._markLoadingSavedIcon = this.expandIcon.src;this.expandIcon.src = this.tree.expandIconSrcLoading;}, unMarkLoading:function () {if (!this._markLoadingSavedIcon) {return;}
+var im = new Image();im.src = this.tree.expandIconSrcLoading;if (this.expandIcon.src == im.src) {this.expandIcon.src = this._markLoadingSavedIcon;}
+this._markLoadingSavedIcon = null;}, setFolder:function () {dojo.event.connect(this.expandIcon, "onclick", this, "onTreeClick");this.expandIcon.src = this.isExpanded ? this.tree.expandIconSrcMinus : this.tree.expandIconSrcPlus;this.isFolder = true;}, createDOMNode:function (tree, depth) {this.tree = tree;this.depth = depth;this.imgs = [];for (var i = 0; i < this.depth + 1; i++) {var img = this.tree.makeBlankImg();this.domNode.insertBefore(img, this.labelNode);this.imgs.push(img);}
+this.expandIcon = this.imgs[this.imgs.length - 1];this.childIcon = this.tree.makeBlankImg();this.imgs.push(this.childIcon);dojo.html.insertBefore(this.childIcon, this.titleNode);if (this.children.length || this.isFolder) {this.setFolder();} else {this.state = this.loadStates.LOADED;}
+dojo.event.connect(this.childIcon, "onclick", this, "onIconClick");for (var i = 0; i < this.children.length; i++) {this.children[i].parent = this;var node = this.children[i].createDOMNode(this.tree, this.depth + 1);this.containerNode.appendChild(node);}
+if (this.children.length) {this.state = this.loadStates.LOADED;}
+this.updateIcons();this.domNodeInitialized = true;dojo.event.topic.publish(this.tree.eventNames.createDOMNode, {source:this});return this.domNode;}, onTreeClick:function (e) {dojo.event.topic.publish(this.tree.eventNames.treeClick, {source:this, event:e});}, onIconClick:function (e) {dojo.event.topic.publish(this.tree.eventNames.iconClick, {source:this, event:e});}, onTitleClick:function (e) {dojo.event.topic.publish(this.tree.eventNames.titleClick, {source:this, event:e});}, markSelected:function () {dojo.html.addClass(this.titleNode, "dojoTreeNodeLabelSelected");}, unMarkSelected:function () {dojo.html.removeClass(this.titleNode, "dojoTreeNodeLabelSelected");}, updateExpandIcon:function () {if (this.isFolder) {this.expandIcon.src = this.isExpanded ? this.tree.expandIconSrcMinus : this.tree.expandIconSrcPlus;} else {this.expandIcon.src = this.tree.blankIconSrc;}}, updateExpandGrid:function () {if (this.tree.showGrid) {if (this.depth) {this.setGridImage(-2, this.isLastChild(
 ) ? this.tree.gridIconSrcL : this.tree.gridIconSrcT);} else {if (this.isFirstChild()) {this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcX : this.tree.gridIconSrcY);} else {this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcL : this.tree.gridIconSrcT);}}
+} else {this.setGridImage(-2, this.tree.blankIconSrc);}}, updateChildGrid:function () {if ((this.depth || this.tree.showRootGrid) && this.tree.showGrid) {this.setGridImage(-1, (this.children.length && this.isExpanded) ? this.tree.gridIconSrcP : this.tree.gridIconSrcC);} else {if (this.tree.showGrid && !this.tree.showRootGrid) {this.setGridImage(-1, (this.children.length && this.isExpanded) ? this.tree.gridIconSrcZ : this.tree.blankIconSrc);} else {this.setGridImage(-1, this.tree.blankIconSrc);}}
+}, updateParentGrid:function () {var parent = this.parent;for (var i = 0; i < this.depth; i++) {var idx = this.imgs.length - (3 + i);var img = (this.tree.showGrid && !parent.isLastChild()) ? this.tree.gridIconSrcV : this.tree.blankIconSrc;this.setGridImage(idx, img);parent = parent.parent;}}, updateExpandGridColumn:function () {if (!this.tree.showGrid) {return;}
+var _this = this;var icon = this.isLastChild() ? this.tree.blankIconSrc : this.tree.gridIconSrcV;dojo.lang.forEach(_this.getDescendants(), function (node) {node.setGridImage(_this.depth, icon);});this.updateExpandGrid();}, updateIcons:function () {this.imgs[0].style.display = this.tree.showRootGrid ? "inline" : "none";this.buildChildIcon();this.updateExpandGrid();this.updateChildGrid();this.updateParentGrid();dojo.profile.stop("updateIcons");}, buildChildIcon:function () {if (this.childIconSrc) {this.childIcon.src = this.childIconSrc;}
+this.childIcon.style.display = this.childIconSrc ? "inline" : "none";}, setGridImage:function (idx, src) {if (idx < 0) {idx = this.imgs.length + idx;}
+this.imgs[idx].style.backgroundImage = "url(" + src + ")";}, updateIconTree:function () {this.tree.updateIconTree.call(this);}, expand:function () {if (this.isExpanded) {return;}
+if (this.children.length) {this.showChildren();}
+this.isExpanded = true;this.updateExpandIcon();dojo.event.topic.publish(this.tree.eventNames.expand, {source:this});}, collapse:function () {if (!this.isExpanded) {return;}
+this.hideChildren();this.isExpanded = false;this.updateExpandIcon();dojo.event.topic.publish(this.tree.eventNames.collapse, {source:this});}, hideChildren:function () {this.tree.toggleObj.hide(this.containerNode, this.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onHide"));if (dojo.exists(dojo, "dnd.dragManager.dragObjects") && dojo.dnd.dragManager.dragObjects.length) {dojo.dnd.dragManager.cacheTargetLocations();}}, showChildren:function () {this.tree.toggleObj.show(this.containerNode, this.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onShow"));if (dojo.exists(dojo, "dnd.dragManager.dragObjects") && dojo.dnd.dragManager.dragObjects.length) {dojo.dnd.dragManager.cacheTargetLocations();}}, addChild:function () {return this.tree.addChild.apply(this, arguments);}, doAddChild:function () {return this.tree.doAddChild.apply(this, arguments);}, edit:function (props) {dojo.lang.mixin(this, props);if (props.title) {this.titleNode.innerHTML = this.title;}
+if (props.afterLabel) {this.afterLabelNode.innerHTML = this.afterLabel;}
+if (props.childIconSrc) {this.buildChildIcon();}}, removeNode:function () {return this.tree.removeNode.apply(this, arguments);}, doRemoveNode:function () {return this.tree.doRemoveNode.apply(this, arguments);}, toString:function () {return "[" + this.widgetType + " Tree:" + this.tree + " ID:" + this.widgetId + " Title:" + this.title + "]";}});
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeNode.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeNode.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeNode.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain