You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mb...@apache.org on 2005/11/11 23:39:31 UTC

svn commit: r332660 - in /myfaces: impl/trunk/tld/entities/ tomahawk/trunk/src/java/org/apache/myfaces/component/html/ext/ tomahawk/trunk/src/java/org/apache/myfaces/taglib/html/ext/

Author: mbr
Date: Fri Nov 11 14:39:21 2005
New Revision: 332660

URL: http://svn.apache.org/viewcvs?rev=332660&view=rev
Log:
added preserveRowStates to t:datatable. 
Rowstates will not be discarded before rendering the table if the value is true 
for this flag

Modified:
    myfaces/impl/trunk/tld/entities/extended_data_table_attributes.xml
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java

Modified: myfaces/impl/trunk/tld/entities/extended_data_table_attributes.xml
URL: http://svn.apache.org/viewcvs/myfaces/impl/trunk/tld/entities/extended_data_table_attributes.xml?rev=332660&r1=332659&r2=332660&view=diff
==============================================================================
--- myfaces/impl/trunk/tld/entities/extended_data_table_attributes.xml (original)
+++ myfaces/impl/trunk/tld/entities/extended_data_table_attributes.xml Fri Nov 11 14:39:21 2005
@@ -18,6 +18,21 @@
             </description>
         </attribute>
         <attribute>
+            <name>preserveRowStates</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Indicates whether the state for each row should not be discarded before 
+                the datatable is rendered again. Setting this to true might be hepful if
+                an input component inside the datatable has no valuebinding and the value
+                entered in there should be displayed again. 
+                This will only work reliable if the datamodel of the datatable did not change
+                either by sorting, removing or adding rows.
+                                
+                Default: false 
+            </description>
+        </attribute>
+        <attribute>
             <name>forceIdIndexFormula</name>
             <required>false</required>
             <rtexprvalue>false</rtexprvalue>

Modified: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java?rev=332660&r1=332659&r2=332660&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java (original)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java Fri Nov 11 14:39:21 2005
@@ -64,8 +64,12 @@
 
     private static final Class OBJECT_ARRAY_CLASS = (new Object[0]).getClass();
 
+    private static final boolean DEFAULT_PRESERVEROWSTATES = false;
+
     private int _rowIndex = -1;
 
+    private Boolean _preserveRowStates;
+
     public boolean isRowAvailable()
     {
         return getDataModel().isRowAvailable();
@@ -122,11 +126,28 @@
         {
             //Refresh DataModel for rendering:
             _dataModelMap.clear();
-            //_rowStates.clear(); todo: should not be necessary.
+            if(!isPreserveRowStates())
+            {
+                _rowStates.clear();
+            }
         }
         super.encodeBegin(context);
     }
 
+    public void setPreserveRowStates(boolean preserveRowStates)
+    {
+        _preserveRowStates = Boolean.valueOf(preserveRowStates);
+    }
+
+    public boolean isPreserveRowStates()
+    {
+        if (_preserveRowStates != null)
+            return _preserveRowStates.booleanValue();
+        ValueBinding vb = getValueBinding("preserveRowStates");
+        Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+        return v != null ? v.booleanValue() : DEFAULT_PRESERVEROWSTATES;
+    }
+
     protected boolean hasErrorMessages(FacesContext context)
     {
         for(Iterator iter = context.getMessages(); iter.hasNext();)
@@ -406,6 +427,21 @@
         {
             return new ScalarDataModel(value);
         }
+    }
+    
+    public Object saveState(FacesContext context)
+    {
+        Object[] values = new Object[2];
+        values[0] = super.saveState(context);
+        values[1] = _preserveRowStates;
+        return values;
+    }
+    
+    public void restoreState(FacesContext context, Object state)
+    {
+        Object[] values = (Object[])state;
+        super.restoreState(context, values[0]);
+        _preserveRowStates = (Boolean) values[1];
     }
 
     private static final DataModel EMPTY_DATA_MODEL = new _SerializableDataModel()

Modified: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java?rev=332660&r1=332659&r2=332660&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java (original)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java Fri Nov 11 14:39:21 2005
@@ -42,6 +42,7 @@
     }
 
     private String _preserveDataModel;
+    private String _preserveRowStates;
     private String _forceIdIndexFormula;
     private String _sortColumn;
     private String _sortAscending;
@@ -72,6 +73,7 @@
         super.release();
 
         _preserveDataModel=null;
+        _preserveRowStates = null;
         _forceIdIndexFormula=null;
         _sortColumn=null;
         _sortAscending=null;
@@ -103,6 +105,7 @@
         super.setProperties(component);
 
         setBooleanProperty(component, "preserveDataModel", _preserveDataModel);
+        setBooleanProperty(component, "preserveRowStates", _preserveRowStates);
         setValueBinding(component, "forceIdIndexFormula", _forceIdIndexFormula);
         setValueBinding(component, "sortColumn", _sortColumn);
         setValueBinding(component, "sortAscending", _sortAscending);
@@ -132,6 +135,11 @@
     public void setPreserveDataModel(String preserveDataModel)
     {
         _preserveDataModel = preserveDataModel;
+    }
+
+    public void setPreserveRowStates(String preserveRowStates)
+    {
+        _preserveRowStates = preserveRowStates;
     }
 
     public void setForceIdIndexFormula(String forceIdIndexFormula)