/* * RHQ Management Platform * Copyright (C) 2009-2010 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.core.gui.table.component; import org.rhq.core.gui.util.FacesExpressionUtility; import javax.el.ValueExpression; import javax.faces.component.UIInput; import javax.faces.context.FacesContext; /** * An HTML component that allows rows in rich:*dataTables to be selected via either checkboxes (if in multi-select mode) * or via radio buttons (if in single-select mode). * * NOTE: It is preferred to use the disabled attribute of this component instead of the rendered attribute. This will * provide consistency to the rendered table such as regardless of what items appear in the table, the check-able * column will always be rendered with a consistent width. * * @author Ian Springer */ public class AllRowsSelectorComponent extends UIInput { private String dataTableId; public static final String COMPONENT_TYPE = "org.rhq.AllRowsSelector"; public static final String COMPONENT_FAMILY = "org.rhq.AllRowsSelector"; @Override public String getFamily() { return COMPONENT_FAMILY; } public String getDataTableId() { if (this.dataTableId != null) { return this.dataTableId; } this.dataTableId = (String) getBinding("dataTableId"); return this.dataTableId; } public void setDataTableId(String dataTableId) { this.dataTableId = dataTableId; } @Override public Object saveState(FacesContext context) { Object[] values = new Object[2]; values[0] = super.saveState(context); values[1] = this.dataTableId; return values; } @Override public void restoreState(FacesContext context, Object state) { Object[] values = (Object[]) state; super.restoreState(context, values[0]); this.dataTableId = (String) values[1]; } public Object getBinding(String attr) { if (attr == null) { throw new NullPointerException("passed attribute is null"); } ValueExpression valueExpression = this.getValueExpression(attr); Object attribValue = (valueExpression != null) ? FacesExpressionUtility.getValue(valueExpression, Object.class) : null; return attribValue; } }