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/11/01 16:27:24 UTC
svn commit: r591052 - in /tapestry/tapestry4/trunk/tapestry-framework/src/js:
tapestry/widget/TimePicker.js tapestry/widget/Widget.js
tests/widget/test_TimePicker.html
Author: jkuhnert
Date: Thu Nov 1 08:27:24 2007
New Revision: 591052
URL: http://svn.apache.org/viewvc?rev=591052&view=rev
Log:
Fixes TAPESTRY-1877. Created a literal reference to widget.domNode by attaching it to the dropdownNode which gets destroyed anyways to prevent dojo from randomly destroying any nodes it can find. (wtf is that...)
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/TimePicker.js
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js
tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/widget/test_TimePicker.html
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/TimePicker.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/TimePicker.js?rev=591052&r1=591051&r2=591052&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/TimePicker.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/TimePicker.js Thu Nov 1 08:27:24 2007
@@ -34,6 +34,7 @@
this.inputNode = dojo.byId(this.inputNodeId);
this.dropdownNode = document.createElement("div");
+ this.domNode = this.dropdownNode;
this.dropdownNode.setAttribute("id", this.widgetId + "dropdown");
this.dropdownNode.style["display"] = "none";
dojo.html.setClass(this.dropdownNode, this.dropdownClass);
@@ -247,29 +248,34 @@
|| dojo.html.hasClass(node, this.dropdownClass);
},
- destroyRendering: function(finalize){
+ uninitialize: function(){
try{
- dojo.widget.HtmlWidget.prototype.destroyRendering.call(this, finalize);
-
+ if (this.showing){
+ this.hide();
+ }
+ if (tapestry.widget.currentTimePicker == this) {
+ delete tapestry.widget.currentTimePicker;
+ }
+
dojo.event.disconnect(this.inputNode, "onclick", this, "onInputClick");
dojo.event.disconnect(this.inputNode, "onblur", this, "onInputBlur");
dojo.event.disconnect(this.inputNode, "onkeyup", this, "onInputKeyUp");
dojo.event.disconnect(this.inputNode, "onkeydown", this, "onInputKeyDown");
- dojo.event.browser.clean(this.inputNode);
+ dojo.event.disconnect(this.inputNode, "onchange", this, "onChange");
dojo.event.disconnect(this.dropdownNode, "onmouseover", this, "onDropdownMouseOver");
dojo.event.disconnect(this.dropdownNode, "onmouseout", this, "onDropdownMouseOut");
-
dojo.dom.destroyNode(this.dropdownNode);
- delete this.dropdownNode;
dojo.event.disconnect(dojo.body(), "onkeyup", this, "onKeyUp");
if (this.bgIframe){
this.bgIframe.remove();
}
- } catch (e) { }
+ } catch (e) {}
},
+
+ destroyRendering: function(){},
_selectOption:function(node){
if (!node) { return; }
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js?rev=591052&r1=591051&r2=591052&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js Thu Nov 1 08:27:24 2007
@@ -46,7 +46,7 @@
this.createWidget(widgetId, type, props, position);
} else if (destroy){
widget.destroy();
- this.createWidget(widgetId, type, props, position);
+ this.createWidget(widgetId, type, props, position);
} else {
this.setWidgetProperties(widget, props);
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/widget/test_TimePicker.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/widget/test_TimePicker.html?rev=591052&r1=591051&r2=591052&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/widget/test_TimePicker.html (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/widget/test_TimePicker.html Thu Nov 1 08:27:24 2007
@@ -24,12 +24,13 @@
<body>
<script type="text/javascript">
dojo.require("tapestry.namespace");
-
+ dojo.require("tapestry.widget.Widget");
+
dojo.addOnLoad(function() {
dojo.widget.createWidget("tapestry:TimePicker", {
widgetId: "test",
- inputNodeId:"timeInput",
+ inputNodeId:"test",
optionValues:["12:00am","12:30am","1:00am","1:30am","2:00am","2:30am","3:00am","3:30am","4:00am","4:30am",
"5:00am","5:30am","6:00am","6:30am","7:00am","7:30am","8:00am","8:30am","9:00am","9:30am","10:00am",
"10:30am","11:00am","11:30am","12:00pm","12:30pm","1:00pm","1:30pm","2:00pm","2:30pm","3:00pm","3:30pm",
@@ -58,6 +59,17 @@
"10:00pm","10:30pm","11:00pm","11:30pm"]
});
});
+
+ function destroyWidget(){
+ tapestry.widget.synchronizeWidgetState("test", "tapestry:timepicker", {"inputNodeId":"test"
+
+,"optionValues":["12:00 AM","12:30 AM","1:00 AM","1:30 AM","2:00 AM","2:30 AM","3:00 AM","3:30 AM","4:00 AM",
+ "4:30 AM","5:00 AM","5:30 AM","6:00 AM","6:30 AM","7:00 AM","7:30 AM","8:00 AM","8:30 AM",
+ "9:00 AM","9:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","1:00 PM","1:30 PM"
+ ,"2:00 PM","2:30 PM","3:00 PM","3:30 PM","4:00 PM","4:30 PM","5:00 PM","5:30 PM","6:00 PM","6:30 PM"
+ ,"7:00 PM","7:30 PM","8:00 PM","8:30 PM","9:00 PM","9:30 PM","10:00 PM","10:30 PM","11:00 PM",
+ "11:30PM"],"selectedIndex":18}, true);
+ }
</script>
<style type="text/css">
@@ -79,12 +91,14 @@
}
</style>
+<a href="#" onclick="destroyWidget(); return false;" >Destroy / Re-create widget</a>
+
<form action="#">
<fieldset>
<table>
<tr>
<td>
- <input id="timeInput" type="text" size="7" value="8:24am" />
+ <input id="test" type="text" size="7" value="8:24am" />
</td>
<td>
<input id="another" type="text" size="11" />