You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/10/29 02:53:03 UTC

svn commit: r468816 [26/32] - in /tapestry/tapestry4/trunk/tapestry-framework: ./ src/java/org/apache/tapestry/dojo/form/ src/js/dojo/ src/js/dojo/nls/ src/js/dojo/src/ src/js/dojo/src/animation/ src/js/dojo/src/cal/ src/js/dojo/src/charting/ src/js/do...

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Toolbar.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Toolbar.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Toolbar.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Toolbar.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,89 @@
+
+dojo.provide("dojo.widget.Toolbar");dojo.require("dojo.widget.*");dojo.require("dojo.html.style");dojo.widget.defineWidget(
+"dojo.widget.ToolbarContainer",dojo.widget.HtmlWidget,{isContainer: true,templateString: '<div class="toolbarContainer" dojoAttachPoint="containerNode"></div>',templateCssPath: dojo.uri.dojoUri("src/widget/templates/Toolbar.css"),getItem: function(name) {if(name instanceof dojo.widget.ToolbarItem) { return name; }
+for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {var item = child.getItem(name);if(item) { return item; }}}
+return null;},getItems: function() {var items = [];for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {items = items.concat(child.getItems());}}
+return items;},enable: function() {for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {child.enable.apply(child, arguments);}}},disable: function() {for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {child.disable.apply(child, arguments);}}},select: function(name) {for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {child.select(arguments);}}},deselect: function(name) {for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {child.deselect(arguments);}}},getItemsState: function() {var values = {};for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {dojo.lang.mixin(values, child.getItemsState());}}
+return values;},getItemsActiveState: function() {var values = {};for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {dojo.lang.mixin(values, child.getItemsActiveState());}}
+return values;},getItemsSelectedState: function() {var values = {};for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.Toolbar) {dojo.lang.mixin(values, child.getItemsSelectedState());}}
+return values;}});dojo.widget.defineWidget(
+"dojo.widget.Toolbar",dojo.widget.HtmlWidget,{isContainer: true,templateString: '<div class="toolbar" dojoAttachPoint="containerNode" unselectable="on" dojoOnMouseover="_onmouseover" dojoOnMouseout="_onmouseout" dojoOnClick="_onclick" dojoOnMousedown="_onmousedown" dojoOnMouseup="_onmouseup"></div>',_getItem: function(node) {var start = new Date();var widget = null;while(node && node != this.domNode) {if(dojo.html.hasClass(node, "toolbarItem")) {var widgets = dojo.widget.manager.getWidgetsByFilter(function(w) { return w.domNode == node; });if(widgets.length == 1) {widget = widgets[0];break;} else if(widgets.length > 1) {dojo.raise("Toolbar._getItem: More than one widget matches the node");}}
+node = node.parentNode;}
+return widget;},_onmouseover: function(e) {var widget = this._getItem(e.target);if(widget && widget._onmouseover) { widget._onmouseover(e); }},_onmouseout: function(e) {var widget = this._getItem(e.target);if(widget && widget._onmouseout) { widget._onmouseout(e); }},_onclick: function(e) {var widget = this._getItem(e.target);if(widget && widget._onclick){widget._onclick(e);}},_onmousedown: function(e) {var widget = this._getItem(e.target);if(widget && widget._onmousedown) { widget._onmousedown(e); }},_onmouseup: function(e) {var widget = this._getItem(e.target);if(widget && widget._onmouseup) { widget._onmouseup(e); }},addChild: function(item, pos, props) {var widget = dojo.widget.ToolbarItem.make(item, null, props);var ret = dojo.widget.Toolbar.superclass.addChild.call(this, widget, null, pos, null);return ret;},push: function() {for(var i = 0; i < arguments.length; i++) {this.addChild(arguments[i]);}},getItem: function(name) {if(name instanceof dojo.widget.ToolbarItem) { r
 eturn name; }
+for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem
+&& child._name == name) { return child; }}
+return null;},getItems: function() {var items = [];for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem) {items.push(child);}}
+return items;},getItemsState: function() {var values = {};for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem) {values[child._name] = {selected: child._selected,enabled: child._enabled};}}
+return values;},getItemsActiveState: function() {var values = this.getItemsState();for(var item in values) {values[item] = values[item].enabled;}
+return values;},getItemsSelectedState: function() {var values = this.getItemsState();for(var item in values) {values[item] = values[item].selected;}
+return values;},enable: function() {var items = arguments.length ? arguments : this.children;for(var i = 0; i < items.length; i++) {var child = this.getItem(items[i]);if(child instanceof dojo.widget.ToolbarItem) {child.enable(false, true);}}},disable: function() {var items = arguments.length ? arguments : this.children;for(var i = 0; i < items.length; i++) {var child = this.getItem(items[i]);if(child instanceof dojo.widget.ToolbarItem) {child.disable();}}},select: function() {for(var i = 0; i < arguments.length; i++) {var name = arguments[i];var item = this.getItem(name);if(item) { item.select(); }}},deselect: function() {for(var i = 0; i < arguments.length; i++) {var name = arguments[i];var item = this.getItem(name);if(item) { item.disable(); }}},setValue: function() {for(var i = 0; i < arguments.length; i += 2) {var name = arguments[i], value = arguments[i+1];var item = this.getItem(name);if(item) {if(item instanceof dojo.widget.ToolbarItem) {item.setValue(value);}}}}});do
 jo.widget.defineWidget(
+"dojo.widget.ToolbarItem",dojo.widget.HtmlWidget,{templateString: '<span unselectable="on" class="toolbarItem"></span>',_name: null,getName: function() { return this._name; },setName: function(value) { return (this._name = value); },getValue: function() { return this.getName(); },setValue: function(value) { return this.setName(value); },_selected: false,isSelected: function() { return this._selected; },setSelected: function(is, force, preventEvent) {if(!this._toggleItem && !force) { return; }
+is = Boolean(is);if(force || this._enabled && this._selected != is) {this._selected = is;this.update();if(!preventEvent) {this._fireEvent(is ? "onSelect" : "onDeselect");this._fireEvent("onChangeSelect");}}},select: function(force, preventEvent) {return this.setSelected(true, force, preventEvent);},deselect: function(force, preventEvent) {return this.setSelected(false, force, preventEvent);},_toggleItem: false,isToggleItem: function() { return this._toggleItem; },setToggleItem: function(value) { this._toggleItem = Boolean(value); },toggleSelected: function(force) {return this.setSelected(!this._selected, force);},_enabled: true,isEnabled: function() { return this._enabled; },setEnabled: function(is, force, preventEvent) {is = Boolean(is);if(force || this._enabled != is) {this._enabled = is;this.update();if(!preventEvent) {this._fireEvent(this._enabled ? "onEnable" : "onDisable");this._fireEvent("onChangeEnabled");}}
+return this._enabled;},enable: function(force, preventEvent) {return this.setEnabled(true, force, preventEvent);},disable: function(force, preventEvent) {return this.setEnabled(false, force, preventEvent);},toggleEnabled: function(force, preventEvent) {return this.setEnabled(!this._enabled, force, preventEvent);},_icon: null,getIcon: function() { return this._icon; },setIcon: function(value) {var icon = dojo.widget.Icon.make(value);if(this._icon) {this._icon.setIcon(icon);} else {this._icon = icon;}
+var iconNode = this._icon.getNode();if(iconNode.parentNode != this.domNode) {if(this.domNode.hasChildNodes()) {this.domNode.insertBefore(iconNode, this.domNode.firstChild);} else {this.domNode.appendChild(iconNode);}}
+return this._icon;},_label: "",getLabel: function() { return this._label; },setLabel: function(value) {var ret = (this._label = value);if(!this.labelNode) {this.labelNode = document.createElement("span");this.domNode.appendChild(this.labelNode);}
+this.labelNode.innerHTML = "";this.labelNode.appendChild(document.createTextNode(this._label));this.update();return ret;},update: function() {if(this._enabled) {dojo.html.removeClass(this.domNode, "disabled");if(this._selected) {dojo.html.addClass(this.domNode, "selected");} else {dojo.html.removeClass(this.domNode, "selected");}} else {this._selected = false;dojo.html.addClass(this.domNode, "disabled");dojo.html.removeClass(this.domNode, "down");dojo.html.removeClass(this.domNode, "hover");}
+this._updateIcon();},_updateIcon: function() {if(this._icon) {if(this._enabled) {if(this._cssHover) {this._icon.hover();} else if(this._selected) {this._icon.select();} else {this._icon.enable();}} else {this._icon.disable();}}},_fireEvent: function(evt) {if(typeof this[evt] == "function") {var args = [this];for(var i = 1; i < arguments.length; i++) {args.push(arguments[i]);}
+this[evt].apply(this, args);}},_onmouseover: function(e) {if(!this._enabled) { return; }
+dojo.html.addClass(this.domNode, "hover");this._fireEvent("onMouseOver");},_onmouseout: function(e) {dojo.html.removeClass(this.domNode, "hover");dojo.html.removeClass(this.domNode, "down");if(!this._selected) {dojo.html.removeClass(this.domNode, "selected");}
+this._fireEvent("onMouseOut");},_onclick: function(e) {if(this._enabled && !this._toggleItem) {this._fireEvent("onClick");}},_onmousedown: function(e) {if(e.preventDefault) { e.preventDefault(); }
+if(!this._enabled) { return; }
+dojo.html.addClass(this.domNode, "down");if(this._toggleItem) {if(this.parent.preventDeselect && this._selected) {return;}
+this.toggleSelected();}
+this._fireEvent("onMouseDown");},_onmouseup: function(e) {dojo.html.removeClass(this.domNode, "down");this._fireEvent("onMouseUp");},onClick: function() { },onMouseOver: function() { },onMouseOut: function() { },onMouseDown: function() { },onMouseUp: function() { },fillInTemplate: function(args, frag) {if(args.name) { this._name = args.name; }
+if(args.selected) { this.select(); }
+if(args.disabled) { this.disable(); }
+if(args.label) { this.setLabel(args.label); }
+if(args.icon) { this.setIcon(args.icon); }
+if(args.toggleitem||args.toggleItem) { this.setToggleItem(true); }}});dojo.widget.ToolbarItem.make = function(wh, whIsType, props) {var item = null;if(wh instanceof Array) {item = dojo.widget.createWidget("ToolbarButtonGroup", props);item.setName(wh[0]);for(var i = 1; i < wh.length; i++) {item.addChild(wh[i]);}} else if(wh instanceof dojo.widget.ToolbarItem) {item = wh;} else if(wh instanceof dojo.uri.Uri) {item = dojo.widget.createWidget("ToolbarButton",dojo.lang.mixin(props||{}, {icon: new dojo.widget.Icon(wh.toString())}));} else if(whIsType) {item = dojo.widget.createWidget(wh, props);} else if(typeof wh == "string" || wh instanceof String) {switch(wh.charAt(0)) {case "|":
+case "-":
+case "/":
+item = dojo.widget.createWidget("ToolbarSeparator", props);break;case " ":
+if(wh.length == 1) {item = dojo.widget.createWidget("ToolbarSpace", props);} else {item = dojo.widget.createWidget("ToolbarFlexibleSpace", props);}
+break;default:
+if(/\.(gif|jpg|jpeg|png)$/i.test(wh)) {item = dojo.widget.createWidget("ToolbarButton",dojo.lang.mixin(props||{}, {icon: new dojo.widget.Icon(wh.toString())}));} else {item = dojo.widget.createWidget("ToolbarButton",dojo.lang.mixin(props||{}, {label: wh.toString()}));}}} else if(wh && wh.tagName && /^img$/i.test(wh.tagName)) {item = dojo.widget.createWidget("ToolbarButton",dojo.lang.mixin(props||{}, {icon: wh}));} else {item = dojo.widget.createWidget("ToolbarButton",dojo.lang.mixin(props||{}, {label: wh.toString()}));}
+return item;}
+dojo.widget.defineWidget(
+"dojo.widget.ToolbarButtonGroup",dojo.widget.ToolbarItem,{isContainer: true,templateString: '<span unselectable="on" class="toolbarButtonGroup" dojoAttachPoint="containerNode"></span>',defaultButton: "",postCreate: function() {for (var i = 0; i < this.children.length; i++) {this._injectChild(this.children[i]);}},addChild: function(item, pos, props) {var widget = dojo.widget.ToolbarItem.make(item, null, dojo.lang.mixin(props||{}, {toggleItem:true}));var ret = dojo.widget.ToolbarButtonGroup.superclass.addChild.call(this, widget, null, pos, null);this._injectChild(widget);return ret;},_injectChild: function(widget) {dojo.event.connect(widget, "onSelect", this, "onChildSelected");dojo.event.connect(widget, "onDeselect", this, "onChildDeSelected");if(widget._name == this.defaultButton
+|| (typeof this.defaultButton == "number"
+&& this.children.length-1 == this.defaultButton)) {widget.select(false, true);}},getItem: function(name) {if(name instanceof dojo.widget.ToolbarItem) { return name; }
+for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem
+&& child._name == name) { return child; }}
+return null;},getItems: function() {var items = [];for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem) {items.push(child);}}
+return items;},onChildSelected: function(e) {this.select(e._name);},onChildDeSelected: function(e) {this._fireEvent("onChangeSelect", this._value);},enable: function(force, preventEvent) {for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem) {child.enable(force, preventEvent);if(child._name == this._value) {child.select(force, preventEvent);}}}},disable: function(force, preventEvent) {for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem) {child.disable(force, preventEvent);}}},_value: "",getValue: function() { return this._value; },select: function(name, force, preventEvent) {for(var i = 0; i < this.children.length; i++) {var child = this.children[i];if(child instanceof dojo.widget.ToolbarItem) {if(child._name == name) {child.select(force, preventEvent);this._value = name;} else {child.deselect(true, true);}}}
+if(!preventEvent) {this._fireEvent("onSelect", this._value);this._fireEvent("onChangeSelect", this._value);}},setValue: this.select,preventDeselect: false});dojo.widget.defineWidget(
+"dojo.widget.ToolbarButton",dojo.widget.ToolbarItem,{fillInTemplate: function(args, frag) {dojo.widget.ToolbarButton.superclass.fillInTemplate.call(this, args, frag);dojo.html.addClass(this.domNode, "toolbarButton");if(this._icon) {this.setIcon(this._icon);}
+if(this._label) {this.setLabel(this._label);}
+if(!this._name) {if(this._label) {this.setName(this._label);} else if(this._icon) {var src = this._icon.getSrc("enabled").match(/[\/^]([^\.\/]+)\.(gif|jpg|jpeg|png)$/i);if(src) { this.setName(src[1]); }} else {this._name = this._widgetId;}}}});dojo.widget.defineWidget(
+"dojo.widget.ToolbarDialog",dojo.widget.ToolbarButton,{fillInTemplate: function (args, frag) {dojo.widget.ToolbarDialog.superclass.fillInTemplate.call(this, args, frag);dojo.event.connect(this, "onSelect", this, "showDialog");dojo.event.connect(this, "onDeselect", this, "hideDialog");},showDialog: function (e) {dojo.lang.setTimeout(dojo.event.connect, 1, document, "onmousedown", this, "deselect");},hideDialog: function (e) {dojo.event.disconnect(document, "onmousedown", this, "deselect");}});dojo.widget.defineWidget(
+"dojo.widget.ToolbarMenu",dojo.widget.ToolbarDialog,{}
+);dojo.widget.ToolbarMenuItem = function() {}
+dojo.widget.defineWidget(
+"dojo.widget.ToolbarSeparator",dojo.widget.ToolbarItem,{templateString: '<span unselectable="on" class="toolbarItem toolbarSeparator"></span>',defaultIconPath: new dojo.uri.dojoUri("src/widget/templates/buttons/sep.gif"),fillInTemplate: function(args, frag, skip) {dojo.widget.ToolbarSeparator.superclass.fillInTemplate.call(this, args, frag);this._name = this.widgetId;if(!skip) {if(!this._icon) {this.setIcon(this.defaultIconPath);}
+this.domNode.appendChild(this._icon.getNode());}},_onmouseover: null,_onmouseout: null,_onclick: null,_onmousedown: null,_onmouseup: null});dojo.widget.defineWidget(
+"dojo.widget.ToolbarSpace",dojo.widget.ToolbarSeparator,{fillInTemplate: function(args, frag, skip) {dojo.widget.ToolbarSpace.superclass.fillInTemplate.call(this, args, frag, true);if(!skip) {dojo.html.addClass(this.domNode, "toolbarSpace");}}});dojo.widget.defineWidget(
+"dojo.widget.ToolbarSelect",dojo.widget.ToolbarItem,{templateString: '<span class="toolbarItem toolbarSelect" unselectable="on"><select dojoAttachPoint="selectBox" dojoOnChange="changed"></select></span>',fillInTemplate: function(args, frag) {dojo.widget.ToolbarSelect.superclass.fillInTemplate.call(this, args, frag, true);var keys = args.values;var i = 0;for(var val in keys) {var opt = document.createElement("option");opt.setAttribute("value", keys[val]);opt.innerHTML = val;this.selectBox.appendChild(opt);}},changed: function(e) {this._fireEvent("onSetValue", this.selectBox.value);},setEnabled: function(is, force, preventEvent) {var ret = dojo.widget.ToolbarSelect.superclass.setEnabled.call(this, is, force, preventEvent);this.selectBox.disabled = !this._enabled;return ret;},_onmouseover: null,_onmouseout: null,_onclick: null,_onmousedown: null,_onmouseup: null});dojo.widget.Icon = function(enabled, disabled, hovered, selected){if(!arguments.length){throw new Error("Icon must
  have at least an enabled state");}
+var states = ["enabled", "disabled", "hovered", "selected"];var currentState = "enabled";var domNode = document.createElement("img");this.getState = function(){ return currentState; }
+this.setState = function(value){if(dojo.lang.inArray(states, value)){if(this[value]){currentState = value;var img = this[currentState];if ((dojo.render.html.ie55 || dojo.render.html.ie60) && img.src && img.src.match(/[.]png$/i) ) {domNode.width = img.width||img.offsetWidth;domNode.height = img.height||img.offsetHeight;domNode.setAttribute("src", dojo.uri.dojoUri("src/widget/templates/images/blank.gif").uri);domNode.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img.src+"',sizingMethod='image')";} else {domNode.setAttribute("src", img.src);}}}else{throw new Error("Invalid state set on Icon (state: " + value + ")");}}
+this.setSrc = function(state, value){if(/^img$/i.test(value.tagName)){this[state] = value;}else if(typeof value == "string" || value instanceof String
+|| value instanceof dojo.uri.Uri){this[state] = new Image();this[state].src = value.toString();}
+return this[state];}
+this.setIcon = function(icon){for(var i = 0; i < states.length; i++){if(icon[states[i]]){this.setSrc(states[i], icon[states[i]]);}}
+this.update();}
+this.enable = function(){ this.setState("enabled"); }
+this.disable = function(){ this.setState("disabled"); }
+this.hover = function(){ this.setState("hovered"); }
+this.select = function(){ this.setState("selected"); }
+this.getSize = function(){return {width: domNode.width||domNode.offsetWidth,height: domNode.height||domNode.offsetHeight};}
+this.setSize = function(w, h){domNode.width = w;domNode.height = h;return { width: w, height: h };}
+this.getNode = function(){return domNode;}
+this.getSrc = function(state){if(state){ return this[state].src; }
+return domNode.src||"";}
+this.update = function(){this.setState(currentState);}
+for(var i = 0; i < states.length; i++){var arg = arguments[i];var state = states[i];this[state] = null;if(!arg){ continue; }
+this.setSrc(state, arg);}
+this.enable();}
+dojo.widget.Icon.make = function(a,b,c,d){for(var i = 0; i < arguments.length; i++){if(arguments[i] instanceof dojo.widget.Icon){return arguments[i];}}
+return new dojo.widget.Icon(a,b,c,d);}
+dojo.widget.defineWidget(
+"dojo.widget.ToolbarColorDialog",dojo.widget.ToolbarDialog,{palette: "7x10",fillInTemplate: function (args, frag) {dojo.widget.ToolbarColorDialog.superclass.fillInTemplate.call(this, args, frag);this.dialog = dojo.widget.createWidget("ColorPalette", {palette: this.palette});this.dialog.domNode.style.position = "absolute";dojo.event.connect(this.dialog, "onColorSelect", this, "_setValue");},_setValue: function(color) {this._value = color;this._fireEvent("onSetValue", color);},showDialog: function (e) {dojo.widget.ToolbarColorDialog.superclass.showDialog.call(this, e);var abs = dojo.html.getAbsolutePosition(this.domNode, true);var y = abs.y + dojo.html.getBorderBox(this.domNode).height;this.dialog.showAt(abs.x, y);},hideDialog: function (e) {dojo.widget.ToolbarColorDialog.superclass.hideDialog.call(this, e);this.dialog.hide();}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tooltip.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tooltip.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tooltip.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tooltip.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,14 @@
+
+dojo.provide("dojo.widget.Tooltip");dojo.require("dojo.widget.ContentPane");dojo.require("dojo.widget.PopupContainer");dojo.require("dojo.uri.Uri");dojo.require("dojo.widget.*");dojo.require("dojo.event.*");dojo.require("dojo.html.style");dojo.require("dojo.html.util");dojo.require("dojo.html.iframe");dojo.widget.defineWidget(
+"dojo.widget.Tooltip",[dojo.widget.ContentPane, dojo.widget.PopupContainerBase],{isContainer: true,caption: "",showDelay: 500,hideDelay: 100,connectId: "",templateCssPath: dojo.uri.dojoUri("src/widget/templates/TooltipTemplate.css"),fillInTemplate: function(args, frag){if(this.caption != ""){this.domNode.appendChild(document.createTextNode(this.caption));}
+this._connectNode = dojo.byId(this.connectId);dojo.widget.Tooltip.superclass.fillInTemplate.call(this, args, frag);this.addOnLoad(this, "_loadedContent");dojo.html.addClass(this.domNode, "dojoTooltip");var source = this.getFragNodeRef(frag);dojo.html.copyStyle(this.domNode, source);this.applyPopupBasicStyle();},postCreate: function(args, frag){dojo.event.connect(this._connectNode, "onmouseover", this, "onMouseOver");dojo.widget.Tooltip.superclass.postCreate.call(this, args, frag);},onMouseOver: function(e){this._mouse = {x: e.pageX, y: e.pageY};if(!this._tracking){dojo.event.connect(document.documentElement, "onmousemove", this, "onMouseMove");this._tracking=true;}
+this._onHover(e);},onMouseMove: function(e) {this._mouse = {x: e.pageX, y: e.pageY};if(dojo.html.overElement(this._connectNode, e) || dojo.html.overElement(this.domNode, e)){this._onHover(e);} else {this._onUnHover(e);}},_onHover: function(e) {if(this._hover){ return; }
+this._hover=true;if(this._hideTimer) {clearTimeout(this._hideTimer);delete this._hideTimer;}
+if(!this.isShowingNow && !this._showTimer){this._showTimer = setTimeout(dojo.lang.hitch(this, "open"), this.showDelay);}},_onUnHover: function(e){if(!this._hover){ return; }
+this._hover=false;if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}
+if(this.isShowingNow && !this._hideTimer){this._hideTimer = setTimeout(dojo.lang.hitch(this, "close"), this.hideDelay);}
+if(!this.isShowingNow){dojo.event.disconnect(document.documentElement, "onmousemove", this, "onMouseMove");this._tracking=false;}},open: function() {if (this.isShowingNow) { return; }
+dojo.widget.PopupContainerBase.prototype.open.call(this, this._mouse.x, this._mouse.y, null, [this._mouse.x, this._mouse.y], "TL,TR,BL,BR", [10,15]);},close: function() {if (this.isShowingNow) {if ( this._showTimer ) {clearTimeout(this._showTimer);delete this._showTimer;}
+if ( this._hideTimer ) {clearTimeout(this._hideTimer);delete this._hideTimer;}
+dojo.event.disconnect(document.documentElement, "onmousemove", this, "onMouseMove");this._tracking=false;dojo.widget.PopupContainerBase.prototype.close.call(this);}},_position: function(){this.move(this._mouse.x, this._mouse.y, [10,15], "TL,TR,BL,BR");},_loadedContent: function(){if(this.isShowingNow){this._position();}},checkSize: function(){},uninitialize: function(){this.close();dojo.event.disconnect(this._connectNode, "onmouseover", this, "onMouseOver");}}
+);
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tree.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tree.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tree.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Tree.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,31 @@
+
+dojo.provide("dojo.widget.Tree");dojo.require("dojo.widget.*");dojo.require("dojo.event.*");dojo.require("dojo.io.*");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeNode");dojo.require("dojo.html.common");dojo.require("dojo.html.selection");dojo.widget.defineWidget("dojo.widget.Tree", dojo.widget.HtmlWidget, function() {this.eventNames = {};this.tree = this;this.DNDAcceptTypes = [];this.actionsDisabled = [];},{widgetType: "Tree",eventNamesDefault: {createDOMNode: "createDOMNode",treeCreate: "treeCreate",treeDestroy: "treeDestroy",treeClick: "treeClick",iconClick: "iconClick",titleClick: "titleClick",moveFrom: "moveFrom",moveTo: "moveTo",addChild: "addChild",removeNode: "removeNode",expand: "expand",collapse: "collapse"},isContainer: true,DNDMode: "off",lockLevel: 0,strictFolders: true,DNDModes: {BETWEEN: 1,ONTO: 2},DNDAcceptTypes: "",templateCssPath: dojo.uri.dojoUri("src/widget/templates/images/Tree/Tree.css"),templateString: '<div class="dojoTree"></d
 iv>',isExpanded: true,isTree: true,objectId: "",controller: "",selector: "",menu: "",expandLevel: "",blankIconSrc: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_blank.gif"),gridIconSrcT: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_t.gif"),gridIconSrcL: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_l.gif"),gridIconSrcV: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_v.gif"),gridIconSrcP: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_p.gif"),gridIconSrcC: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_c.gif"),gridIconSrcX: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_x.gif"),gridIconSrcY: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_y.gif"),gridIconSrcZ: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_grid_z.gif"),expandIconSrcPlus: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_expand_plus.gif"),expandIco
 nSrcMinus: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_expand_minus.gif"),expandIconSrcLoading: dojo.uri.dojoUri("src/widget/templates/images/Tree/treenode_loading.gif"),iconWidth: 18,iconHeight: 18,showGrid: true,showRootGrid: true,actionIsDisabled: function(action) {var _this = this;return dojo.lang.inArray(_this.actionsDisabled, action)},actions: {ADDCHILD: "ADDCHILD"},getInfo: function() {var info = {widgetId: this.widgetId,objectId: this.objectId}
+return info;},initializeController: function() {if (this.controller != "off") {if (this.controller) {this.controller = dojo.widget.byId(this.controller);}
+else {dojo.require("dojo.widget.TreeBasicController");this.controller = dojo.widget.createWidget("TreeBasicController",{ DNDController: (this.DNDMode ? "create" : ""), dieWithTree: true }
+);}
+this.controller.listenTree(this);} else {this.controller = null;}},initializeSelector: function() {if (this.selector != "off") {if (this.selector) {this.selector = dojo.widget.byId(this.selector);}
+else {dojo.require("dojo.widget.TreeSelector");this.selector = dojo.widget.createWidget("TreeSelector", {dieWithTree: true});}
+this.selector.listenTree(this);} else {this.selector = null;}},initialize: function(args, frag){var _this = this;for(name in this.eventNamesDefault) {if (dojo.lang.isUndefined(this.eventNames[name])) {this.eventNames[name] = this.widgetId+"/"+this.eventNamesDefault[name];}}
+for(var i=0; i<this.actionsDisabled.length; i++) {this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();}
+if (this.DNDMode == "off") {this.DNDMode = 0;} else if (this.DNDMode == "between") {this.DNDMode = this.DNDModes.ONTO | this.DNDModes.BETWEEN;} else if (this.DNDMode == "onto") {this.DNDMode = this.DNDModes.ONTO;}
+this.expandLevel = parseInt(this.expandLevel);this.initializeSelector();this.initializeController();if (this.menu) {this.menu = dojo.widget.byId(this.menu);this.menu.listenTree(this);}
+this.containerNode = this.domNode;},postCreate: function() {this.createDOMNode();},createDOMNode: function() {dojo.html.disableSelection(this.domNode);for(var i=0; i<this.children.length; i++){this.children[i].parent = this;var node = this.children[i].createDOMNode(this, 0);this.domNode.appendChild(node);}
+if (!this.showRootGrid){for(var i=0; i<this.children.length; i++){this.children[i].expand();}}
+dojo.event.topic.publish(this.eventNames.treeCreate, { source: this } );},destroy: function() {dojo.event.topic.publish(this.tree.eventNames.treeDestroy, { source: this } );return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);},addChild: function(child, index) {var message = {child: child,index: index,parent: this,domNodeInitialized: child.domNodeInitialized}
+this.doAddChild.apply(this, arguments);dojo.event.topic.publish(this.tree.eventNames.addChild, message);},doAddChild: function(child, index){if (dojo.lang.isUndefined(index)) {index = this.children.length;}
+if (!child.isTreeNode){dojo.raise("You can only add TreeNode widgets to a "+this.widgetType+" widget!");return;}
+if (this.isTreeNode){if (!this.isFolder) {this.setFolder();}}
+var _this = this;dojo.lang.forEach(child.getDescendants(), function(elem) { elem.tree = _this.tree; });child.parent = this;if (this.isTreeNode) {this.state = this.loadStates.LOADED;}
+if (index < this.children.length) {dojo.html.insertBefore(child.domNode, this.children[index].domNode);} else {this.containerNode.appendChild(child.domNode);if (this.isExpanded && this.isTreeNode) {this.showChildren();}}
+this.children.splice(index, 0, child);if (child.domNodeInitialized) {var d = this.isTreeNode ? this.depth : -1;child.adjustDepth( d - child.depth + 1 );child.updateIconTree();} else {child.depth = this.isTreeNode ? this.depth+1 : 0;child.createDOMNode(child.tree, child.depth);}
+var prevSibling = child.getPreviousSibling();if (child.isLastChild() && prevSibling) {prevSibling.updateExpandGridColumn();}},makeBlankImg: function() {var img = document.createElement('img');img.style.width = this.iconWidth + 'px';img.style.height = this.iconHeight + 'px';img.src = this.blankIconSrc;img.style.verticalAlign = 'middle';return img;},updateIconTree: function(){if (!this.isTree) {this.updateIcons();}
+for(var i=0; i<this.children.length; i++){this.children[i].updateIconTree();}},toString: function() {return "["+this.widgetType+" ID:"+this.widgetId+"]"},move: function(child, newParent, index) {var oldParent = child.parent;var oldTree = child.tree;this.doMove.apply(this, arguments);var newParent = child.parent;var newTree = child.tree;var message = {oldParent: oldParent, oldTree: oldTree,newParent: newParent, newTree: newTree,child: child};dojo.event.topic.publish(oldTree.eventNames.moveFrom, message);dojo.event.topic.publish(newTree.eventNames.moveTo, message);},doMove: function(child, newParent, index) {child.parent.doRemoveNode(child);newParent.doAddChild(child, index);},removeNode: function(child) {if (!child.parent) return;var oldTree = child.tree;var oldParent = child.parent;var removedChild = this.doRemoveNode.apply(this, arguments);dojo.event.topic.publish(this.tree.eventNames.removeNode,{ child: removedChild, tree: oldTree, parent: oldParent }
+);return removedChild;},doRemoveNode: function(child) {if (!child.parent) return;var parent = child.parent;var children = parent.children;var index = child.getParentIndex();if (index < 0) {dojo.raise("Couldn't find node "+child+" for removal");}
+children.splice(index,1);dojo.html.removeNode(child.domNode);if (parent.children.length == 0 && !parent.isTree) {parent.containerNode.style.display = "none";}
+if (index == children.length && index>0) {children[index-1].updateExpandGridColumn();}
+if (parent instanceof dojo.widget.Tree && index == 0 && children.length>0) {children[0].updateExpandGrid();}
+child.parent = child.tree = null;return child;},markLoading: function() {},unMarkLoading: function() {},lock: function() {!this.lockLevel && this.markLoading();this.lockLevel++;},unlock: function() {if (!this.lockLevel) {dojo.raise("unlock: not locked");}
+this.lockLevel--;!this.lockLevel && this.unMarkLoading();},isLocked: function() {var node = this;while (true) {if (node.lockLevel) {return true;}
+if (node instanceof dojo.widget.Tree) {break;}
+node = node.parent;}
+return false;},flushLock: function() {this.lockLevel = 0;this.unMarkLoading();}});
\ No newline at end of file

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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -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.event.topic.unsubscribe(tree.eventNames.treeClick, this, "onTreeClick");dojo.event.topic.unsubscribe(tree.eve
 ntNames.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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,69 @@
+
+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) {return this.runStages(this.canCreateChild, this.prepareCreateChild, this.doCreateChild, this.finalizeCreateChild, this.exposeCreateChild, arguments);},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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,14 @@
+
+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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,9 @@
+
+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, "onTree
 Destroy");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) {this.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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,10 @@
+
+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.children[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.viewEmphase()
+this.setDisabled(false);var _this = this;dojo.lang.forEach(_this.treeActions,function(action) {_this.setDisabled( treeNode.actionIsDisabledNow(action) );}
+);},menuClose: function(treeNode) {treeNode.viewUnemphase()},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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,14 @@
+
+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);}
+);dojo.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));}
+);}}

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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,3 @@
+
+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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,5 @@
+
+dojo.provide( "dojo.widget.TreeDisableWrapExtension" );dojo.require( "dojo.widget.HtmlWidget" );dojo.require( "dojo.widget.TreeExtension" );dojo.widget.defineWidget(
+"dojo.widget.TreeDisableWrapExtension",dojo.widget.TreeExtension,{templateCssPath: dojo.uri.dojoUri( "src/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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,6 @@
+
+dojo.provide("dojo.widget.TreeDndControllerV3");dojo.require("dojo.dnd.TreeDragAndDropV3");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: function(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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,6 @@
+
+dojo.provide("dojo.widget.TreeDocIconExtension");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeExtension");dojo.widget.defineWidget(
+"dojo.widget.TreeDocIconExtension",[dojo.widget.TreeExtension],{templateCssPath: dojo.uri.dojoUri("src/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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,10 @@
+
+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: {},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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphaseOnSelect.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphaseOnSelect.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphaseOnSelect.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/TreeEmphaseOnSelect.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,3 @@
+
+dojo.provide("dojo.widget.TreeEmphaseOnSelect");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeSelectorV3");dojo.require("dojo.html.selection");dojo.widget.defineWidget(
+"dojo.widget.TreeEmphaseOnSelect",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.viewEmphase()},onDeselect: function(message) {message.node.viewUnemphase()}});
\ No newline at end of file

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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,3 @@
+
+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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,4 @@
+
+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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,4 @@
+
+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

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=468816
==============================================================================
--- 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 Sat Oct 28 18:52:42 2006
@@ -0,0 +1,17 @@
+
+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