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();
                }
        }
-       
 }


Reply via email to