Author: jkuhnert
Date: Sat Oct 21 20:09:49 2006
New Revision: 466619
URL: http://svn.apache.org/viewvc?view=rev&rev=466619
Log:
Added smarter property setting behaviour in tapestry.widget.Widget manager
package.
Added base AbstractWidget class as well as logic that checks whether or not a
widget should
be destroyed even if it exists. Specifically this handles the case where the
domNode a widget is attached
to gets innerHTML'ed into oblivion by something containing the component
managing the widget being re-rendered.
Added a simple Dialog component.
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AbstractWidget.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.jwc
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.script
Modified:
tapestry/tapestry4/trunk/.checkstyle
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownDatePicker.script
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/ResponseBuilder.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js
Modified: tapestry/tapestry4/trunk/.checkstyle
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/.checkstyle?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
--- tapestry/tapestry4/trunk/.checkstyle (original)
+++ tapestry/tapestry4/trunk/.checkstyle Sat Oct 21 20:09:49 2006
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<fileset-config file-format-version="1.2.0" simple-config="true">
- <local-check-config name="tapestry" location="tapestry-checkstyle.xml"
type="project" description="The core tapestry checkstyle configuration">
- <additional-data name="protect-config-file" value="false"/>
- </local-check-config>
- <fileset name="all" enabled="true" check-config-name="tapestry"
local="true">
- <file-match-pattern match-pattern="." include-pattern="true"/>
- </fileset>
- <filter name="FilesFromPackage" enabled="true">
- <filter-data value="tapestry-framework/src/test"/>
- <filter-data value="tapestry-examples/VlibBeans/src/test"/>
- <filter-data value="tapestry-examples/Vlib/src/test"/>
- <filter-data value="tapestry-framework/src/descriptor"/>
- <filter-data value="tapestry-contrib/src/descriptor"/>
- <filter-data value="tapestry-portlet/src/test"/>
- <filter-data value="tapestry-annotations/src/descriptor"/>
- <filter-data value="tapestry-portlet/src/descriptor"/>
- <filter-data value="tapestry-examples/Workbench/src/test"/>
- <filter-data value="tapestry-contrib/src/test"/>
- <filter-data value="tapestry-annotations/src/test"/>
- </filter>
- <filter name="NonSrcDirs" enabled="true"/>
-</fileset-config>
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+ <local-check-config name="tapestry" location="tapestry-checkstyle.xml"
type="project" description="The core tapestry checkstyle configuration">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="all" enabled="true" check-config-name="tapestry"
local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+ <filter name="FilesFromPackage" enabled="true">
+ <filter-data value="tapestry-framework/src/test"/>
+ <filter-data value="tapestry-examples/VlibBeans/src/test"/>
+ <filter-data value="tapestry-examples/Vlib/src/test"/>
+ <filter-data value="tapestry-framework/src/descriptor"/>
+ <filter-data value="tapestry-contrib/src/descriptor"/>
+ <filter-data value="tapestry-portlet/src/test"/>
+ <filter-data value="tapestry-annotations/src/descriptor"/>
+ <filter-data value="tapestry-portlet/src/descriptor"/>
+ <filter-data value="tapestry-examples/Workbench/src/test"/>
+ <filter-data value="tapestry-contrib/src/test"/>
+ <filter-data value="tapestry-annotations/src/test"/>
+ </filter>
+ <filter name="NonSrcDirs" enabled="true"/>
+</fileset-config>
Modified:
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
(original)
+++
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
Sat Oct 21 20:09:49 2006
@@ -53,6 +53,17 @@
</fieldset>
</form>
+<a jwcid="@DirectLink" listener="listener:showDialog"
+ async="true" updateComponents="testDialog">Show Dialog</a><br/>
+
+<div jwcid="[EMAIL PROTECTED]" style="display:none" hidden="ognl:dlHidden" >
+ <p style="display:block;background:#ffffff;width:20em;">
+ This is content hidden in a Dialog.
+
+ <a href="#" onClick="dojo.widget.byId('testDialog').hide();return
false">Close</a>
+ </p>
+</div>
+
<div jwcid="[EMAIL PROTECTED]" >
<h2 jwcid="@If" condition="ognl:selectedProject" style="clear:left" >
<span jwcid="@Insert" value="ognl:selectedProject.name" />
Modified:
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page
(original)
+++
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page
Sat Oct 21 20:09:49 2006
@@ -21,5 +21,7 @@
<page-specification class="org.apache.tapestry.timetracker.page.TaskEntryPage">
+ <property name="dlHidden" initial-value="true" />
+
</page-specification>
Modified:
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
Sat Oct 21 20:09:49 2006
@@ -26,6 +26,7 @@
import org.apache.tapestry.dojo.form.DropdownDatePicker;
import org.apache.tapestry.dojo.form.DropdownTimePicker;
import org.apache.tapestry.dojo.form.IAutocompleteModel;
+import org.apache.tapestry.dojo.html.Dialog;
import org.apache.tapestry.event.BrowserEvent;
import org.apache.tapestry.form.TextField;
import org.apache.tapestry.html.BasePage;
@@ -100,6 +101,12 @@
public void projectSelected(IRequestCycle cycle, BrowserEvent event)
{
cycle.getResponseBuilder().updateComponent("projectDescription");
+ }
+
+ public void showDialog()
+ {
+ Dialog dlg = (Dialog)getComponent("testDialog");
+ dlg.show();
}
/**
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library
Sat Oct 21 20:09:49 2006
@@ -40,6 +40,7 @@
<component-type type="DatePicker"
specification-path="form/DatePicker.jwc"/>
<component-type type="Delegator"
specification-path="components/Delegator.jwc"/>
<component-type type="Describe" specification-path="html/Describe.jwc"/>
+ <component-type type="Dialog" specification-path="dojo/html/Dialog.jwc"/>
<component-type type="DirectLink"
specification-path="link/DirectLink.jwc"/>
<component-type type="DropdownDatePicker"
specification-path="dojo/form/DropdownDatePicker.jwc"/>
<component-type type="DropdownTimePicker"
specification-path="dojo/form/DropdownTimePicker.jwc"/>
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AbstractWidget.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AbstractWidget.java?view=auto&rev=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AbstractWidget.java
(added)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AbstractWidget.java
Sat Oct 21 20:09:49 2006
@@ -0,0 +1,54 @@
+// Copyright 2004, 2005 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package org.apache.tapestry.dojo;
+
+import org.apache.tapestry.AbstractComponent;
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
+
+
+/**
+ * The base widget class for all dojo related widget components.
+ *
+ * @author jkuhnert
+ */
+public abstract class AbstractWidget extends AbstractComponent implements
IWidget
+{
+
+ public abstract void setDestroy(boolean destroy);
+
+ /**
+ * Determined dynamically at runtime during rendering, informs widget
implementations
+ * if they should destroy their client side widget equivalents or leave
them in tact.
+ *
+ * @return True if the widget should be destroyed on this render, false
otherwise.
+ */
+ public abstract boolean getDestroy();
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ public void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
+ {
+ if(!cycle.isRewinding()) {
+
+ if (cycle.getResponseBuilder().explicitlyContains(this))
+ setDestroy(false);
+ else
+ setDestroy(true);
+ }
+
+ renderWidget(writer, cycle);
+ }
+}
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownDatePicker.script
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownDatePicker.script?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownDatePicker.script
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/form/DropdownDatePicker.script
Sat Oct 21 20:09:49 2006
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE script PUBLIC
"-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
- "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
+ "http://tapestry.apache.org/dtd/Script_3_0.dtd">
<script>
<input-symbol key="clientId" required="yes" />
<input-symbol key="props" required="yes" />
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.java?view=auto&rev=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.java
(added)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.java
Sat Oct 21 20:09:49 2006
@@ -0,0 +1,77 @@
+// Copyright Oct 16, 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package org.apache.tapestry.dojo.html;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.IScript;
+import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.dojo.AbstractWidget;
+import org.apache.tapestry.json.JSONObject;
+
+
+/**
+ * Implementation of dojo Dialog widget.
+ *
+ * @author jkuhnert
+ */
+public abstract class Dialog extends AbstractWidget
+{
+ public abstract boolean isHidden();
+ public abstract void setHidden(boolean hidden);
+
+ public abstract String getBackgroundColor();
+
+ public abstract float getOpacity();
+
+ public void show()
+ {
+ setHidden(false);
+ }
+
+ public void hide()
+ {
+ setHidden(true);
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ public void renderWidget(IMarkupWriter writer, IRequestCycle cycle)
+ {
+ writer.begin(getTemplateTagName()); // use element specified
+ renderIdAttribute(writer, cycle); // render id="" client id
+ renderInformalParameters(writer, cycle);
+
+ renderBody(writer, cycle);
+
+ writer.end();
+
+ JSONObject json = new JSONObject();
+ json.put("bgColor", getBackgroundColor());
+ json.put("bgOpacity", getOpacity());
+
+ Map parms = new HashMap();
+ parms.put("component", this);
+ parms.put("props", json.toString());
+
+ getScript().execute(this, cycle,
TapestryUtils.getPageRenderSupport(cycle, this), parms);
+ }
+
+ /** injected. */
+ public abstract IScript getScript();
+}
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.jwc
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.jwc?view=auto&rev=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.jwc
(added)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.jwc
Sat Oct 21 20:09:49 2006
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2004, 2005, 2006 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!DOCTYPE component-specification PUBLIC
+ "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
+ "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
+
+<component-specification class="org.apache.tapestry.dojo.html.Dialog"
+ allow-body="yes" allow-informal-parameters="yes">
+
+ <description>
+ Creates a modal Dialog.
+ </description>
+
+ <parameter name="hidden" default-value="true" />
+
+ <parameter name="backgroundColor" default-value="literal:black" />
+
+ <parameter name="opacity" default-value="0.4" />
+
+ <inject property="script" type="script" object="Dialog.script"/>
+
+</component-specification>
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.script
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.script?view=auto&rev=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.script
(added)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/html/Dialog.script
Sat Oct 21 20:09:49 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!DOCTYPE script PUBLIC
+ "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
+ "http://tapestry.apache.org/dtd/Script_3_0.dtd">
+<!--
+ Copyright 2004, 2005, 2006 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<script>
+
+<input-symbol key="component" required="yes" />
+<input-symbol key="props" required="yes" />
+ <initialization>
+ tapestry.widget.synchronizeWidgetState("${component.clientId}", "Dialog",
${props}, ${component.destroy});
+
+ var dlg=dojo.widget.byId("${component.clientId}");
+ <if expression="component.hidden">
+ dlg.hide();
+ </if><if-not expression="component.hidden">
+ dlg.show();
+ </if-not>
+ </initialization>
+
+</script>
\ No newline at end of file
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/ResponseBuilder.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/ResponseBuilder.java?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/ResponseBuilder.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/ResponseBuilder.java
Sat Oct 21 20:09:49 2006
@@ -134,6 +134,21 @@
boolean contains(IComponent target);
/**
+ * Similar to [EMAIL PROTECTED] #contains(IComponent)}, but only returns
true if the component
+ * has been marked for update directly via an
<code>updateComponents</code> property
+ * or by calling [EMAIL PROTECTED]
ResponseBuilder#updateComponent(String)} directly.
+ *
+ * <p>
+ * <b>IMPORTANT!:</b> This will not return true for components contained
by a component
+ * marked for update. If you want that kind of behaviour use [EMAIL
PROTECTED] #contains(IComponent)}.
+ * </p>
+ *
+ * @param target The component to check.
+ * @return True if the component as listed as one to be updated, false
otherwise.
+ */
+ boolean explicitlyContains(IComponent target);
+
+ /**
* Invoked by [EMAIL PROTECTED] PageRenderSupport} to write external js
package
* includes. This method will be invoked for each external script
requesting
* inclusion in the response.
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java
Sat Oct 21 20:09:49 2006
@@ -145,6 +145,14 @@
{
return false;
}
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ public boolean explicitlyContains(IComponent target)
+ {
+ return false;
+ }
/**
* [EMAIL PROTECTED]
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
Sat Oct 21 20:09:49 2006
@@ -509,6 +509,17 @@
}
/**
+ * [EMAIL PROTECTED]
+ */
+ public boolean explicitlyContains(IComponent target)
+ {
+ if (target == null)
+ return false;
+
+ return _parts.contains(target.getId());
+ }
+
+ /**
* Gets the id of the specified component, choosing the "id" element
* binding over any other id.
* @param comp
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java
Sat Oct 21 20:09:49 2006
@@ -206,6 +206,17 @@
}
/**
+ * [EMAIL PROTECTED]
+ */
+ public boolean explicitlyContains(IComponent target)
+ {
+ if (target == null)
+ return false;
+
+ return _parts.contains(target.getClientId());
+ }
+
+ /**
* Gets the id of the specified component, choosing the "id" element
* binding over any other id.
* @param comp
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?view=diff&rev=466619&r1=466618&r2=466619
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/widget/Widget.js
Sat Oct 21 20:09:49 2006
@@ -32,14 +32,19 @@
* @param props
* The js properties object to create the widget
with.
*/
- synchronizeWidgetState : function(widgetId, type, props){
+ synchronizeWidgetState : function(widgetId, type, props, destroy){
+ if(typeof destroy == "undefined"){
+ destroy=true;
+ }
var widget = dojo.widget.byId(widgetId);
if (!widget) {
this.createWidget(widgetId, type, props);
- } else {
+ } else if (destroy){
widget.destroy();
this.createWidget(widgetId, type, props);
+ } else {
+ this.setWidgetProperties(widget, props);
}
},
@@ -59,10 +64,13 @@
// handle disabling widgets
var w = dojo.widget.createWidget(type, props, node);
+ this.setWidgetProperties(w, props);
+ },
+
+ setWidgetProperties: function(w, props){
if (!dj_undef("disabled",props) && props.disabled == true
&& dojo.lang.isFunction(w["disable"])){
w.disable();
}
}
-
}