You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2008/01/30 03:59:04 UTC
svn commit: r616601 [2/7] - in /myfaces/tomahawk/branches/1_2_0: ./
assembly/ core/ core/src/main/conf/ core/src/main/java-templates/
core/src/main/java-templates/org/ core/src/main/java-templates/org/apache/
core/src/main/java-templates/org/apache/myf...
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlDataTableTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlDataTableTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlDataTableTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlDataTableTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,1676 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.component.NewspaperTable;
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.custom.crosstable.UIColumns;
+import org.apache.myfaces.custom.sortheader.HtmlCommandSortHeader;
+import org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer;
+import org.apache.myfaces.renderkit.html.util.TableContext;
+import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
+
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+import javax.faces.model.DataModel;
+import java.io.IOException;
+import java.sql.ResultSet;
+import java.util.*;
+import javax.faces.application.Application;
+import javax.faces.component.*;
+
+import org.apache.myfaces.custom.column.HtmlSimpleColumn;
+
+/**
+ * @author Thomas Spiegl (latest modification by $Author$)
+ * @author Manfred Geiler
+ * @version $Revision$ $Date$
+ */
+public class HtmlDataTable extends HtmlDataTableHack implements UserRoleAware, NewspaperTable
+{
+ private static final Log log = LogFactory.getLog(HtmlDataTable.class);
+
+ private static final int PROCESS_DECODES = 1;
+ private static final int PROCESS_VALIDATORS = 2;
+ private static final int PROCESS_UPDATES = 3;
+
+ private static final boolean DEFAULT_SORTASCENDING = true;
+ private static final boolean DEFAULT_SORTABLE = false;
+ private static final Class OBJECT_ARRAY_CLASS = (new Object[0]).getClass();
+
+ private static final Integer DEFAULT_NEWSPAPER_COLUMNS = new Integer(1);
+ private static final String DEFAULT_NEWSPAPER_ORIENTATION = "vertical";
+
+ /**
+ * the property names
+ */
+ public static final String NEWSPAPER_COLUMNS_PROPERTY = "newspaperColumns";
+ public static final String SPACER_FACET_NAME = "spacer";
+ public static final String NEWSPAPER_ORIENTATION_PROPERTY = "newspaperOrientation";
+
+ /**
+ * the value of the column count property
+ */
+ private Integer _newspaperColumns = null;
+ /**
+ * the value of the newspaper orientation property
+ */
+ private String _newspaperOrientation = null;
+
+ private _SerializableDataModel _preservedDataModel;
+
+ private String _forceIdIndexFormula = null;
+ private String _sortColumn = null;
+ private Boolean _sortAscending = null;
+ private String _sortProperty = null;
+ private Boolean _sortable = null;
+ private String _rowOnClick = null;
+ private String _rowOnDblClick = null;
+ private String _rowOnMouseDown = null;
+ private String _rowOnMouseUp = null;
+ private String _rowOnMouseOver = null;
+ private String _rowOnMouseMove = null;
+ private String _rowOnMouseOut = null;
+ private String _rowOnKeyPress = null;
+ private String _rowOnKeyDown = null;
+ private String _rowOnKeyUp = null;
+ private String _rowStyleClass = null;
+ private String _rowStyle = null;
+ private String _rowGroupStyle = null;
+ private String _rowGroupStyleClass = null;
+ private String _varDetailToggler = null;
+ private String _bodyStyleClass = null;
+ private String _bodyStyle = null;
+
+ private int _sortColumnIndex = -1;
+
+ private boolean _isValidChildren = true;
+
+ private Set _expandedNodes = new HashSet();
+
+ private Map _detailRowStates = new HashMap();
+
+ private TableContext _tableContext = null;
+
+ public TableContext getTableContext()
+ {
+ if (_tableContext == null)
+ {
+ _tableContext = new TableContext();
+ }
+ return _tableContext;
+ }
+
+ public String getClientId(FacesContext context)
+ {
+ String standardClientId = super.getClientId(context);
+ int rowIndex = getRowIndex();
+ if (rowIndex == -1)
+ {
+ return standardClientId;
+ }
+
+ String forcedIdIndex = getForceIdIndexFormula();
+ if (forcedIdIndex == null || forcedIdIndex.length() == 0)
+ return standardClientId;
+
+ // Trick : Remove the last part starting with NamingContainer.SEPARATOR_CHAR that contains the rowIndex.
+ // It would be best to not resort to String manipulation,
+ // but we can't get super.super.getClientId() :-(
+ int indexLast_ = standardClientId.lastIndexOf(NamingContainer.SEPARATOR_CHAR);
+ if (indexLast_ == -1)
+ {
+ log.info("Could not parse super.getClientId. forcedIdIndex will contain the rowIndex.");
+ return standardClientId + NamingContainer.SEPARATOR_CHAR + forcedIdIndex;
+ }
+
+ //noinspection UnnecessaryLocalVariable
+ String parsedForcedClientId = standardClientId.substring(0, indexLast_ + 1) + forcedIdIndex;
+ return parsedForcedClientId;
+ }
+
+ public UIComponent findComponent(String expr)
+ {
+ if (expr.length() > 0 && Character.isDigit(expr.charAt(0)))
+ {
+ int separatorIndex = expr.indexOf(NamingContainer.SEPARATOR_CHAR);
+
+ String rowIndexStr = expr;
+ String remainingPart = null;
+
+ if (separatorIndex != -1)
+ {
+ rowIndexStr = expr.substring(0, separatorIndex);
+ remainingPart = expr.substring(separatorIndex + 1);
+ }
+
+ int rowIndex = Integer.valueOf(rowIndexStr).intValue();
+
+ if (remainingPart == null)
+ {
+ log.error("Wrong syntax of expression : " + expr +
+ " rowIndex was provided, but no component name.");
+ return null;
+ }
+
+ UIComponent comp = super.findComponent(remainingPart);
+
+ if (comp == null)
+ return null;
+
+ //noinspection UnnecessaryLocalVariable
+ UIComponentPerspective perspective = new UIComponentPerspective(this, comp, rowIndex);
+ return perspective;
+ }
+ else
+ {
+ return super.findComponent(expr);
+ }
+ }
+
+ public void setRowIndex(int rowIndex)
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+
+ if (rowIndex < -1)
+ {
+ throw new IllegalArgumentException("rowIndex is less than -1");
+ }
+
+ UIComponent facet = getFacet(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME);
+ /*Just for obtaining an iterator which must be passed to saveDescendantComponentStates()*/
+ Set set = new HashSet();
+ set.add(facet);
+ if (rowIndex != -1 && facet != null)
+ {
+ _detailRowStates.put(getClientId(facesContext), saveDescendantComponentStates(set.iterator(), false));
+ }
+
+ String rowIndexVar = getRowIndexVar();
+ String rowCountVar = getRowCountVar();
+ String previousRowDataVar = getPreviousRowDataVar();
+ if (rowIndexVar != null || rowCountVar != null || previousRowDataVar != null)
+ {
+ Map requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+
+ if (previousRowDataVar != null && rowIndex >= 0) //we only need to provide the previousRowDataVar for a valid rowIndex
+ {
+ if (isRowAvailable())
+ {
+ //previous row is available
+ requestMap.put(previousRowDataVar, getRowData());
+ }
+ else
+ {
+ //no previous row available
+ requestMap.put(previousRowDataVar, null);
+ }
+ }
+
+ super.setRowIndex(rowIndex);
+
+ if (rowIndex >= 0)
+ {
+ //regular row index, update request scope variables
+ if (rowIndexVar != null)
+ {
+ requestMap.put(rowIndexVar, new Integer(rowIndex));
+ }
+
+ if (rowCountVar != null)
+ {
+ requestMap.put(rowCountVar, new Integer(getRowCount()));
+ }
+ }
+ else
+ {
+ //rowIndex == -1 means end of loop --> remove request scope variables
+ if (rowIndexVar != null)
+ {
+ requestMap.remove(rowIndexVar);
+ }
+
+ if (rowCountVar != null)
+ {
+ requestMap.remove(rowCountVar);
+ }
+
+ if (previousRowDataVar != null)
+ {
+ requestMap.remove(previousRowDataVar);
+ }
+ }
+ }
+ else
+ {
+ // no extended var attributes defined, no special treatment
+ super.setRowIndex(rowIndex);
+ }
+
+ if (rowIndex != -1 && facet != null)
+ {
+ Object rowState = _detailRowStates.get(getClientId(facesContext));
+
+ restoreDescendantComponentStates(set.iterator(),
+ rowState, false);
+
+ }
+
+ if (_varDetailToggler != null)
+ {
+ Map requestMap = getFacesContext().getExternalContext().getRequestMap();
+ requestMap.put(_varDetailToggler, this);
+ }
+ }
+
+ public void processDecodes(FacesContext context)
+ {
+ if (!isRendered())
+ {
+ return;
+ }
+
+ // We must remove and then replace the facet so that
+ // it is not processed by default facet handling code
+ //
+ UIComponent facet = getFacets().remove(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME);
+ super.processDecodes(context);
+ if ( facet != null ) getFacets().put(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME, facet);
+
+ setRowIndex(-1);
+ processColumns(context, PROCESS_DECODES);
+ setRowIndex(-1);
+ processDetails(context, PROCESS_DECODES);
+ setRowIndex(-1);
+ }
+
+ /**
+ * @param context
+ * @param processAction
+ */
+ private void processDetails(FacesContext context, int processAction)
+ {
+ UIComponent facet = getFacet(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME);
+
+ if (facet != null)
+ {
+ int first = getFirst();
+ int rows = getRows();
+ int last;
+ if (rows == 0)
+ {
+ last = getRowCount();
+ }
+ else
+ {
+ last = first + rows;
+ }
+ for (int rowIndex = first; last == -1 || rowIndex < last; rowIndex++)
+ {
+ setRowIndex(rowIndex);
+
+ if (!isCurrentDetailExpanded())
+ {
+ continue;
+ }
+
+ //scrolled past the last row
+ if (!isRowAvailable())
+ break;
+
+ // If we are in the decode phase, the values restored into our
+ // facet in setRowIndex() may be incorrect. This will happen
+ // if some input fields are rendered in some rows, but not
+ // rendered in others. In this case the input field components
+ // will still contain the _submittedValue from the previous row
+ // that had that input field and _submittedValue will not be set to
+ // null by the process() method if there was no value submitted.
+ // Thus, an invalid component state for that row will be saved in
+ // _detailRowStates. The validation phase will not put a null into
+ // _sumbittedValue either, b/c the component is not rendered, so
+ // validation code doesn't run. This erroneous value will propagate all the way
+ // to the render phase, and result in all rows on the current page being
+ // rendered with the "stuck" _submittedValue, rather than evaluating the
+ // value to render for every row.
+ //
+ // We can fix this by initializing _submittedValue of all input fields in the facet
+ // to null before calling the process() method below during the decode phase.
+ //
+ if (PROCESS_DECODES == processAction)
+ {
+ resetAllSubmittedValues(facet);
+ }
+
+ process(context, facet, processAction);
+
+ if ( rowIndex == (last - 1) )
+ {
+ Set set = new HashSet();
+ set.add(facet);
+ _detailRowStates.put(
+ getClientId(FacesContext.getCurrentInstance()),
+ saveDescendantComponentStates(set.iterator(),false));
+ }
+ }
+ }
+ }
+
+ private void resetAllSubmittedValues(UIComponent component)
+ {
+ if (component instanceof EditableValueHolder)
+ {
+ ((EditableValueHolder) component).setSubmittedValue(null);
+ }
+
+ for (Iterator it = component.getFacetsAndChildren(); it.hasNext();)
+ {
+ resetAllSubmittedValues((UIComponent) it.next());
+ }
+ }
+
+ /**
+ * @param context
+ * @param processAction
+ */
+ private void processColumns(FacesContext context, int processAction)
+ {
+ for (Iterator it = getChildren().iterator(); it.hasNext();)
+ {
+ UIComponent child = (UIComponent) it.next();
+ if (child instanceof UIColumns)
+ {
+ process(context, child, processAction);
+ }
+ }
+ }
+
+ private void process(FacesContext context, UIComponent component, int processAction)
+ {
+ switch (processAction)
+ {
+ case PROCESS_DECODES:
+ component.processDecodes(context);
+ break;
+ case PROCESS_VALIDATORS:
+ component.processValidators(context);
+ break;
+ case PROCESS_UPDATES:
+ component.processUpdates(context);
+ break;
+ }
+ }
+
+ public void processValidators(FacesContext context)
+ {
+ if (!isRendered())
+ {
+ return;
+ }
+ // We must remove and then replace the facet so that
+ // it is not processed by default facet handling code
+ //
+ UIComponent facet = getFacets().remove(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME);
+ super.processValidators(context);
+ if ( facet != null ) getFacets().put(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME, facet);
+
+ processColumns(context, PROCESS_VALIDATORS);
+ setRowIndex(-1);
+ processDetails(context, PROCESS_VALIDATORS);
+ setRowIndex(-1);
+
+ if (context.getRenderResponse())
+ {
+ _isValidChildren = false;
+ }
+ }
+
+ public void processUpdates(FacesContext context)
+ {
+ if (!isRendered())
+ {
+ return;
+ }
+
+ // We must remove and then replace the facet so that
+ // it is not processed by default facet handling code
+ //
+ UIComponent facet = getFacets().remove(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME);
+ super.processUpdates(context);
+ if ( facet != null ) getFacets().put(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME, facet);
+
+ processColumns(context, PROCESS_UPDATES);
+ setRowIndex(-1);
+ processDetails(context, PROCESS_UPDATES);
+ setRowIndex(-1);
+
+ if (isPreserveDataModel())
+ {
+ updateModelFromPreservedDataModel(context);
+ }
+
+ if (context.getRenderResponse())
+ {
+ _isValidChildren = false;
+ }
+ }
+
+ private void updateModelFromPreservedDataModel(FacesContext context)
+ {
+ ValueBinding vb = getValueBinding("value");
+ if (vb != null && !vb.isReadOnly(context))
+ {
+ _SerializableDataModel dm = (_SerializableDataModel) getDataModel();
+ Class type = vb.getType(context);
+ if (DataModel.class.isAssignableFrom(type))
+ {
+ vb.setValue(context, dm);
+ }
+ else if (List.class.isAssignableFrom(type))
+ {
+ vb.setValue(context, dm.getWrappedData());
+ }
+ else if (OBJECT_ARRAY_CLASS.isAssignableFrom(type))
+ {
+ List lst = (List) dm.getWrappedData();
+ vb.setValue(context, lst.toArray(new Object[lst.size()]));
+ }
+ else if (ResultSet.class.isAssignableFrom(type))
+ {
+ throw new UnsupportedOperationException(this.getClass().getName()
+ + " UnsupportedOperationException");
+ }
+ else
+ {
+ //Assume scalar data model
+ List lst = (List) dm.getWrappedData();
+ if (lst.size() > 0)
+ {
+ vb.setValue(context, lst.get(0));
+ }
+ else
+ {
+ vb.setValue(context, null);
+ }
+ }
+ }
+ _preservedDataModel = null;
+ }
+
+ public void encodeBegin(FacesContext context) throws IOException
+ {
+ if (!isRendered())
+ return;
+
+ if (_isValidChildren && !hasErrorMessages(context))
+ {
+ _preservedDataModel = null;
+ }
+
+ for (Iterator iter = getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent component = (UIComponent) iter.next();
+ if (component instanceof UIColumns)
+ {
+ // Merge the columns from the tomahawk dynamic component
+ // into this object.
+ ((UIColumns) component).encodeTableBegin(context);
+ }
+ }
+
+ //replace facet header content component of the columns, with a new command sort header component
+ //if sortable=true, replace it for all, if not just for the columns marked as sortable
+ for (Iterator iter = getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent component = (UIComponent) iter.next();
+ if (component instanceof UIColumn)
+ {
+ UIColumn aColumn = (UIColumn) component;
+ UIComponent headerFacet = aColumn.getHeader();
+
+ boolean replaceHeaderFacets = isSortable(); //if the table is sortable, all
+ //header facets can be changed if needed
+ String columnName = null;
+ String propertyName = null;
+ boolean defaultSorted = false;
+
+ if (aColumn instanceof HtmlSimpleColumn)
+ {
+ HtmlSimpleColumn asColumn = (HtmlSimpleColumn) aColumn;
+ propertyName = asColumn.getSortPropertyName();
+ defaultSorted = asColumn.isDefaultSorted();
+
+ if (asColumn.isSortable())
+ replaceHeaderFacets = true;
+ }
+
+ //replace header facet with a sortable header component if needed
+ if (replaceHeaderFacets && isSortHeaderNeeded(aColumn, headerFacet))
+ {
+ propertyName = propertyName != null ? propertyName : getSortPropertyFromEL(aColumn);
+ if (propertyName == null)
+ log.warn("Couldn't determine sort property for column [" + aColumn.getId() + "].");
+
+ if (headerFacet != null)
+ {
+ HtmlCommandSortHeader sortHeader = createSortHeaderComponent(context, aColumn, headerFacet, propertyName);
+ columnName = sortHeader.getColumnName();
+
+ aColumn.setHeader(sortHeader);
+ sortHeader.setParent(aColumn);
+ }
+ }
+ else if (headerFacet instanceof HtmlCommandSortHeader)
+ {
+ //command sort headers are already in place, just store the column name and sort property name
+ HtmlCommandSortHeader sortHeader = (HtmlCommandSortHeader) headerFacet;
+ columnName = sortHeader.getColumnName();
+ propertyName = sortHeader.getPropertyName();
+
+ //if the command sort header component doesn't specify a sort property, determine it
+ if (propertyName == null)
+ {
+ propertyName = getSortPropertyFromEL(aColumn);
+ sortHeader.setPropertyName(propertyName);
+ }
+
+ if (propertyName == null)
+ log.warn("Couldn't determine sort property for column [" + aColumn.getId() + "].");
+ }
+
+ //make the column marked as default sorted be the current sorted column
+ if (defaultSorted && getSortColumn() == null)
+ {
+ setSortColumn(columnName);
+ setSortProperty(propertyName);
+ }
+ }
+ }
+
+ // Now invoke the superclass encodeBegin, which will eventually
+ // execute the encodeBegin for the associated renderer.
+ super.encodeBegin(context);
+ }
+
+ /**
+ *
+ */
+ protected boolean isSortHeaderNeeded(UIColumn parentColumn, UIComponent headerFacet)
+ {
+ return !(headerFacet instanceof HtmlCommandSortHeader);
+ }
+
+ /**
+ *
+ */
+ protected HtmlCommandSortHeader createSortHeaderComponent(FacesContext context, UIColumn parentColumn, UIComponent initialHeaderFacet, String propertyName)
+ {
+ Application application = context.getApplication();
+
+ HtmlCommandSortHeader sortHeader = (HtmlCommandSortHeader) application.createComponent(HtmlCommandSortHeader.COMPONENT_TYPE);
+ String id = context.getViewRoot().createUniqueId();
+ sortHeader.setId(id);
+ sortHeader.setColumnName(id);
+ sortHeader.setPropertyName(propertyName);
+ sortHeader.setArrow(true);
+ sortHeader.setImmediate(true); //needed to work when dataScroller is present
+ sortHeader.getChildren().add(initialHeaderFacet);
+ initialHeaderFacet.setParent(sortHeader);
+
+ return sortHeader;
+ }
+
+ /**
+ *
+ */
+ protected String getSortPropertyFromEL(UIComponent component)
+ {
+ if (getVar() == null)
+ {
+ log.warn("There is no 'var' specified on the dataTable, sort properties cannot be determined automaticaly.");
+ return null;
+ }
+
+ for (Iterator iter = component.getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent aChild = (UIComponent) iter.next();
+ if (aChild.isRendered())
+ {
+ ValueBinding vb = aChild.getValueBinding("value");
+ if (vb != null)
+ {
+ String expressionString = vb.getExpressionString();
+
+ int varIndex = expressionString.indexOf(getVar() + ".");
+ if (varIndex != -1)
+ {
+ int varEndIndex = varIndex + getVar().length();
+ String tempProp = expressionString.substring(varEndIndex + 1, expressionString.length());
+
+ StringTokenizer tokenizer = new StringTokenizer(tempProp, " +[]{}-/*|?:&<>!=()%");
+ if (tokenizer.hasMoreTokens())
+ return tokenizer.nextToken();
+ }
+ }
+ else
+ {
+ String sortProperty = getSortPropertyFromEL(aChild);
+ if (sortProperty != null)
+ return sortProperty;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @return the index coresponding to the given column name.
+ */
+ protected int columnNameToIndex(String columnName)
+ {
+ int index = 0;
+ for (Iterator iter = getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent aChild = (UIComponent) iter.next();
+ if (aChild instanceof UIColumn)
+ {
+ UIComponent headerFacet = ((UIColumn) aChild).getHeader();
+ if (headerFacet != null && headerFacet instanceof HtmlCommandSortHeader)
+ {
+ HtmlCommandSortHeader sortHeader = (HtmlCommandSortHeader) headerFacet;
+ if (columnName != null && columnName.equals(sortHeader.getColumnName()))
+ return index;
+ }
+ }
+
+ index += 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * @see javax.faces.component.UIData#encodeEnd(javax.faces.context.FacesContext)
+ */
+ public void encodeEnd(FacesContext context) throws IOException
+ {
+ super.encodeEnd(context);
+ for (Iterator iter = getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent component = (UIComponent) iter.next();
+ if (component instanceof UIColumns)
+ {
+ ((UIColumns) component).encodeTableEnd(context);
+ }
+ }
+ }
+
+ public int getFirst()
+ {
+ if (_preservedDataModel != null)
+ {
+ //Rather get the currently restored DataModel attribute
+ return _preservedDataModel.getFirst();
+ }
+ else
+ {
+ return super.getFirst();
+ }
+ }
+
+ public void setFirst(int first)
+ {
+ if (_preservedDataModel != null)
+ {
+ //Also change the currently restored DataModel attribute
+ _preservedDataModel.setFirst(first);
+ }
+ super.setFirst(first);
+ }
+
+ public int getRows()
+ {
+ if (_preservedDataModel != null)
+ {
+ //Rather get the currently restored DataModel attribute
+ return _preservedDataModel.getRows();
+ }
+ else
+ {
+ return super.getRows();
+ }
+ }
+
+ public void setRows(int rows)
+ {
+ if (_preservedDataModel != null)
+ {
+ //Also change the currently restored DataModel attribute
+ _preservedDataModel.setRows(rows);
+ }
+ super.setRows(rows);
+ }
+
+ /**///saveState
+ public Object saveState(FacesContext context)
+ {
+ boolean preserveSort = isPreserveSort();
+
+ Object values[] = new Object[36];
+ values[0] = super.saveState(context);
+ values[1] = _preserveDataModel;
+
+ if (isPreserveDataModel())
+ {
+ _preservedDataModel = getSerializableDataModel();
+ values[2] = saveAttachedState(context, _preservedDataModel);
+ }
+ else
+ {
+ values[2] = null;
+ }
+ values[3] = _preserveSort;
+ values[4] = _forceIdIndexFormula;
+ values[5] = _sortColumn;
+ values[6] = _sortAscending;
+ values[7] = _sortProperty;
+ values[8] = _sortable;
+ values[9] = _renderedIfEmpty;
+ values[10] = _rowCountVar;
+ values[11] = _rowIndexVar;
+
+ values[12] = _rowOnClick;
+ values[13] = _rowOnDblClick;
+ values[14] = _rowOnMouseDown;
+ values[15] = _rowOnMouseUp;
+ values[16] = _rowOnMouseOver;
+ values[17] = _rowOnMouseMove;
+ values[18] = _rowOnMouseOut;
+ values[19] = _rowOnKeyPress;
+ values[20] = _rowOnKeyDown;
+ values[21] = _rowOnKeyUp;
+
+ values[22] = _rowStyleClass;
+ values[23] = _rowStyle;
+
+ values[24] = preserveSort ? getSortColumn() : null;
+ values[25] = preserveSort ? Boolean.valueOf(isSortAscending()) : null;
+
+ values[26] = _varDetailToggler;
+ values[27] = _expandedNodes;
+ values[28] = _rowGroupStyle;
+ values[29] = _rowGroupStyleClass;
+ values[30] = _sortedColumnVar;
+ values[31] = new Integer(_sortColumnIndex);
+
+ values[32] = _newspaperColumns;
+ values[33] = _newspaperOrientation;
+ values[34] = _bodyStyle;
+ values[35] = _bodyStyleClass;
+
+ return values;
+ }
+
+ /**
+ * @see org.apache.myfaces.component.html.ext.HtmlDataTableHack#getDataModel()
+ */
+ protected DataModel getDataModel()
+ {
+ if (_preservedDataModel != null)
+ {
+ setDataModel(_preservedDataModel);
+ _preservedDataModel = null;
+ }
+
+ return super.getDataModel();
+ }
+
+ /**
+ * @see org.apache.myfaces.component.html.ext.HtmlDataTableHack#createDataModel()
+ */
+ protected DataModel createDataModel()
+ {
+ DataModel dataModel = super.createDataModel();
+
+ boolean isSortable = isSortable();
+
+ if (!(dataModel instanceof SortableModel))
+ {
+ //if sortable=true make each column sortable
+ //if sortable=false, check to see if at least one column sortable case in which
+ //the current model needs to be wrapped by a sortable one.
+ for (Iterator iter = getChildren().iterator(); iter.hasNext();)
+ {
+ UIComponent component = (UIComponent) iter.next();
+ if (component instanceof HtmlSimpleColumn)
+ {
+ HtmlSimpleColumn aColumn = (HtmlSimpleColumn) component;
+ if (isSortable())
+ aColumn.setSortable(true);
+
+ if (aColumn.isSortable())
+ isSortable = true;
+
+ if (aColumn.isDefaultSorted() && getSortColumn() == null)
+ setSortProperty(aColumn.getSortPropertyName());
+ }
+ }
+
+ if (isSortable)
+ dataModel = new SortableModel(dataModel);
+ }
+
+ if (isSortable && getSortProperty() != null)
+ {
+ SortCriterion criterion = new SortCriterion(getSortProperty(), isSortAscending());
+ List criteria = new ArrayList();
+ criteria.add(criterion);
+
+ ((SortableModel) dataModel).setSortCriteria(criteria);
+ }
+
+ return dataModel;
+ }
+
+ public void restoreState(FacesContext context, Object state)
+ {
+ Object values[] = (Object[]) state;
+ super.restoreState(context, values[0]);
+ _preserveDataModel = (Boolean) values[1];
+ if (isPreserveDataModel())
+ {
+ _preservedDataModel = (_SerializableDataModel) restoreAttachedState(context, values[2]);
+ }
+ else
+ {
+ _preservedDataModel = null;
+ }
+ _preserveSort = (Boolean) values[3];
+ _forceIdIndexFormula = (String) values[4];
+ _sortColumn = (String) values[5];
+ _sortAscending = (Boolean) values[6];
+ _sortProperty = (String) values[7];
+ _sortable = (Boolean) values[8];
+ _renderedIfEmpty = (Boolean) values[9];
+ _rowCountVar = (String) values[10];
+ _rowIndexVar = (String) values[11];
+
+ _rowOnClick = (String) values[12];
+ _rowOnDblClick = (String) values[13];
+ _rowOnMouseDown = (String) values[14];
+ _rowOnMouseUp = (String) values[15];
+ _rowOnMouseOver = (String) values[16];
+ _rowOnMouseMove = (String) values[17];
+ _rowOnMouseOut = (String) values[18];
+ _rowOnKeyPress = (String) values[19];
+ _rowOnKeyDown = (String) values[20];
+ _rowOnKeyUp = (String) values[21];
+
+ _rowStyleClass = (String) values[22];
+ _rowStyle = (String) values[23];
+
+ if (isPreserveSort())
+ {
+ String sortColumn = (String) values[24];
+ Boolean sortAscending = (Boolean) values[25];
+ if (sortColumn != null && sortAscending != null)
+ {
+ ValueBinding vb = getValueBinding("sortColumn");
+ if (vb != null && !vb.isReadOnly(context))
+ {
+ vb.setValue(context, sortColumn);
+ }
+
+ vb = getValueBinding("sortAscending");
+ if (vb != null && !vb.isReadOnly(context))
+ {
+ vb.setValue(context, sortAscending);
+ }
+ }
+ }
+
+ _varDetailToggler = (String) values[26];
+ _expandedNodes = (Set) values[27];
+ _rowGroupStyle = (String) values[28];
+ _rowGroupStyleClass = (String) values[29];
+ _sortedColumnVar = (String) values[30];
+ _sortColumnIndex = values[31] != null ? ((Integer) values[31]).intValue() : -1;
+ _newspaperColumns = (Integer) values[32];
+ _newspaperOrientation = (String) values[33];
+ _bodyStyle = (String) values[34];
+ _bodyStyleClass = (String) values[35];
+ }
+
+ public _SerializableDataModel getSerializableDataModel()
+ {
+ DataModel dm = getDataModel();
+ if (dm instanceof _SerializableDataModel)
+ {
+ return (_SerializableDataModel) dm;
+ }
+ return createSerializableDataModel();
+ }
+
+ /**
+ * @return _SerializableDataModel
+ */
+ private _SerializableDataModel createSerializableDataModel()
+ {
+ Object value = getValue();
+ if (value == null)
+ {
+ return null;
+ }
+ else if (value instanceof DataModel)
+ {
+ return new _SerializableDataModel(getFirst(), getRows(), (DataModel) value);
+ }
+ else if (value instanceof List)
+ {
+ return new _SerializableListDataModel(getFirst(), getRows(), (List) value);
+ }
+ // accept a Collection is not supported in the Spec
+ else if (value instanceof Collection)
+ {
+ return new _SerializableListDataModel(getFirst(), getRows(), new ArrayList((Collection) value));
+ }
+ else if (OBJECT_ARRAY_CLASS.isAssignableFrom(value.getClass()))
+ {
+ return new _SerializableArrayDataModel(getFirst(), getRows(), (Object[]) value);
+ }
+ else if (value instanceof ResultSet)
+ {
+ return new _SerializableResultSetDataModel(getFirst(), getRows(), (ResultSet) value);
+ }
+ else if (value instanceof javax.servlet.jsp.jstl.sql.Result)
+ {
+ return new _SerializableResultDataModel(getFirst(), getRows(),
+ (javax.servlet.jsp.jstl.sql.Result) value);
+ }
+ else
+ {
+ return new _SerializableScalarDataModel(getFirst(), getRows(), value);
+ }
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this))
+ return false;
+ return super.isRendered();
+ }
+
+ public void setForceIdIndexFormula(String forceIdIndexFormula)
+ {
+ _forceIdIndexFormula = forceIdIndexFormula;
+ ValueBinding vb = getValueBinding("forceIdIndexFormula");
+ if (vb != null)
+ {
+ vb.setValue(getFacesContext(), _forceIdIndexFormula);
+ _forceIdIndexFormula = null;
+ }
+ }
+
+ public String getForceIdIndexFormula()
+ {
+ if (_forceIdIndexFormula != null)
+ return _forceIdIndexFormula;
+ ValueBinding vb = getValueBinding("forceIdIndexFormula");
+ if (vb == null)
+ return null;
+ Object eval = vb.getValue(getFacesContext());
+ return eval == null ? null : eval.toString();
+ }
+
+ /**
+ * Specify what column the data should be sorted on.
+ * <p/>
+ * Note that calling this method <i>immediately</i> stores the value
+ * via any value-binding with name "sortColumn". This is done because
+ * this method is called by the HtmlCommandSortHeader component when
+ * the user has clicked on a column's sort header. In this case, the
+ * the model getter method mapped for name "value" needs to read this
+ * value in able to return the data in the desired order - but the
+ * HtmlCommandSortHeader component is usually "immediate" in order to
+ * avoid validating the enclosing form. Yes, this is rather hacky -
+ * but it works.
+ */
+ public void setSortColumn(String sortColumn)
+ {
+ _sortColumn = sortColumn;
+ // update model is necessary here, because processUpdates is never called
+ // reason: HtmlCommandSortHeader.isImmediate() == true
+ ValueBinding vb = getValueBinding("sortColumn");
+ if (vb != null)
+ {
+ vb.setValue(getFacesContext(), _sortColumn);
+ _sortColumn = null;
+ }
+
+ setSortColumnIndex(columnNameToIndex(sortColumn));
+ }
+
+ public String getSortColumn()
+ {
+ if (_sortColumn != null) return _sortColumn;
+ ValueBinding vb = getValueBinding("sortColumn");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setSortAscending(boolean sortAscending)
+ {
+ _sortAscending = Boolean.valueOf(sortAscending);
+ // update model is necessary here, because processUpdates is never called
+ // reason: HtmlCommandSortHeader.isImmediate() == true
+ ValueBinding vb = getValueBinding("sortAscending");
+ if (vb != null)
+ {
+ vb.setValue(getFacesContext(), _sortAscending);
+ _sortAscending = null;
+ }
+ }
+
+ public boolean isSortAscending()
+ {
+ if (_sortAscending != null)
+ return _sortAscending.booleanValue();
+ ValueBinding vb = getValueBinding("sortAscending");
+ Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+ return v != null ? v.booleanValue() : DEFAULT_SORTASCENDING;
+ }
+
+ public void setSortProperty(String sortProperty)
+ {
+ _sortProperty = sortProperty;
+ }
+
+ public String getSortProperty()
+ {
+ return _sortProperty;
+ }
+
+ public void setSortable(boolean sortable)
+ {
+ _sortable = sortable ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public boolean isSortable()
+ {
+ if (_sortable != null) return _sortable.booleanValue();
+ ValueBinding vb = getValueBinding("sortable");
+ Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+ return v != null ? v.booleanValue() : DEFAULT_SORTABLE;
+ }
+
+ public void setRowOnMouseOver(String rowOnMouseOver)
+ {
+ _rowOnMouseOver = rowOnMouseOver;
+ }
+
+ public String getRowOnMouseOver()
+ {
+ if (_rowOnMouseOver != null)
+ return _rowOnMouseOver;
+ ValueBinding vb = getValueBinding("rowOnMouseOver");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnMouseOut(String rowOnMouseOut)
+ {
+ _rowOnMouseOut = rowOnMouseOut;
+ }
+
+ public String getRowOnMouseOut()
+ {
+ if (_rowOnMouseOut != null)
+ return _rowOnMouseOut;
+ ValueBinding vb = getValueBinding("rowOnMouseOut");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnClick(String rowOnClick)
+ {
+ _rowOnClick = rowOnClick;
+ }
+
+ public String getRowOnClick()
+ {
+ if (_rowOnClick != null)
+ return _rowOnClick;
+ ValueBinding vb = getValueBinding("rowOnClick");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnDblClick(String rowOnDblClick)
+ {
+ _rowOnDblClick = rowOnDblClick;
+ }
+
+ public String getRowOnDblClick()
+ {
+ if (_rowOnDblClick != null)
+ return _rowOnDblClick;
+ ValueBinding vb = getValueBinding("rowOnDblClick");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public String getRowOnKeyDown()
+ {
+ if (_rowOnKeyDown != null)
+ return _rowOnKeyDown;
+ ValueBinding vb = getValueBinding("rowOnKeyDown");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnKeyDown(String rowOnKeyDown)
+ {
+ _rowOnKeyDown = rowOnKeyDown;
+ }
+
+ public String getRowOnKeyPress()
+ {
+ if (_rowOnKeyPress != null)
+ return _rowOnKeyPress;
+ ValueBinding vb = getValueBinding("rowOnKeyPress");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnKeyPress(String rowOnKeyPress)
+ {
+ _rowOnKeyPress = rowOnKeyPress;
+ }
+
+ public String getRowOnKeyUp()
+ {
+ if (_rowOnKeyUp != null)
+ return _rowOnKeyUp;
+ ValueBinding vb = getValueBinding("rowOnKeyUp");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnKeyUp(String rowOnKeyUp)
+ {
+ _rowOnKeyUp = rowOnKeyUp;
+ }
+
+ public String getRowStyleClass()
+ {
+ if (_rowStyleClass != null)
+ return _rowStyleClass;
+
+ // TODO: temporarily support fully-qualified ext. dataTable attribute names.
+ ValueBinding vb = getValueBinding("org.apache.myfaces.dataTable.ROW_STYLECLASS");
+ if (vb != null)
+ log.warn("org.apache.myfaces.dataTable.ROW_STYLECLASS is deprecated. Please use rowStyleClass instead.");
+ else
+ vb = getValueBinding(JSFAttr.ROW_STYLECLASS_ATTR);
+ if(vb == null)
+ return null;
+ String bindingValue = (String) vb.getValue(getFacesContext());
+ if(bindingValue == "")
+ return null; // Fix for JSF 1.2 EL coercing nulls to empty string
+ return bindingValue;
+ }
+
+ public void setRowStyleClass(String rowStyleClass)
+ {
+ _rowStyleClass = rowStyleClass;
+ }
+
+ public String getRowStyle()
+ {
+ if (_rowStyle != null)
+ return _rowStyle;
+
+ // TODO: temporarily support fully-qualified ext. dataTable attribute names.
+ ValueBinding vb = getValueBinding("org.apache.myfaces.dataTable.ROW_STYLE");
+ if (vb != null)
+ log.warn("org.apache.myfaces.dataTable.ROW_STYLE is deprecated. Please use rowStyle instead.");
+ else
+ vb = getValueBinding(JSFAttr.ROW_STYLE_ATTR);
+ if(vb == null)
+ return null;
+ String bindingValue = (String) vb.getValue(getFacesContext());
+ if(bindingValue == "")
+ return null; // Fix for JSF 1.2 EL coercing nulls to empty string
+ return bindingValue;
+ }
+
+ public void setRowStyle(String rowStyle)
+ {
+ _rowStyle = rowStyle;
+ }
+
+ public String getRowOnMouseDown()
+ {
+ if (_rowOnMouseDown != null)
+ return _rowOnMouseDown;
+ ValueBinding vb = getValueBinding("rowOnMouseDown");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnMouseDown(String rowOnMouseDown)
+ {
+ _rowOnMouseDown = rowOnMouseDown;
+ }
+
+ public String getRowOnMouseMove()
+ {
+ if (_rowOnMouseMove != null)
+ return _rowOnMouseMove;
+ ValueBinding vb = getValueBinding("rowOnMouseMove");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnMouseMove(String rowOnMouseMove)
+ {
+ _rowOnMouseMove = rowOnMouseMove;
+ }
+
+ public String getRowOnMouseUp()
+ {
+ if (_rowOnMouseUp != null)
+ return _rowOnMouseUp;
+ ValueBinding vb = getValueBinding("rowOnMouseUp");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowOnMouseUp(String rowOnMouseUp)
+ {
+ _rowOnMouseUp = rowOnMouseUp;
+ }
+
+ protected boolean isValidChildren()
+ {
+ return _isValidChildren;
+ }
+
+ protected void setIsValidChildren(boolean isValidChildren)
+ {
+ _isValidChildren = isValidChildren;
+ }
+
+ protected _SerializableDataModel getPreservedDataModel()
+ {
+ return _preservedDataModel;
+ }
+
+ protected void setPreservedDataModel(_SerializableDataModel preservedDataModel)
+ {
+ _preservedDataModel = preservedDataModel;
+ }
+
+
+ public boolean isCurrentDetailExpanded()
+ {
+ return _expandedNodes.contains(new Integer(getRowIndex()));
+ }
+
+ public void setVarDetailToggler(String varDetailToggler)
+ {
+ _varDetailToggler = varDetailToggler;
+ }
+
+ public String getVarDetailToggler()
+ {
+ if (_varDetailToggler != null)
+ return _varDetailToggler;
+ ValueBinding vb = getValueBinding("varDetailToggler");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public String getRowGroupStyle()
+ {
+ if (_rowGroupStyle != null)
+ return _rowGroupStyle;
+ ValueBinding vb = getValueBinding("rowGroupStyle");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowGroupStyle(String rowGroupStyle)
+ {
+ _rowGroupStyle = rowGroupStyle;
+ }
+
+ public String getRowGroupStyleClass()
+ {
+ if (_rowGroupStyleClass != null)
+ return _rowGroupStyleClass;
+ ValueBinding vb = getValueBinding("rowGroupStyleClass");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowGroupStyleClass(String rowGroupStyleClass)
+ {
+ _rowGroupStyleClass = rowGroupStyleClass;
+ }
+
+ public String getBodyStyle()
+ {
+ if (_bodyStyle != null)
+ return _bodyStyle;
+ ValueBinding vb = getValueBinding("bodyStyle");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setBodyStyle(String bodyStyle)
+ {
+ _bodyStyle = bodyStyle;
+ }
+
+ public String getBodyStyleClass()
+ {
+ if (_bodyStyleClass != null)
+ return _bodyStyleClass;
+ ValueBinding vb = getValueBinding("bodyStyleClass");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setBodyStyleClass(String bodyStyleClass)
+ {
+ _bodyStyleClass = bodyStyleClass;
+ }
+
+ 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 true if the current detail row is expanded.
+ */
+ public boolean isDetailExpanded()
+ {
+ Integer rowIndex = new Integer(getRowIndex());
+
+ return _expandedNodes.contains(rowIndex);
+ }
+
+ public int getSortColumnIndex()
+ {
+ if (_sortColumnIndex == -1)
+ _sortColumnIndex = columnNameToIndex(getSortColumn());
+
+ return _sortColumnIndex;
+ }
+
+ public void setSortColumnIndex(int sortColumnIndex)
+ {
+ _sortColumnIndex = sortColumnIndex;
+ }
+
+ /**
+ * Set the number of columns the table will be divided over.
+ */
+ public int getNewspaperColumns() {
+ if (_newspaperColumns != null) return _newspaperColumns.intValue();
+ ValueBinding vb = getValueBinding(NEWSPAPER_COLUMNS_PROPERTY);
+ Integer v = vb != null ? (Integer)vb.getValue(getFacesContext()) : DEFAULT_NEWSPAPER_COLUMNS;
+ return v.intValue();
+ }
+
+ public void setNewspaperColumns(int newspaperColumns)
+ {
+ this._newspaperColumns = new Integer(newspaperColumns);
+ }
+
+ /**
+ * Set the orientation of the newspaper columns.
+ */
+ public void setNewspaperOrientation(String newspaperOrientation)
+ {
+ this._newspaperOrientation = newspaperOrientation;
+ }
+
+ public String getNewspaperOrientation() {
+ if(_newspaperOrientation != null)
+ return _newspaperOrientation;
+
+ ValueBinding vb = getValueBinding(NEWSPAPER_ORIENTATION_PROPERTY);
+ String v = vb != null ? (String)vb.getValue(getFacesContext()) : DEFAULT_NEWSPAPER_ORIENTATION;
+ return v;
+ }
+
+ /**
+ * Gets the spacer facet, between each pair of newspaper columns.
+ */
+ public UIComponent getSpacer()
+ {
+ return (UIComponent) getFacets().get(SPACER_FACET_NAME);
+ }
+
+ public void setSpacer(UIComponent spacer)
+ {
+ getFacets().put(SPACER_FACET_NAME, spacer);
+ }
+
+ /**
+ * Expand all details
+ */
+ public void expandAllDetails()
+ {
+ int rowCount = getRowCount();
+
+ _expandedNodes.clear();
+ for (int row = 0; row < rowCount; row++)
+ {
+ _expandedNodes.add(new Integer(row));
+ }
+ }
+
+ /**
+ * Collapse all details
+ */
+ public void collapseAllDetails()
+ {
+ _expandedNodes.clear();
+ }
+
+ /**
+ * @return true is any of the details is expanded
+ */
+ public boolean isExpandedEmpty()
+ {
+ boolean expandedEmpty = true;
+ if (_expandedNodes != null)
+ {
+ expandedEmpty = _expandedNodes.isEmpty();
+ }
+ return expandedEmpty;
+ }
+
+ /**
+ * Clears expanded nodes set if expandedEmpty is true
+ *
+ * @param expandedEmpty
+ */
+ public void setExpandedEmpty(boolean expandedEmpty)
+ {
+ if (expandedEmpty)
+ {
+ if (_expandedNodes != null)
+ {
+ _expandedNodes.clear();
+ }
+ }
+ }
+
+ //------------------ GENERATED CODE BEGIN (do not modify!) --------------------
+
+ public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlDataTable";
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Table";
+
+ private static final boolean DEFAULT_PRESERVEDATAMODEL = false;
+ private static final boolean DEFAULT_PRESERVESORT = true;
+ private static final boolean DEFAULT_RENDEREDIFEMPTY = true;
+
+ private Boolean _preserveDataModel = null;
+ private Boolean _preserveSort = null;
+ private String _enabledOnUserRole = null;
+ private String _visibleOnUserRole = null;
+ private Boolean _renderedIfEmpty = null;
+ private String _rowIndexVar = null;
+ private String _rowCountVar = null;
+ private String _sortedColumnVar = null;
+ private String _previousRowDataVar = null;
+
+ public void setPreserveDataModel(boolean preserveDataModel)
+ {
+ _preserveDataModel = Boolean.valueOf(preserveDataModel);
+ }
+
+ public boolean isPreserveDataModel()
+ {
+ if (_preserveDataModel != null)
+ return _preserveDataModel.booleanValue();
+ ValueBinding vb = getValueBinding("preserveDataModel");
+ Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+ return v != null ? v.booleanValue() : DEFAULT_PRESERVEDATAMODEL;
+ }
+
+ public void setPreserveSort(boolean preserveSort)
+ {
+ _preserveSort = Boolean.valueOf(preserveSort);
+ }
+
+ public boolean isPreserveSort()
+ {
+ if (_preserveSort != null)
+ return _preserveSort.booleanValue();
+ ValueBinding vb = getValueBinding("preserveSort");
+ Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+ return v != null ? v.booleanValue() : DEFAULT_PRESERVESORT;
+ }
+
+ public void setEnabledOnUserRole(String enabledOnUserRole)
+ {
+ _enabledOnUserRole = enabledOnUserRole;
+ }
+
+ public String getEnabledOnUserRole()
+ {
+ if (_enabledOnUserRole != null)
+ return _enabledOnUserRole;
+ ValueBinding vb = getValueBinding("enabledOnUserRole");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setVisibleOnUserRole(String visibleOnUserRole)
+ {
+ _visibleOnUserRole = visibleOnUserRole;
+ }
+
+ public String getVisibleOnUserRole()
+ {
+ if (_visibleOnUserRole != null)
+ return _visibleOnUserRole;
+ ValueBinding vb = getValueBinding("visibleOnUserRole");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRenderedIfEmpty(boolean renderedIfEmpty)
+ {
+ _renderedIfEmpty = Boolean.valueOf(renderedIfEmpty);
+ }
+
+ public boolean isRenderedIfEmpty()
+ {
+ if (_renderedIfEmpty != null)
+ return _renderedIfEmpty.booleanValue();
+ ValueBinding vb = getValueBinding("renderedIfEmpty");
+ Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
+ return v != null ? v.booleanValue() : DEFAULT_RENDEREDIFEMPTY;
+ }
+
+ public void setRowIndexVar(String rowIndexVar)
+ {
+ _rowIndexVar = rowIndexVar;
+ }
+
+ public String getRowIndexVar()
+ {
+ if (_rowIndexVar != null)
+ return _rowIndexVar;
+ ValueBinding vb = getValueBinding("rowIndexVar");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setRowCountVar(String rowCountVar)
+ {
+ _rowCountVar = rowCountVar;
+ }
+
+ public String getRowCountVar()
+ {
+ if (_rowCountVar != null)
+ return _rowCountVar;
+ ValueBinding vb = getValueBinding("rowCountVar");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setPreviousRowDataVar(String previousRowDataVar)
+ {
+ _previousRowDataVar = previousRowDataVar;
+ }
+
+ public String getPreviousRowDataVar()
+ {
+ if (_previousRowDataVar != null)
+ return _previousRowDataVar;
+ ValueBinding vb = getValueBinding("previousRowDataVar");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ public void setSortedColumnVar(String sortedColumnVar)
+ {
+ _sortedColumnVar = sortedColumnVar;
+ }
+
+ public String getSortedColumnVar()
+ {
+ if (_sortedColumnVar != null) return _sortedColumnVar;
+ ValueBinding vb = getValueBinding("sortedColumnVar");
+ return vb != null ? (String) vb.getValue(getFacesContext()) : null;
+ }
+
+ //------------------ GENERATED CODE END ---------------------------------------
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlDataTableTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlDataTableTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlGraphicImageTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlGraphicImageTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlGraphicImageTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlGraphicImageTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlGraphicImage
+ extends javax.faces.component.html.HtmlGraphicImage
+ implements UserRoleAware
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Image";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlGraphicImageTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlGraphicImageTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputHiddenTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputHiddenTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputHiddenTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputHiddenTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlGraphicImage
+ extends javax.faces.component.html.HtmlGraphicImage
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "javax.faces.Hidden";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputHiddenTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputHiddenTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputSecretTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputSecretTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputSecretTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputSecretTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+import org.apache.myfaces.shared_tomahawk.component.DisplayValueOnlyCapable;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlInputSecret
+ extends javax.faces.component.html.HtmlInputSecret
+ implements UserRoleAware, DisplayValueOnlyCapable
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Secret";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+ public boolean isSetDisplayValueOnly()
+ {
+ return _displayValueOnlySet;
+ }
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputSecretTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputSecretTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+import org.apache.myfaces.shared_tomahawk.component.DisplayValueOnlyCapable;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlInputText
+ extends javax.faces.component.html.HtmlInputText
+ implements UserRoleAware, DisplayValueOnlyCapable
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Text";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+ public boolean isSetDisplayValueOnly()
+ {
+ return _displayValueOnlySet;
+ }
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextareaTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextareaTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextareaTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextareaTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+import org.apache.myfaces.shared_tomahawk.component.DisplayValueOnlyCapable;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlInputTextarea
+ extends javax.faces.component.html.HtmlInputTextarea
+ implements UserRoleAware, DisplayValueOnlyCapable
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Textarea";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+ public boolean isSetDisplayValueOnly()
+ {
+ return _displayValueOnlySet;
+ }
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextareaTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlInputTextareaTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessageTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessageTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessageTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessageTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlMessage
+ extends javax.faces.component.html.HtmlMessage
+ implements UserRoleAware
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Message";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+ public boolean getForceSpan(){
+ return isForceSpan();
+ }
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessageTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessageTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessagesTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessagesTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessagesTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessagesTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlMessage
+ extends javax.faces.component.html.HtmlMessage
+ implements UserRoleAware
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Messages";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+ public boolean getForceSpan(){
+ return isForceSpan();
+ }
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessagesTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlMessagesTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputLabelTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputLabelTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputLabelTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputLabelTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlOutputLabel
+ extends javax.faces.component.html.HtmlOutputLabel
+ implements UserRoleAware
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "javax.faces.Label";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputLabelTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputLabelTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputTextTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputTextTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputTextTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputTextTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlOutputText
+ extends javax.faces.component.html.HtmlOutputText
+ implements UserRoleAware
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Text";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputTextTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlOutputTextTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlPanelGridTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlPanelGridTemplate.java?rev=616601&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlPanelGridTemplate.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlPanelGridTemplate.java Tue Jan 29 18:58:48 2008
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.component.html.ext;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.component.html.util.HtmlComponentUtils;
+import org.apache.myfaces.shared_tomahawk.component.DisplayValueOnlyCapable;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlPanelGrid
+ extends javax.faces.component.html.HtmlPanelGrid
+ implements UserRoleAware, DisplayValueOnlyCapable
+{
+
+ public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Grid";
+
+ public String getClientId(FacesContext context)
+ {
+ String clientId = HtmlComponentUtils.getClientId(this, getRenderer(context), context);
+ if (clientId == null)
+ {
+ clientId = super.getClientId(context);
+ }
+
+ return clientId;
+ }
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) return false;
+ return super.isRendered();
+ }
+
+ public boolean isSetDisplayValueOnly()
+ {
+ return _displayValueOnlySet;
+ }
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlPanelGridTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java-templates/org/apache/myfaces/component/html/ext/HtmlPanelGridTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL