You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2006/02/06 13:41:56 UTC
svn commit: r375266 - in /myfaces/tomahawk/trunk/core/src/main:
java/org/apache/myfaces/component/html/ext/
java/org/apache/myfaces/renderkit/html/ext/
java/org/apache/myfaces/taglib/html/ext/ tld/entities/
Author: mmarinschek
Date: Mon Feb 6 04:41:55 2006
New Revision: 375266
URL: http://svn.apache.org/viewcvs?rev=375266&view=rev
Log:
Patch by Claudio Tasso for MYFACES-1064. Thanks!
Modified:
myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTable.java
myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java
myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java
myfaces/tomahawk/trunk/core/src/main/tld/entities/extended_data_table_attributes.xml
Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTable.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTable.java?rev=375266&r1=375265&r2=375266&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTable.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTable.java Mon Feb 6 04:41:55 2006
@@ -19,12 +19,16 @@
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.faces.component.NamingContainer;
+import javax.faces.component.UIColumn;
import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.model.DataModel;
@@ -45,6 +49,7 @@
*/
public class HtmlDataTable extends HtmlDataTableHack implements UserRoleAware
{
+
private static final Log log = LogFactory.getLog(HtmlDataTable.class);
private static final int PROCESS_DECODES = 1;
@@ -71,8 +76,13 @@
private String _rowOnKeyUp = null;
private String _rowStyleClass = null;
private String _rowStyle = null;
+ private String _varDetailToggler = null;
private boolean _isValidChildren = true;
+
+ private Set _expandedNodes = new HashSet();
+
+ private UIColumn detailColumn;
public String getClientId(FacesContext context)
{
@@ -207,6 +217,11 @@
{
// no extended var attributes defined, no special treatment
super.setRowIndex(rowIndex);
+ }
+ if (_varDetailToggler != null)
+ {
+ Map requestMap = getFacesContext().getExternalContext().getRequestMap();
+ requestMap.put(_varDetailToggler, this);
}
}
@@ -841,7 +856,64 @@
protected void setPreservedDataModel(_SerializableDataModel preservedDataModel) {
_preservedDataModel = preservedDataModel;
}
+ public String getDetailHeader() {
+ if(detailColumn!=null){
+ return (String) ((UIOutput)detailColumn.getHeader()).getValue();
+ } else {
+ return null;
+ }
+ }
+
+ public void setDetailHeader(String header) {
+ if(detailColumn!=null){
+ ((UIOutput)detailColumn.getHeader()).setValue(header);
+ }
+ }
+
+
+ public boolean isCurrentDetailExpanded(){
+ return _expandedNodes.contains(new Integer(getRowIndex()));
+ }
+
+ public void setVarDetailToggler(String varDetailToggler)
+ {
+ _varDetailToggler = varDetailToggler;
+
+ }
+
+ public HtmlDataTable()
+ {
+ setRendererType(DEFAULT_RENDERER_TYPE);
+ }
+
+ /**
+ * Change the status of the current detail row from collapsed to expanded or
+ * viceversa.
+ *
+ */
+ public void toggleDetail(){
+ Integer rowIndex = new Integer(getRowIndex());
+
+ if(_expandedNodes.contains(rowIndex)){
+ _expandedNodes.remove(rowIndex);
+
+ } else {
+ _expandedNodes.add(rowIndex);
+ }
+ }
+
+ /**
+ * Return true if the current detail row is expanded.
+ *
+ * @return
+ */
+ public boolean isDetailExpanded(){
+ Integer rowIndex = new Integer(getRowIndex());
+
+ return _expandedNodes.contains(rowIndex);
+ }
+
//------------------ GENERATED CODE BEGIN (do not modify!) --------------------
public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlDataTable";
@@ -860,10 +932,7 @@
private String _rowCountVar = null;
private String _previousRowDataVar = null;
- public HtmlDataTable()
- {
- setRendererType(DEFAULT_RENDERER_TYPE);
- }
+
public void setPreserveDataModel(boolean preserveDataModel)
{
Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java?rev=375266&r1=375265&r2=375266&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java Mon Feb 6 04:41:55 2006
@@ -42,7 +42,45 @@
public class HtmlTableRenderer extends HtmlTableRendererBase
{
//private static final Log log = LogFactory.getLog(HtmlTableRenderer.class);
+
+ /** DetailStamp facet name. */
+ public static final String DETAIL_STAMP_FACET_NAME = "detailStamp";
+
+ protected void afterRow(FacesContext facesContext, UIData uiData) throws IOException {
+ super.afterRow(facesContext, uiData);
+
+ renderDetailRow(facesContext, uiData);
+ }
+
+ /**
+ *
+ * @param facesContext
+ * @param uiData
+ * @throws IOException
+ */
+ private void renderDetailRow(FacesContext facesContext, UIData uiData) throws IOException {
+ UIComponent detailStampFacet = uiData.getFacet(DETAIL_STAMP_FACET_NAME);
+
+ if(uiData instanceof HtmlDataTable ){
+ HtmlDataTable htmlDataTable = (HtmlDataTable)uiData;
+
+ if(htmlDataTable.isCurrentDetailExpanded()){
+ ResponseWriter writer = facesContext.getResponseWriter();
+ writer.startElement(HTML.TR_ELEM,uiData);
+ writer.startElement(HTML.TD_ELEM,uiData);
+ writer.writeAttribute(HTML.COLSPAN_ATTR,new Integer(uiData.getChildren().size()) ,null);
+
+ if(detailStampFacet!=null){
+ RendererUtils.renderChild(facesContext, detailStampFacet);
+ }
+
+ writer.endElement(HTML.TD_ELEM);
+ writer.endElement(HTML.TR_ELEM);
+ }
+ }
+ }
+
/**
* @see org.apache.myfaces.renderkit.html.HtmlTableRendererBase#encodeBegin(javax.faces.context.FacesContext, javax.faces.component.UIComponent)
*/
Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java?rev=375266&r1=375265&r2=375266&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/taglib/html/ext/HtmlDataTableTag.java Mon Feb 6 04:41:55 2006
@@ -64,6 +64,7 @@
private String _rowOnKeyDown;
private String _rowOnKeyUp;
private String _rowId;
+ private String _varDetailToggler;
private String _rowStyleClass;
private String _rowStyle;
@@ -95,6 +96,7 @@
_rowOnKeyDown=null;
_rowOnKeyUp=null;
_rowId=null;
+ _varDetailToggler=null;
_rowStyleClass = null;
_rowStyle = null;
@@ -126,7 +128,8 @@
setStringProperty(component, "rowOnKeyPress", _rowOnKeyPress);
setStringProperty(component, "rowOnKeyDown", _rowOnKeyDown);
setStringProperty(component, "rowOnKeyUp", _rowOnKeyUp);
- setStringProperty(component, JSFAttr.ROW_ID, _rowId);
+ setStringProperty(component, JSFAttr.ROW_ID, _rowId);
+ setStringProperty(component,"varDetailToggler",_varDetailToggler);
setStringProperty(component, JSFAttr.ROW_STYLECLASS_ATTR, _rowStyleClass);
setStringProperty(component, JSFAttr.ROW_STYLE_ATTR, _rowStyle);
@@ -256,4 +259,13 @@
{
_rowStyle = rowStyle;
}
+
+
+ public String getVarDetailToggler() {
+ return _varDetailToggler;
+ }
+
+ public void setVarDetailToggler(String varDetailToggler) {
+ _varDetailToggler = varDetailToggler;
+ }
}
Modified: myfaces/tomahawk/trunk/core/src/main/tld/entities/extended_data_table_attributes.xml
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/tld/entities/extended_data_table_attributes.xml?rev=375266&r1=375265&r2=375266&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/tld/entities/extended_data_table_attributes.xml (original)
+++ myfaces/tomahawk/trunk/core/src/main/tld/entities/extended_data_table_attributes.xml Mon Feb 6 04:41:55 2006
@@ -223,4 +223,13 @@
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<description>Corresponds to the HTML style attribute for the row tr tag.</description>
- </attribute>
\ No newline at end of file
+ </attribute>
+ <attribute>
+ <name>varDetailToggler</name>
+ <required>false</required>
+ <rtexprvalue>false</rtexprvalue>
+ <description>
+ This variable has the boolean property "detailExpanded" which is true if the current detail row is expanded and the action method
+ "toggleDetail" which expand/collapse the current detail row.
+ </description>
+ </attribute>