Source Code Cross Referenced for TableRowGroupBase.java in  » IDE-Netbeans » visualweb.api.designer » com » sun » rave » web » ui » component » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » IDE Netbeans » visualweb.api.designer » com.sun.rave.web.ui.component 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


0001:        /*
0002:         * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0003:         *
0004:         * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
0005:         *
0006:         * The contents of this file are subject to the terms of either the GNU
0007:         * General Public License Version 2 only ("GPL") or the Common
0008:         * Development and Distribution License("CDDL") (collectively, the
0009:         * "License"). You may not use this file except in compliance with the
0010:         * License. You can obtain a copy of the License at
0011:         * http://www.netbeans.org/cddl-gplv2.html
0012:         * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
0013:         * specific language governing permissions and limitations under the
0014:         * License.  When distributing the software, include this License Header
0015:         * Notice in each file and include the License file at
0016:         * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
0017:         * particular file as subject to the "Classpath" exception as provided
0018:         * by Sun in the GPL Version 2 section of the License file that
0019:         * accompanied this code. If applicable, add the following below the
0020:         * License Header, with the fields enclosed by brackets [] replaced by
0021:         * your own identifying information:
0022:         * "Portions Copyrighted [year] [name of copyright owner]"
0023:         *
0024:         * Contributor(s):
0025:         *
0026:         * The Original Software is NetBeans. The Initial Developer of the Original
0027:         * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
0028:         * Microsystems, Inc. All Rights Reserved.
0029:         *
0030:         * If you wish your version of this file to be governed by only the CDDL
0031:         * or only the GPL Version 2, indicate your decision by adding
0032:         * "[Contributor] elects to include this software in this distribution
0033:         * under the [CDDL or GPL Version 2] license." If you do not indicate a
0034:         * single choice of license, a recipient has the option to distribute
0035:         * your version of this file under either the CDDL, the GPL Version 2 or
0036:         * to extend the choice of license to its licensees as provided above.
0037:         * However, if you add GPL Version 2 code and therefore, elected the GPL
0038:         * Version 2 license, then the option applies only if the new code is
0039:         * made subject to such option by the copyright holder.
0040:         */
0041:        package com.sun.rave.web.ui.component;
0042:
0043:        import java.io.IOException;
0044:        import javax.faces.component.UIComponent;
0045:        import javax.faces.context.FacesContext;
0046:        import javax.faces.el.MethodBinding;
0047:        import javax.faces.el.ValueBinding;
0048:
0049:        /**
0050:         * Use the <code>ui:tableRowGroup</code>
0051:         * tag to define the rows of a table, inside a <a href="table.html"><code>ui:table</code></a>
0052:         * tag.&nbsp; A table must include at least one tableRowGroup component to
0053:         * contain the table row content. <br>
0054:         * <p style="color: rgb(0, 0, 0);">The <code>ui:table</code>
0055:         * tag is
0056:         * used to define the structure and actions of the table, and is a
0057:         * container for <code>ui:tableRowGroup</code>
0058:         * tags.&nbsp; The <code>ui:tableRowGroup</code> tag is a container for <code></code><a
0059:         * href="tableColumn.html"><code>ui:tableColumn</code></a><code></code>
0060:         * tags, which are used&nbsp;<code></code>to define the
0061:         * columns of the table.&nbsp; The <a href="table.html">documentation
0062:         * for the <code>ui:table</code> tag</a> contains detailed information
0063:         * about the table component.&nbsp; This page provides details about how
0064:         * to create table rows only.<br>
0065:         * </p>
0066:         * <p style="color: rgb(0, 0, 0);">When you use one <code>ui:tableRowGroup</code>
0067:         * tag in the <code>ui:table</code> tag, you create a basic table.&nbsp;
0068:         * Examples of basic tables are shown in the <a table.html=""><code>ui:table</code>
0069:         * tag documentation</a>. When
0070:         * you use multiple <code>ui:tableRowGroup</code> tags, you create a
0071:         * group table, which is discussed in detail in this document.<br>
0072:         * </p>
0073:         * <p style="color: rgb(0, 0, 0);">
0074:         * </p>
0075:         * <h3 style="color: rgb(0, 0, 0);">HTML Elements and Layout</h3>
0076:         * <span style="color: rgb(0, 0, 0);">The tableRowGroup component is used
0077:         * to define attributes for XHTML </span><code
0078:         * style="color: rgb(0, 0, 0);">&lt;tr&gt;</code>
0079:         * <span style="color: rgb(0, 0, 0);">&nbsp;
0080:         * elements, which
0081:         * are used
0082:         * to display&nbsp;rows of data. You can specify multiple <code>ui:tableRowGroup</code>
0083:         * tags to create groups of rows. Each group is visually separate from the
0084:         * other groups, but all rows of the table can be sorted and filtered at
0085:         * once, within their respective groups. <br>
0086:         * <br>
0087:         * UI guidelines recommend
0088:         * that
0089:         * column headers and table column footers are
0090:         * only rendered
0091:         * once for each table. Column headers typically appear at the top of the
0092:         * table,
0093:         * below the Action Bar and above all row groups. Table column footers
0094:         * appear only at the
0095:         * bottom of the table, below all row groups. The column headers and
0096:         * table column footers are defined in the <code>headerText</code>
0097:         * and <code>tableFooterText</code> attributes of the <code>ui:tableColumn</code>
0098:         * tags. To ensure that these headers and footers are rendered only once,
0099:         * you should define the&nbsp;
0100:         * <code>headerText</code>
0101:         * and <code>tableFooterText</code> attributes only in the <code>ui:tableColumn</code>
0102:         * tags inside the
0103:         * first <code>ui:tableRowGroup</code> tag in the
0104:         * table.&nbsp; See the </span><a href="tableColumn.html"
0105:         * style="color: rgb(0, 0, 0);"><code>ui:tableColumn</code>
0106:         * documentation</a><span style="color: rgb(0, 0, 0);"> for more
0107:         * information. </span><br style="color: rgb(0, 0, 0);">
0108:         * <span style="color: rgb(0, 0, 0);"><br>
0109:         * The following <a href="tableRowGroup.html#diagram">diagram</a>
0110:         * shows the placement of the areas of a table, and highlights the areas
0111:         * that are defined with <code>ui:tableRowGroup</code> tags. This diagram
0112:         * depicts two row groups.</span><br>
0113:         * <br>
0114:         * <a name="diagram"></a><br>
0115:         * <table style="text-align: left; width: 100%;" border="1" cellpadding="2"
0116:         * cellspacing="2">
0117:         * <tbody>
0118:         * <tr style="color: rgb(204, 204, 204);">
0119:         * <td
0120:         * style="vertical-align: top; background-color: rgb(153, 153, 153);"
0121:         * rowspan="1" colspan="1">Title
0122:         * Bar&nbsp;</td>
0123:         * </tr>
0124:         * <tr style="color: rgb(153, 153, 153);">
0125:         * <td
0126:         * style="vertical-align: top; background-color: rgb(208, 208, 208);"
0127:         * rowspan="1" colspan="1">Action
0128:         * Bar (top)&nbsp;&nbsp;</td>
0129:         * </tr>
0130:         * <tr>
0131:         * <td
0132:         * style="vertical-align: top; background-color: rgb(210, 224, 235);">
0133:         * <table style="text-align: left; height: 223px; width: 100%;"
0134:         * border="1" cellpadding="2" cellspacing="2">
0135:         * <tbody>
0136:         * <tr>
0137:         * <td
0138:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Column
0139:         * Header <br>
0140:         * </td>
0141:         * <td
0142:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Column
0143:         * Header<br>
0144:         * </td>
0145:         * </tr>
0146:         * <tr>
0147:         * <td
0148:         * style="vertical-align: top; background-color: rgb(210, 224, 235);"
0149:         * rowspan="1" colspan="2">Group
0150:         * Header Bar (specified with <code>headerText</code>
0151:         * attribute and <code>header</code> facet in first <code>ui:tableRowGroup</code>
0152:         * tag) </td>
0153:         * </tr>
0154:         * <tr>
0155:         * <td
0156:         * style="vertical-align: top; background-color: rgb(210, 224, 235);">Table
0157:         * data
0158:         * specified in <code>ui:tableRowGroup</code><br>
0159:         * <code> <br>
0160:         * <br>
0161:         * <br>
0162:         * </code></td>
0163:         * <td
0164:         * style="vertical-align: top; background-color: rgb(210, 224, 235);">Table
0165:         * data
0166:         * specified in <code>ui:tableRowGroup</code><br>
0167:         * </td>
0168:         * </tr>
0169:         * <tr>
0170:         * <td
0171:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Column
0172:         * Footer</td>
0173:         * <td
0174:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Column
0175:         * Footer <br>
0176:         * </td>
0177:         * </tr>
0178:         * <tr>
0179:         * <td
0180:         * style="vertical-align: top; background-color: rgb(210, 224, 235);"
0181:         * rowspan="1" colspan="2">Group
0182:         * Footer Bar&nbsp; <br>
0183:         * </td>
0184:         * </tr>
0185:         * <tr>
0186:         * <td
0187:         * style="vertical-align: top; background-color: rgb(163, 184, 203);"
0188:         * rowspan="1" colspan="2">Group Header Bar<br>
0189:         * </td>
0190:         * </tr>
0191:         * <tr>
0192:         * <td
0193:         * style="vertical-align: top; background-color: rgb(163, 184, 203);">Table
0194:         * data specified in <code>ui:tableRowGroup</code><br>
0195:         * <br>
0196:         * <br>
0197:         * <br>
0198:         * <br>
0199:         * </td>
0200:         * <td
0201:         * style="vertical-align: top; background-color: rgb(163, 184, 203);">Table
0202:         * data specified in <code>ui:tableRowGroup</code><br>
0203:         * </td>
0204:         * </tr>
0205:         * <tr>
0206:         * <td
0207:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Column
0208:         * Footer<br>
0209:         * </td>
0210:         * <td
0211:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Column
0212:         * Footer</td>
0213:         * </tr>
0214:         * <tr>
0215:         * <td
0216:         * style="vertical-align: top; background-color: rgb(163, 184, 203);"
0217:         * rowspan="1" colspan="2">Group Footer Bar<br>
0218:         * </td>
0219:         * </tr>
0220:         * <tr>
0221:         * <td
0222:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Table
0223:         * Column Footer </td>
0224:         * <td
0225:         * style="vertical-align: top; background-color: rgb(232, 232, 232); color: rgb(153, 153, 153);">Table
0226:         * Column Footer </td>
0227:         * </tr>
0228:         * </tbody>
0229:         * </table>
0230:         * <big><span style="color: rgb(0, 0, 0);"> </span></big></td>
0231:         * </tr>
0232:         * <tr>
0233:         * <td
0234:         * style="vertical-align: top; background-color: rgb(208, 208, 208);"><span
0235:         * style="color: rgb(153, 153, 153);">Action
0236:         * Bar (bottom)&nbsp;</span><small> </small> </td>
0237:         * </tr>
0238:         * <tr>
0239:         * <td
0240:         * style="vertical-align: top; background-color: rgb(153, 153, 153);"
0241:         * rowspan="1" colspan="1"><span style="color: rgb(0, 0, 0);"><span
0242:         * style="color: rgb(204, 204, 204);">Footer</span><code></code></span><code>
0243:         * </code></td>
0244:         * </tr>
0245:         * </tbody>
0246:         * </table>
0247:         * <span style="text-decoration: line-through;"></span><br>
0248:         * <h4 style="color: rgb(0, 0, 0);">Group Header Bar</h4>
0249:         * <span style="color: rgb(0, 0, 0);">The Group Header Bar displays
0250:         * a header by default at the top of each group of rows.&nbsp; The text of
0251:         * the group header
0252:         * is specified with the <code>headerText</code> attribute. You can
0253:         * specify a separate component to provide header content by using the <code>header</code>
0254:         * facet, which overrides the <code>headerText</code> attribute.&nbsp;
0255:         * You can
0256:         * use the following <code>ui:tableRowGroup</code> attributes to change
0257:         * the appearance of the group header:<br>
0258:         * </span>
0259:         * <ul style="color: rgb(0, 0, 0);">
0260:         * <li>
0261:         * <p><code>aboveColumnHeader</code>
0262:         * set to true makes the group header display above the column header.</p>
0263:         * </li>
0264:         * <li>
0265:         * <p><code>selectMultipleToggleButton</code>
0266:         * set to true adds a checkbox that allows users to
0267:         * select and deselect all rows in the group</p>
0268:         * </li>
0269:         * <li>
0270:         * <p><code>collapsed</code>
0271:         * set to true causes the group to be rendered with the rows hidden, and
0272:         * only the group header is visible.&nbsp; </p>
0273:         * <p> </p>
0274:         * </li>
0275:         * <li>
0276:         * <p><code>groupToggleButton</code>
0277:         * set to true adds a button image that allows users to expand and
0278:         * collapse
0279:         * the group of rows. When the group collapses, all the rows are hidden
0280:         * and only the header is visible. </p>
0281:         * <p> </p>
0282:         * </li>
0283:         * <li>
0284:         * <p><code>extraHeaderHtml</code>
0285:         * can be used to append HTML code to the <code>&lt;tr&gt;</code> element
0286:         * that is rendered for the group header</p>
0287:         * </li>
0288:         * </ul>
0289:         * <span style="color: rgb(0, 0, 0);">Note: Detailed descriptions of
0290:         * the
0291:         * attributes are in the attributes table at the end of this document.<br>
0292:         * </span>
0293:         * <h4 style="color: rgb(0, 0, 0);">Group Footer Bar</h4>
0294:         * <p style="color: rgb(0, 0, 0);">The Group Footer Bar
0295:         * displays an optional footer below each group of rows. The text of the
0296:         * group footer is specified with the <code>footerText</code> attribute.
0297:         * You can specify a separate component to provide the footer content by
0298:         * using the <code>footer</code> facet, which overrides the <code>footerText</code>
0299:         * attribute.&nbsp; You can use the following
0300:         * <code>ui:tableRowGroup</code>
0301:         * attributes to change
0302:         * the appearance of the group footer:<br>
0303:         * <code><br>
0304:         * </code></p>
0305:         * <ul style="color: rgb(0, 0, 0);">
0306:         * <li><code>aboveColumnFooter</code>
0307:         * set to true makes the group footer display above the column footer.</li>
0308:         * <li>
0309:         * <p>&nbsp;<code>extraFooterHtml</code> can be used to
0310:         * append HTML code to the <code>&lt;tr&gt;</code> element that is
0311:         * rendered for the group footer</p>
0312:         * </li>
0313:         * </ul>
0314:         * <h4 style="color: rgb(0, 0, 0);">Table Data</h4>
0315:         * <p><span style="color: rgb(0, 0, 0);">The table data is specified with
0316:         * the <code>sourceData</code> and <code>sourceVar</code> attributes.
0317:         * The <code>sourceData</code> attribute specifies the source of the data
0318:         * that populates the table. The <code>sourceVar</code> attribute
0319:         * specifies the name of the request-scope variable to use for exposing
0320:         * the model data when iterating over table rows. Each table in a JSP page
0321:         * must use a unique <code>sourceVar</code> value. See the <a
0322:         * href="#Lifecycle">Life Cycle section </a>for more information about
0323:         * these attributes.&nbsp; &nbsp; </span><span
0324:         * style="color: rgb(102, 102, 204);"><span
0325:         * style="color: rgb(255, 153, 0);">
0326:         * </span></span><span style="color: rgb(102, 102, 204);"> </span></p>
0327:         * <h3>Facets</h3>
0328:         * <span style="color: rgb(0, 0, 0);">The </span><code
0329:         * style="color: rgb(0, 0, 0);">ui:tableRowGroup</code><span
0330:         * style="color: rgb(0, 0, 0);"> tag supports the following facets,
0331:         * which
0332:         * allow you to customize the
0333:         * layout&nbsp; of the component.</span><br style="color: rgb(0, 0, 0);">
0334:         * <br style="color: rgb(0, 0, 0);">
0335:         * <table style="width: 100%; color: rgb(0, 0, 0);" border="1"
0336:         * cellpadding="2" cellspacing="2">
0337:         * <tbody>
0338:         * <tr>
0339:         * <td style="vertical-align: top;"><span style="font-weight: bold;">Facet
0340:         * Name</span><code><br>
0341:         * </code></td>
0342:         * <td style="vertical-align: top; font-weight: bold;">Table Item
0343:         * Implemented by the Facet<br>
0344:         * </td>
0345:         * </tr>
0346:         * <tr>
0347:         * <td><code>footer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0348:         * <br>
0349:         * </code></td>
0350:         * <td>Footer that applies to the group of rows defined by the <code>ui:tableRowGroup</code>
0351:         * tag.&nbsp; This facet can be used to&nbsp; replace the default footer.<br>
0352:         * </td>
0353:         * </tr>
0354:         * <tr>
0355:         * <td><code>header</code></td>
0356:         * <td>Header that applies to the group of rows defined by the <code>ui:tableRowGroup</code>
0357:         * tag. This facet can be used to replace the default header. </td>
0358:         * </tr>
0359:         * </tbody>
0360:         * </table>
0361:         * <br>
0362:         * <h3 style="color: rgb(0, 0, 0);">Client Side JavaScript
0363:         * Functions</h3>
0364:         * <span style="color: rgb(0, 0, 0);">See the </span><a
0365:         * href="table.html#JavaScript" style="color: rgb(0, 0, 0);"><code>ui:table</code>
0366:         * tag's
0367:         * JavaScript documentation</a><span style="color: rgb(0, 0, 0);">.&nbsp;
0368:         * The same functions are used for the
0369:         * <code>ui:tableRowGroup</code> tag.</span><br>
0370:         * <ul>
0371:         * </ul>
0372:         * <h3>Notes for the <code>ui:tableRowGroup</code> tag</h3>
0373:         * All examples assume that<span style="color: rgb(102, 102, 204);"></span>
0374:         * the <code>ui:table</code> tag is contained within a HTML <code>&lt;form&gt;</code>
0375:         * element so actions can<span style="text-decoration: line-through;"></span><span
0376:         * style="color: rgb(102, 102, 204);"></span> submit form data.
0377:         * For basic table and sort
0378:         * examples,<span style="text-decoration: line-through;"></span>
0379:         * see the <a href="table.html"><code>ui:table</code>
0380:         * tag documentation</a>
0381:         * and <a href="tableColumn.html"><code>ui:tableColumn</code>
0382:         * documentation</a>. <br>
0383:         * <h4><span style="font-weight: bold;"><a name="Lifecycle"></a>Life Cycle</span></h4>
0384:         * <span style="text-decoration: line-through;"></span>The <code>sourceData</code>
0385:         * property of tableRowGroup is invoked at
0386:         * least twice during
0387:         * the JavaServer Faces life cycle. The <code>sourceData</code> is
0388:         * invoked once during
0389:         * one of the Apply Request Values, Process Validations, or Update Model
0390:         * Values phases, and once during the Render Response phase. In order to
0391:         * process the
0392:         * previously displayed children during the Apply Request Values, Process
0393:         * Validations, or Update Model Values phases,
0394:         * the table
0395:         * must use the same DataProvider that was used to render the previous
0396:         * page. For
0397:         * example, suppose that sorting, filtering, and pagination were applied
0398:         * on the previous page, and
0399:         * rows 10-20 of 1000 were currently displayed. You want to update only
0400:         * the currently
0401:         * displayed components, rows 10-20. To do this, you must not update the
0402:         * DataProvider until the Invoke Application phase or Render Response
0403:         * phases, when it is safe to render new
0404:         * data.<br>
0405:         * <p style="color: rgb(0, 0, 0);">Note that if the underlying
0406:         * DataProvider has changed in any way, processing of the previously
0407:         * displayed children might not be possible during the Apply Request
0408:         * Values, Process
0409:         * Validations, or Update Model Values phases. In addition, if the
0410:         * DataProvider is null or empty, no children will be processed and
0411:         * their <code>processDecodes()</code>, <code>processValidators()</code>,
0412:         * and <code>processUpdates()</code> methods will not be invoked. If a
0413:         * component has not been decoded (in the Apply Request Values phase),
0414:         * action events might not be received and component properties such as
0415:         * hyperlink query parameters cannot be retrieved.&nbsp; Also, if a
0416:         * component has not been updated (in the Update Model Values phase),
0417:         * submitted values cannot be retrieved for checkboxes, radio buttons,
0418:         * etc. </p>
0419:         * <span style="color: rgb(0, 0, 0);">When obtaining data is
0420:         * expensive, consider caching the DataProvider. A cached DataProvider
0421:         * persists across requests if the backing bean uses session scope, or if
0422:         * the application uses server-side state saving and the <code>TableRowGroup.setSourceData</code>
0423:         * method is set. Note that a phase listener may be used to initialize the
0424:         * DataProvider during the Invoke Application Phase. However, when the
0425:         * underlying DataProvider has changed in any way, UI guidelines recommend
0426:         * that pagination is reset to the first page. You can use the
0427:         * tableRowGroup component's <code>setFirst()</code> method to set the
0428:         * first row to be displayed.<br>
0429:         * <br>
0430:         * </span>
0431:         * <h3 style="color: rgb(0, 0, 0);"><a name="Examples"></a>Examples</h3>
0432:         * <span style="color: rgb(0, 0, 0);">The following examples use a
0433:         * backing bean called </span><a href="table.html#Example:_TableBean_"
0434:         * style="color: rgb(0, 0, 0);">TableBean</a><span
0435:         * style="color: rgb(0, 0, 0);">,
0436:         * which is shown in the <code>ui:table</code> tag documentation. </span><a
0437:         * href="tableRowGroup.html#UtilityClasses" style="color: rgb(0, 0, 0);">Utility
0438:         * classes</a><span style="color: rgb(0, 0, 0);"> used in the examples are
0439:         * included
0440:         * in this <code>ui:tableRowGroup</code> page, after the examples.&nbsp;
0441:         * Additional examples are shown in the </span><code
0442:         * style="color: rgb(0, 0, 0);"><a href="table.html#Examples">ui:table</a></code><span
0443:         * style="color: rgb(0, 0, 0);">
0444:         * and </span><code style="color: rgb(0, 0, 0);"><a
0445:         * href="tableColumn.html">ui:tableColumn</a></code><span
0446:         * style="color: rgb(0, 0, 0);">
0447:         * documents.</span><br style="color: rgb(0, 0, 0);">
0448:         * <br style="color: rgb(0, 0, 0);">
0449:         * <span style="font-weight: bold; color: rgb(0, 0, 0);">Examples in
0450:         * this file:<br>
0451:         * <br>
0452:         * </span>
0453:         * <div style="margin-left: 40px; color: rgb(0, 0, 0);"><a
0454:         * href="#GroupTable">Example 1: Group Table</a><br>
0455:         * <p><a href="#DynamicTable">Example 2: Dynamic Table</a><br>
0456:         * </p>
0457:         * <p><a href="#DynamicGroupTable">Example 3: Dynamic Group Table</a><br>
0458:         * </p>
0459:         * </div>
0460:         * <span style="font-weight: bold; color: rgb(0, 0, 0);">
0461:         * </span>
0462:         * <p style="font-weight: bold; color: rgb(0, 0, 0);">Supporting
0463:         * files:</p>
0464:         * <div style="margin-left: 40px; color: rgb(0, 0, 0);">
0465:         * <p><a href="table.html#Example:_TableBean_">TableBean
0466:         * backing bean in <code>ui:table</code> documentation<br>
0467:         * </a></p>
0468:         * <p><a href="tableRowGroup.html#UtilityClasses">Utility
0469:         * classes used in the examples</a></p>
0470:         * </div>
0471:         * <h4><a name="GroupTable"></a>Example 1: Group Table<br>
0472:         * </h4>
0473:         * <span style="text-decoration: line-through;"></span><span
0474:         * style="color: rgb(0, 0, 0);">This example shows how to
0475:         * create a group table. A group table contains rows of data that are
0476:         * arranged in discrete sections or groups
0477:         * within the table.&nbsp; In a
0478:         * basic table, each column typically has a header and perhaps a footer.
0479:         * However, in a group table, each group of rows can have its own header
0480:         * and footer. In addition, a group table can display table column footers
0481:         * and
0482:         * an overall table footer below all
0483:         * data groups.&nbsp; The table column footers are specified in <code>ui:tableColumn</code>
0484:         * tags and the overall footer is specified in the <code>ui:table</code>
0485:         * tag. See the <a href="#diagram">diagram </a>of the
0486:         * table areas. </span><br style="color: rgb(0, 0, 0);">
0487:         * <br style="color: rgb(0, 0, 0);">
0488:         * <span style="color: rgb(0, 0, 0);">Additional
0489:         * attributes should be
0490:         * used in the <code>ui:tableColumn</code> tags within each <code>ui:tableRowGroup</code>
0491:         * tag to specify
0492:         * functionality. For
0493:         * example, the <code>selectId</code> and <code>sort</code>&nbsp;
0494:         * attributes allow column
0495:         * headers to sort on all row groups at once.&nbsp; <br>
0496:         * <br>
0497:         * The example uses the backing bean called TableBean for the table data.
0498:         * See the
0499:         * </span><a href="table.html#Example:_TableBean_"
0500:         * style="color: rgb(0, 0, 0);">TableBean
0501:         * backing bean in <code>ui:table</code> documentation</a><span
0502:         * style="color: rgb(0, 0, 0);">.</span><br style="color: rgb(0, 0, 0);">
0503:         * <br style="color: rgb(0, 0, 0);">
0504:         * <span style="color: rgb(0, 0, 0);">Note: UI guidelines recommend
0505:         * that items should not remain selected when they cannot be seen by the
0506:         * user. Using the
0507:         * <code>com.sun.rave.web.ui.event.TableSelectPhaseListener</code> object
0508:         * ensures that rows that are hidden from view are
0509:         * deselected because the phase listener clears the table state after the
0510:         * rendering phase. Although
0511:         * pagination is not used for a group table, the <code>TableSelectPhaseListener</code>
0512:         * object is used in this example in the Select util, which is shown in </span><a
0513:         * href="table.html#Select.java" style="color: rgb(0, 0, 0);">Select.java
0514:         * in the <code>ui:table</code> documentation</a><span
0515:         * style="color: rgb(0, 0, 0);">.&nbsp; Also refer to the JavaDoc
0516:         * for <code>TableSelectPhaseListener</code> for more information.&nbsp; </span><br
0517:         * style="color: rgb(0, 0, 0);">
0518:         * <br>
0519:         * <code>&lt;!-- Group Table --&gt;<br>
0520:         * &lt;ui:table id="table1"<br>
0521:         * &nbsp;&nbsp;&nbsp; clearSortButton="true"<br>
0522:         * &nbsp;&nbsp;&nbsp; deselectMultipleButton="true"<br>
0523:         * &nbsp;&nbsp;&nbsp; selectMultipleButton="true"<br>
0524:         * &nbsp;&nbsp;&nbsp; sortPanelToggleButton="true"<br>
0525:         * &nbsp;&nbsp;&nbsp; footerText="Table Footer"&gt;<br>
0526:         * <br>
0527:         * &nbsp; &lt;!-- Title --&gt;<br>
0528:         * &nbsp; &lt;f:facet name="title"&gt;<br>
0529:         * &nbsp;&nbsp;&nbsp; &lt;ui:staticText text="Group Table"/&gt;<br>
0530:         * &nbsp; &lt;/f:facet&gt;<br>
0531:         * <br>
0532:         * &nbsp; &lt;ui:tableRowGroup id="rowGroup1"<br>
0533:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0534:         * binding="#{TableBean.groupB.tableRowGroup}"<br>
0535:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; footerText="Group Footer"<br>
0536:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; headerText="Group Header"<br>
0537:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0538:         * selected="#{TableBean.groupB.select.selectedState}"<br>
0539:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectMultipleToggleButton="true"<br>
0540:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceData="#{TableBean.groupB.names}"<br>
0541:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceVar="name"<br>
0542:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groupToggleButton="true"&gt;<br>
0543:         * <br>
0544:         * &nbsp;&nbsp;&nbsp; &lt;ui:tableColumn id="col0"<br>
0545:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0546:         * extraHeaderHtml="nowrap='nowrap'"<br>
0547:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0548:         * extraFooterHtml="nowrap='nowrap'"<br>
0549:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0550:         * extraTableFooterHtml="nowrap='nowrap'"<br>
0551:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; footerText="ColFtr"<br>
0552:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectId="select"<br>
0553:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0554:         * sort="#{TableBean.groupB.select.selectedState}"&gt;<br>
0555:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:checkbox id="select"<br>
0556:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0557:         * onClick="setTimeout('initAllRows()', 0)"<br>
0558:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0559:         * selected="#{TableBean.groupB.select.selected}"<br>
0560:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0561:         * selectedValue="#{TableBean.groupB.select.selectedValue}"/&gt;<br>
0562:         * &nbsp;&nbsp;&nbsp; &lt;/ui:tableColumn&gt;<br>
0563:         * &nbsp;&nbsp;&nbsp; &lt;ui:tableColumn id="col1"<br>
0564:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0565:         * extraHeaderHtml="nowrap='nowrap'"<br>
0566:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alignKey="last"<br>
0567:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; footerText="Column Footer"<br>
0568:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; headerText="Last Name"<br>
0569:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowHeader="true"<br>
0570:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort="last"&gt;<br>
0571:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:staticText
0572:         * text="#{name.value.last}"/&gt;<br>
0573:         * &nbsp;&nbsp;&nbsp; &lt;/ui:tableColumn&gt;<br>
0574:         * &nbsp;&nbsp;&nbsp; &lt;ui:tableColumn id="col2"<br>
0575:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alignKey="first"<br>
0576:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; footerText="Column Footer"<br>
0577:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; headerText="First Name"<br>
0578:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort="first"&gt;<br>
0579:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:staticText
0580:         * text="#{name.value.first}"/&gt;<br>
0581:         * &nbsp;&nbsp;&nbsp; &lt;/ui:tableColumn&gt;<br>
0582:         * &nbsp; &lt;/ui:tableRowGroup&gt;<br>
0583:         * <br>
0584:         * &nbsp; &lt;ui:tableRowGroup id="rowGroup2"<br>
0585:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0586:         * binding="#{TableBean.groupC.tableRowGroup}"<br>
0587:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; collapsed="true"<br>
0588:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0589:         * selected="#{TableBean.groupC.select.selectedState}"<br>
0590:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectMultipleToggleButton="true"<br>
0591:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceData="#{TableBean.groupC.names}"<br>
0592:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceVar="name"<br>
0593:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groupToggleButton="true"&gt;<br>
0594:         * <br>
0595:         * &nbsp;&nbsp;&nbsp; &lt;!-- Row group header --&gt;<br>
0596:         * &nbsp;&nbsp;&nbsp; &lt;f:facet name="header"&gt;<br>
0597:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:panelGroup id="groupHeader"&gt;<br>
0598:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:markup tag="span"
0599:         * extraAttributes="class='TblGrpLft'"&gt;<br>
0600:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0601:         * &lt;ui:staticText styleClass="TblGrpTxt" text="Group Header"/&gt;<br>
0602:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ui:markup&gt;<br>
0603:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:markup tag="span"
0604:         * extraAttributes="class='TblGrpRt'"&gt;<br>
0605:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0606:         * &lt;ui:staticText styleClass="TblGrpMsgTxt" text="Right-Aligned
0607:         * Text"/&gt;<br>
0608:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ui:markup&gt;<br>
0609:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ui:panelGroup&gt;<br>
0610:         * &nbsp;&nbsp;&nbsp; &lt;/f:facet&gt;<br>
0611:         * <br>
0612:         * &nbsp;&nbsp;&nbsp; &lt;!-- Row group footer --&gt;<br>
0613:         * &nbsp;&nbsp;&nbsp; &lt;f:facet name="footer"&gt;<br>
0614:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:staticText
0615:         * styleClass="TblGrpFtrRowTxt" text="Group Footer"/&gt;<br>
0616:         * &nbsp;&nbsp;&nbsp; &lt;/f:facet&gt;<br>
0617:         * <br>
0618:         * &nbsp;&nbsp;&nbsp; &lt;ui:tableColumn id="col0"<br>
0619:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0620:         * extraHeaderHtml="nowrap='nowrap'"<br>
0621:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0622:         * extraFooterHtml="nowrap='nowrap'"<br>
0623:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0624:         * extraTableFooterHtml="nowrap='nowrap'"<br>
0625:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; footerText="ColFtr"<br>
0626:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectId="select"<br>
0627:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0628:         * sort="#{TableBean.groupC.select.selectedState}"<br>
0629:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0630:         * tableFooterText="TblColFtr"&gt;<br>
0631:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:checkbox id="select"<br>
0632:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0633:         * onClick="setTimeout('initAllRows()', 0)"<br>
0634:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0635:         * selected="#{TableBean.groupC.select.selected}"<br>
0636:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0637:         * selectedValue="#{TableBean.groupC.select.selectedValue}"/&gt;<br>
0638:         * &nbsp;&nbsp;&nbsp; &lt;/ui:tableColumn&gt;<br>
0639:         * &nbsp;&nbsp;&nbsp; &lt;ui:tableColumn id="col1"<br>
0640:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alignKey="last"<br>
0641:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; footerText="Column Footer"<br>
0642:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowHeader="true"<br>
0643:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort="last"<br>
0644:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tableFooterText="Table
0645:         * Column Footer"&gt;<br>
0646:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:staticText
0647:         * text="#{name.value.last}"/&gt;<br>
0648:         * &nbsp;&nbsp;&nbsp; &lt;/ui:tableColumn&gt;<br>
0649:         * &nbsp;&nbsp;&nbsp; &lt;ui:tableColumn id="col2"<br>
0650:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alignKey="first"<br>
0651:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; footerText="Column Footer"<br>
0652:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort="first"<br>
0653:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tableFooterText="Table
0654:         * Column Footer"&gt;<br>
0655:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ui:staticText
0656:         * text="#{name.value.first}"/&gt;<br>
0657:         * &nbsp;&nbsp;&nbsp; &lt;/ui:tableColumn&gt;<br>
0658:         * &nbsp; &lt;/ui:tableRowGroup&gt;<br>
0659:         * &lt;/ui:table&gt;</code><br>
0660:         * <br>
0661:         * <span style="font-weight: bold;">select.js</span><br>
0662:         * <br>
0663:         * This example shows the contents of the <code>select.js</code><span
0664:         * style="font-weight: bold;"> </span>file used in the example above.<br>
0665:         * <code><br>
0666:         * // Use this function to initialize all rows displayed in the table when
0667:         * the<br>
0668:         * // state of selected components change (i.e., checkboxes or
0669:         * radiobuttons used to<br>
0670:         * // de/select rows of the table). This functionality requires the
0671:         * selectId <br>
0672:         * // property of the tableColumn component to be set.<br>
0673:         * // <br>
0674:         * // Note: Use setTimeout when invoking this function. This will ensure
0675:         * that <br>
0676:         * // checkboxes and radiobutton are selected immediately, instead of
0677:         * waiting for <br>
0678:         * // the onClick event to complete. For example: <br>
0679:         * //<br>
0680:         * // onClick="setTimeout('initAllRows(); disableActions()', 0)"<br>
0681:         * function initAllRows() {<br>
0682:         * &nbsp;&nbsp;&nbsp; // Disable table actions by default.<br>
0683:         * &nbsp;&nbsp;&nbsp; var table = document.getElementById("form1:table1");<br>
0684:         * &nbsp;&nbsp;&nbsp; table.initAllRows();<br>
0685:         * }</code><br>
0686:         * <h4><a name="DynamicTable"></a>Example 2: Dynamic Table<br>
0687:         * </h4>
0688:         * <span style="color: rgb(0, 0, 0);">This example shows how to use
0689:         * the <code>ui:table</code> tag to create a binding to a backing
0690:         * bean to
0691:         * dynamically create a table layout. The dynamic table is created as
0692:         * needed and can be changed each time the page is rendered.&nbsp;&nbsp; </span><br
0693:         * style="color: rgb(0, 0, 0);">
0694:         * <br style="color: rgb(0, 0, 0);">
0695:         * <code style="color: rgb(0, 0, 0);">&lt;ui:table id="table1"
0696:         * binding="#{DynamicTableBean.table}"/&gt;<br>
0697:         * <br>
0698:         * <br>
0699:         * </code><span style="color: rgb(0, 0, 0);">The backing bean,
0700:         * DynamicTableBean, is
0701:         * shown in the following </span><a href="#DynamicTableBean"
0702:         * style="color: rgb(0, 0, 0);"><code>DynamicTableBean.java</code></a><span
0703:         * style="color: rgb(0, 0, 0);"> class. This bean is used only to
0704:         * create the table layout, and shows how to use the tableRowGroup
0705:         * component directly
0706:         * through Java code instead of through the JSP tag&nbsp; </span><code
0707:         * style="color: rgb(0, 0, 0);">ui:tableRowGroup.</code><span
0708:         * style="color: rgb(0, 0, 0);"> The <a href="#Dynamic.java">Dynamic.java</a>
0709:         * utility class provides the functionality for adding properties to the
0710:         * table.&nbsp; The table
0711:         * also uses methods that are
0712:         * defined in the </span><a href="table.html#Example:_TableBean_"
0713:         * style="color: rgb(0, 0, 0);">TableBean
0714:         * shown in the <code>ui:table</code> documentation</a><span
0715:         * style="color: rgb(0, 0, 0);">.</span><br>
0716:         * <h4><code style="color: rgb(102, 102, 204);"><a name="DynamicTableBean"></a><span
0717:         * style="color: rgb(0, 0, 0);"></span></code><span
0718:         * style="color: rgb(0, 0, 0);">DynamicTableBean.java Backing Bean</span><br>
0719:         * </h4>
0720:         * <h4><code style="font-weight: normal;">package table;<br>
0721:         * <br>
0722:         * import com.sun.rave.web.ui.component.Table;<br>
0723:         * import com.sun.rave.web.ui.component.TableRowGroup;<br>
0724:         * <br>
0725:         * import table.util.Dynamic;<br>
0726:         * <br>
0727:         * // Backing bean for dynamic table examples.<br>
0728:         * //<br>
0729:         * // Note: To simplify the example, this bean is used only to create the
0730:         * table <br>
0731:         * // layout. The resulting table will use methods already defined in
0732:         * TableBean.<br>
0733:         * public class DynamicTableBean {<br>
0734:         * &nbsp;&nbsp;&nbsp; private Dynamic dynamic = null; // Dynamic util.<br>
0735:         * &nbsp;&nbsp;&nbsp; private Table table = null; // Table component.<br>
0736:         * <br>
0737:         * &nbsp;&nbsp;&nbsp; // Default constructor.<br>
0738:         * &nbsp;&nbsp;&nbsp; public DynamicTableBean() {<br>
0739:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dynamic = new Dynamic();<br>
0740:         * &nbsp;&nbsp;&nbsp; }<br>
0741:         * <br>
0742:         * &nbsp;&nbsp;&nbsp; // Get Table component.<br>
0743:         * &nbsp;&nbsp;&nbsp; public Table getTable() {<br>
0744:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (table == null) {<br>
0745:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0746:         * Get table row group.<br>
0747:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0748:         * TableRowGroup rowGroup1 = dynamic.getTableRowGroup("rowGroup1",<br>
0749:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0750:         * "#{TableBean.groupB.names}",<br>
0751:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0752:         * "#{TableBean.groupB.select.selectedState}", null);<br>
0753:         * <br>
0754:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0755:         * Set table row group properties.<br>
0756:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0757:         * dynamic.setTableRowGroupChildren(rowGroup1,<br>
0758:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0759:         * "#{TableBean.groupB.select.selectedState}",<br>
0760:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0761:         * "#{TableBean.groupB.select.selected}",<br>
0762:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0763:         * "#{TableBean.groupB.select.selectedValue}",<br>
0764:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0765:         * "#{TableBean.groupB.actions.action}", true);<br>
0766:         * <br>
0767:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0768:         * Get table.<br>
0769:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0770:         * table = dynamic.getTable("table1", "Dynamic Table");<br>
0771:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0772:         * table.getChildren().add(rowGroup1);<br>
0773:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
0774:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return table;<br>
0775:         * &nbsp;&nbsp;&nbsp; }<br>
0776:         * <br>
0777:         * &nbsp;&nbsp;&nbsp; // Set Table component.<br>
0778:         * &nbsp;&nbsp;&nbsp; //<br>
0779:         * &nbsp;&nbsp;&nbsp; // @param table The Table component.<br>
0780:         * &nbsp;&nbsp;&nbsp; public void setTable(Table table) {<br>
0781:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.table = table;<br>
0782:         * &nbsp;&nbsp;&nbsp; }<br>
0783:         * }</code><br>
0784:         * </h4>
0785:         * <code>
0786:         * </code>
0787:         * <h4><a name="DynamicGroupTable"></a>Example 3: Dynamic Group Table<br>
0788:         * </h4>
0789:         * This example shows how to<span style="color: rgb(0, 0, 0);"> use
0790:         * the <code>ui:table</code> tag to create a binding to a backing
0791:         * bean to
0792:         * dynamically create a group table layout. </span><span
0793:         * style="text-decoration: line-through; color: rgb(0, 0, 0);"></span><span
0794:         * style="color: rgb(0, 0, 0);">The dynamic group table is created
0795:         * as
0796:         * needed and can be changed each time the page is rendered.</span><br
0797:         * style="color: rgb(0, 0, 0);">
0798:         * <br style="color: rgb(0, 0, 0);">
0799:         * <code style="color: rgb(0, 0, 0);">&lt;ui:table id="table1"
0800:         * binding="#{DynamicGroupTableBean.table}"/&gt;<br>
0801:         * <br>
0802:         * </code><span style="color: rgb(0, 0, 0);">The backing bean,
0803:         * DynamicGroupTableBean, is
0804:         * shown in the following </span><a href="#DynamicGroupTableBean"
0805:         * style="color: rgb(0, 0, 0);"><code>DynamicGroupTableBean.java</code></a><span
0806:         * style="color: rgb(0, 0, 0);"> class. This bean is used only to
0807:         * create the table layout, and shows how to use the tableRowGroup
0808:         * component directly
0809:         * through Java code instead of through the JSP tag&nbsp; </span><code
0810:         * style="color: rgb(0, 0, 0);">ui:tableRowGroup.</code><span
0811:         * style="color: rgb(0, 0, 0);"> The <code><a
0812:         * href="tableRowGroup.html#Dynamic.java">Dynamic.java</a></code>
0813:         * utility
0814:         * class provides the functionality for adding
0815:         * properties to the table.&nbsp; The table also
0816:         * uses methods that are
0817:         * defined in the </span><a href="table.html#Example:_TableBean_"
0818:         * style="color: rgb(0, 0, 0);">TableBean
0819:         * shown in the <code>ui:table</code> documentation</a><span
0820:         * style="color: rgb(0, 0, 0);">.</span><br>
0821:         * <h4><code style="color: rgb(102, 102, 204);"><a
0822:         * name="DynamicGroupTableBean"></a><span style="color: rgb(0, 0, 0);"></span></code><span
0823:         * style="color: rgb(0, 0, 0);">DynamicGroupTableBean.java Backing Bean</span></h4>
0824:         * <code>package table;<br>
0825:         * <br>
0826:         * import table.util.Dynamic;<br>
0827:         * <br>
0828:         * import com.sun.rave.web.ui.component.StaticText;<br>
0829:         * import com.sun.rave.web.ui.component.Table;<br>
0830:         * import com.sun.rave.web.ui.component.TableRowGroup;<br>
0831:         * <br>
0832:         * // Backing bean for dynamic group table examples.<br>
0833:         * //<br>
0834:         * // Note: To simplify the example, this bean is used only to create the
0835:         * table <br>
0836:         * // layout. The resulting table will use methods already defined in
0837:         * TableBean.<br>
0838:         * public class DynamicGroupTableBean {<br>
0839:         * &nbsp;&nbsp;&nbsp; private Dynamic dynamic = null; // Dynamic util.<br>
0840:         * &nbsp;&nbsp;&nbsp; private Table table = null; // Table component.<br>
0841:         * <br>
0842:         * &nbsp;&nbsp;&nbsp; // Default constructor.<br>
0843:         * &nbsp;&nbsp;&nbsp; public DynamicGroupTableBean() {<br>
0844:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dynamic = new Dynamic();<br>
0845:         * &nbsp;&nbsp;&nbsp; }<br>
0846:         * <br>
0847:         * &nbsp;&nbsp;&nbsp; // Get Table component.<br>
0848:         * &nbsp;&nbsp;&nbsp; public Table getTable() {<br>
0849:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (table == null) {<br>
0850:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0851:         * Get table row group.<br>
0852:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0853:         * TableRowGroup rowGroup1 = dynamic.getTableRowGroup("rowGroup1",<br>
0854:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0855:         * "#{TableBean.groupB.names}",<br>
0856:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0857:         * "#{TableBean.groupB.select.selectedState}",<br>
0858:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0859:         * "Group Header");<br>
0860:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0861:         * TableRowGroup rowGroup2 = dynamic.getTableRowGroup("rowGroup2",<br>
0862:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0863:         * "#{TableBean.groupC.names}",<br>
0864:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0865:         * "#{TableBean.groupC.select.selectedState}",<br>
0866:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0867:         * "Group Header");<br>
0868:         * <br>
0869:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0870:         * Set table row group properties.<br>
0871:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0872:         * dynamic.setTableRowGroupChildren(rowGroup1, <br>
0873:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0874:         * "#{TableBean.groupB.select.selectedState}", <br>
0875:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0876:         * "#{TableBean.groupB.select.selected}",<br>
0877:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0878:         * "#{TableBean.groupB.select.selectedValue}", null, true);<br>
0879:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0880:         * dynamic.setTableRowGroupChildren(rowGroup2, <br>
0881:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0882:         * "#{TableBean.groupC.select.selectedState}", <br>
0883:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0884:         * "#{TableBean.groupC.select.selected}",<br>
0885:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0886:         * "#{TableBean.groupC.select.selectedValue}", null, false);<br>
0887:         * <br>
0888:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0889:         * Set select and row group toggle buttons.<br>
0890:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0891:         * rowGroup1.setSelectMultipleToggleButton(true); <br>
0892:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0893:         * rowGroup2.setSelectMultipleToggleButton(true); <br>
0894:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0895:         * rowGroup1.setGroupToggleButton(true);<br>
0896:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0897:         * rowGroup2.setGroupToggleButton(true);<br>
0898:         * <br>
0899:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0900:         * Get table.<br>
0901:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0902:         * table = dynamic.getTable("table1", null);<br>
0903:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0904:         * table.getChildren().add(rowGroup1);<br>
0905:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0906:         * table.getChildren().add(rowGroup2);<br>
0907:         * <br>
0908:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
0909:         * Add title facet.<br>
0910:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0911:         * StaticText title = new StaticText();<br>
0912:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0913:         * title.setText("Dynamic Group Table");<br>
0914:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0915:         * table.getFacets().put(Table.TITLE_FACET, title);<br>
0916:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
0917:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return table;<br>
0918:         * &nbsp;&nbsp;&nbsp; }<br>
0919:         * <br>
0920:         * &nbsp;&nbsp;&nbsp; // Set Table component. <br>
0921:         * &nbsp;&nbsp;&nbsp; //<br>
0922:         * &nbsp;&nbsp;&nbsp; // @param table The Table component.<br>
0923:         * &nbsp;&nbsp;&nbsp; public void setTable(Table table) {<br>
0924:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.table = table;<br>
0925:         * &nbsp;&nbsp;&nbsp; }<br>
0926:         * }</code><br>
0927:         * <h3 style="color: rgb(0, 0, 0);">faces_config.xml Entry for
0928:         * Managed Beans</h3>
0929:         * The examples are based on managed beans, such as the example
0930:         * below, added to the
0931:         * <code>faces_config.xml</code> file.<br>
0932:         * <span style="color: rgb(255, 153, 0);"><br>
0933:         * </span><code>&lt;!DOCTYPE faces-config PUBLIC <br>
0934:         * &nbsp;&nbsp;&nbsp; '-//Sun Microsystems, Inc.//DTD JavaServer Faces
0935:         * Config 1.0//EN' <br>
0936:         * &nbsp;&nbsp;&nbsp; 'http://java.sun.com/dtd/web-facesconfig_1_1.dtd'&gt;<br>
0937:         * <br>
0938:         * &lt;faces-config&gt;<br>
0939:         * &nbsp;&nbsp;&nbsp; &lt;managed-bean&gt;<br>
0940:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;Backing
0941:         * bean for the group table example&lt;/description&gt;<br>
0942:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0943:         * &lt;managed-bean-name&gt;TableBean&lt;/managed-bean-name&gt;<br>
0944:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0945:         * &lt;managed-bean-class&gt;table.TableBean&lt;/managed-bean-class&gt;<br>
0946:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0947:         * &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br>
0948:         * &nbsp;&nbsp;&nbsp; &lt;/managed-bean&gt;<br>
0949:         * <br>
0950:         * &nbsp;&nbsp;&nbsp; &lt;managed-bean&gt;<br>
0951:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;Backing
0952:         * bean for the dynamic table example&lt;/description&gt;<br>
0953:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0954:         * &lt;managed-bean-name&gt;DynamicTableBean&lt;/managed-bean-name&gt;<br>
0955:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0956:         * &lt;managed-bean-class&gt;table.DynamicTableBean&lt;/managed-bean-class&gt;<br>
0957:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0958:         * &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br>
0959:         * &nbsp;&nbsp;&nbsp; &lt;/managed-bean&gt;<br>
0960:         * <br>
0961:         * &nbsp;&nbsp;&nbsp; &lt;managed-bean&gt;<br>
0962:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;Backing
0963:         * bean for the dynamic group table example&lt;/description&gt;<br>
0964:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0965:         * &lt;managed-bean-name&gt;DynamicGroupTableBean&lt;/managed-bean-name&gt;<br>
0966:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0967:         * &lt;managed-bean-class&gt;table.DynamicGroupTableBean&lt;/managed-bean-class&gt;<br>
0968:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0969:         * &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br>
0970:         * &nbsp;&nbsp;&nbsp; &lt;/managed-bean&gt;<br>
0971:         * &lt;/faces-config&gt;</code><br>
0972:         * <h3><a name="UtilityClasses"></a>Utility Classes used in the examples</h3>
0973:         * The&nbsp; following utility class is used in the group table
0974:         * examples shown in this page.<br>
0975:         * <p><a href="table.html#Group.java"><code></code></a></p>
0976:         * <a href="tableRowGroup.html#Dynamic.java">Dynamic.java</a><br>
0977:         * <br>
0978:         * The following utility classes are shown in the <code>ui:table</code>
0979:         * documentation, and used in the examples for the table
0980:         * tags<code> ui:table</code>, <code>ui:tableRowGroup</code>, and <code>ui:tableColumn.<br>
0981:         * </code><br>
0982:         * <code></code><a href="table.html#Group.java">Group.java
0983:         * </a><br>
0984:         * <a href="table.html#Name.java">Name.java
0985:         * </a><a href="table.html#Group.java"><code></code></a><br>
0986:         * <a href="table.html#Select.java">Select.java
0987:         * </a><br>
0988:         * <h4><a name="Dynamic.java"></a><span style="color: rgb(0, 0, 0);">Dynamic.java
0989:         * Utility Class</span><br>
0990:         * </h4>
0991:         * <code>package table.util;<br>
0992:         * <br>
0993:         * import com.sun.rave.web.ui.component.Checkbox;<br>
0994:         * import com.sun.rave.web.ui.component.Hyperlink;<br>
0995:         * import com.sun.rave.web.ui.component.StaticText;<br>
0996:         * import com.sun.rave.web.ui.component.Table;<br>
0997:         * import com.sun.rave.web.ui.component.TableColumn;<br>
0998:         * import com.sun.rave.web.ui.component.TableRowGroup;<br>
0999:         * <br>
1000:         * import javax.faces.context.FacesContext;<br>
1001:         * import javax.faces.component.UIComponent;<br>
1002:         * import javax.faces.component.UIParameter;<br>
1003:         * import javax.faces.el.ValueBinding;<br>
1004:         * <br>
1005:         * // This class provides functionality for dynamic tables.<br>
1006:         * public class Dynamic {<br>
1007:         * &nbsp;&nbsp;&nbsp; public static final String CHECKBOX_ID = "select";<br>
1008:         * &nbsp;&nbsp;&nbsp; public static final String HYPERLINK_ID = "link";<br>
1009:         * <br>
1010:         * &nbsp;&nbsp;&nbsp; // Default constructor.<br>
1011:         * &nbsp;&nbsp;&nbsp; public Dynamic() {<br>
1012:         * &nbsp;&nbsp;&nbsp; }<br>
1013:         * <br>
1014:         * &nbsp;&nbsp;&nbsp; // Note: When using tags in a JSP page,
1015:         * UIComponentTag automatically creates<br>
1016:         * &nbsp;&nbsp;&nbsp; // a unique id for the component. However, when
1017:         * dynamically creating <br>
1018:         * &nbsp;&nbsp;&nbsp; // components, via a backing bean, the id has not
1019:         * been set. In this <br>
1020:         * &nbsp;&nbsp;&nbsp; // scenario, allowing JSF to create unique Ids may
1021:         * cause problems with<br>
1022:         * &nbsp;&nbsp;&nbsp; // Javascript and components may not be able to
1023:         * maintain state properly. <br>
1024:         * &nbsp;&nbsp;&nbsp; // For example, if a component was assigned "_id6"
1025:         * as an id, that means <br>
1026:         * &nbsp;&nbsp;&nbsp; // there were 5 other components that also have
1027:         * auto-generated ids. Let us <br>
1028:         * &nbsp;&nbsp;&nbsp; // assume one of those components was a complex
1029:         * component that, as part of <br>
1030:         * &nbsp;&nbsp;&nbsp; // its processing, adds an additional non-id'd child
1031:         * before redisplaying the<br>
1032:         * &nbsp;&nbsp;&nbsp; // view. Now, the id of this component will be
1033:         * "_id7" instead of "_id6". <br>
1034:         * &nbsp;&nbsp;&nbsp; // Assigning your own id ensures that conflicts do
1035:         * not occur.<br>
1036:         * <br>
1037:         * &nbsp;&nbsp;&nbsp; // Get Table component. <br>
1038:         * &nbsp;&nbsp;&nbsp; //<br>
1039:         * &nbsp;&nbsp;&nbsp; // @param id The component id.<br>
1040:         * &nbsp;&nbsp;&nbsp; // @param title The table title text.<br>
1041:         * &nbsp;&nbsp;&nbsp; public Table getTable(String id, String title) {<br>
1042:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get table.<br>
1043:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Table table = new Table();<br>
1044:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1045:         * table.setDeselectMultipleButton(true); // Show deselect multiple button.<br>
1046:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1047:         * table.setSelectMultipleButton(true); // Show select multiple button.<br>
1048:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table.setTitle(title); //
1049:         * Set title text.<br>
1050:         * <br>
1051:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return table;<br>
1052:         * &nbsp;&nbsp;&nbsp; }<br>
1053:         * <br>
1054:         * &nbsp;&nbsp;&nbsp; // Get TableRowGroup component with header.<br>
1055:         * &nbsp;&nbsp;&nbsp; //<br>
1056:         * &nbsp;&nbsp;&nbsp; // @param id The component id.<br>
1057:         * &nbsp;&nbsp;&nbsp; // @param sourceData Value binding expression for
1058:         * model data.<br>
1059:         * &nbsp;&nbsp;&nbsp; // @param selected Value binding expression for
1060:         * selected property.<br>
1061:         * &nbsp;&nbsp;&nbsp; // @param header Value binding expression for row
1062:         * group header text.<br>
1063:         * &nbsp;&nbsp;&nbsp; public TableRowGroup getTableRowGroup(String id,
1064:         * String sourceData,<br>
1065:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1066:         * String selected, String header) {<br>
1067:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get table row group.<br>
1068:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TableRowGroup rowGroup = new
1069:         * TableRowGroup();<br>
1070:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowGroup.setId(id); // Set
1071:         * id.<br>
1072:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1073:         * rowGroup.setSourceVar("name"); // Set source var.<br>
1074:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1075:         * rowGroup.setHeaderText(header); // Set header text.<br>
1076:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(rowGroup,
1077:         * "selected", selected); // Set row highlight.<br>
1078:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(rowGroup,
1079:         * "sourceData", sourceData); // Set source data.<br>
1080:         * <br>
1081:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return rowGroup;<br>
1082:         * &nbsp;&nbsp;&nbsp; }<br>
1083:         * <br>
1084:         * &nbsp;&nbsp;&nbsp; // Get TableColumn component.<br>
1085:         * &nbsp;&nbsp;&nbsp; //<br>
1086:         * &nbsp;&nbsp;&nbsp; // @param id The component id.<br>
1087:         * &nbsp;&nbsp;&nbsp; // @param sort Value binding expression for column
1088:         * sort.<br>
1089:         * &nbsp;&nbsp;&nbsp; // @param align The field key for column alignment.<br>
1090:         * &nbsp;&nbsp;&nbsp; // @param header The column header text.<br>
1091:         * &nbsp;&nbsp;&nbsp; // @param selectId The component id used to select
1092:         * table rows.<br>
1093:         * &nbsp;&nbsp;&nbsp; public TableColumn getTableColumn(String id, String
1094:         * sort, String align,<br>
1095:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1096:         * String header, String selectId) {<br>
1097:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get table column.<br>
1098:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TableColumn col = new
1099:         * TableColumn();<br>
1100:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col.setId(id); // Set id.<br>
1101:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col.setSelectId(selectId);
1102:         * // Set id used to select table rows.<br>
1103:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col.setHeaderText(header);
1104:         * // Set header text.<br>
1105:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col.setAlignKey(align); //
1106:         * Set align key.<br>
1107:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(col, "sort",
1108:         * sort); // Set sort.<br>
1109:         * <br>
1110:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return col;<br>
1111:         * &nbsp;&nbsp;&nbsp; }<br>
1112:         * <br>
1113:         * &nbsp;&nbsp;&nbsp; // Get Checkbox component used for select column.<br>
1114:         * &nbsp;&nbsp;&nbsp; //<br>
1115:         * &nbsp;&nbsp;&nbsp; // @param id The component id.<br>
1116:         * &nbsp;&nbsp;&nbsp; // @param selected Value binding expression for
1117:         * selected property.<br>
1118:         * &nbsp;&nbsp;&nbsp; // @param selectedValue Value binding expression for
1119:         * selectedValue property.<br>
1120:         * &nbsp;&nbsp;&nbsp; public Checkbox getCheckbox(String id, String
1121:         * selected, <br>
1122:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1123:         * String selectedValue) {<br>
1124:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get checkbox.<br>
1125:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Checkbox cb = new Checkbox();<br>
1126:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cb.setId(id); // Set id here
1127:         * and set row highlighting below.<br>
1128:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1129:         * cb.setOnClick("setTimeout('initAllRows()', 0)");<br>
1130:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(cb,
1131:         * "selected", selected); // Set selected.<br>
1132:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(cb,
1133:         * "selectedValue", selectedValue); // Set selected value.<br>
1134:         * <br>
1135:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return cb;<br>
1136:         * &nbsp;&nbsp;&nbsp; }<br>
1137:         * <br>
1138:         * &nbsp;&nbsp;&nbsp; // Get Hyperlink component.<br>
1139:         * &nbsp;&nbsp;&nbsp; //<br>
1140:         * &nbsp;&nbsp;&nbsp; // @param id The component id.<br>
1141:         * &nbsp;&nbsp;&nbsp; // @param text Value binding expression for text.<br>
1142:         * &nbsp;&nbsp;&nbsp; // @param action Method binding expression for
1143:         * action.<br>
1144:         * &nbsp;&nbsp;&nbsp; // @param parameter Value binding expression for
1145:         * parameter.<br>
1146:         * &nbsp;&nbsp;&nbsp; public Hyperlink getHyperlink(String id, String
1147:         * text, String action,<br>
1148:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1149:         * String parameter) {<br>
1150:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get hyperlink.<br>
1151:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hyperlink hyperlink = new
1152:         * Hyperlink();<br>
1153:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hyperlink.setId(id); // Set
1154:         * id.<br>
1155:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(hyperlink,
1156:         * "text", text); // Set text.<br>
1157:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setMethodBinding(hyperlink,
1158:         * "action", action); // Set action.<br>
1159:         * <br>
1160:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create paramerter.<br>
1161:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UIParameter param = new
1162:         * UIParameter();<br>
1163:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param.setId(id + "_param");<br>
1164:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param.setName("param");<br>
1165:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(param,
1166:         * "value", parameter); // Set parameter.<br>
1167:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1168:         * hyperlink.getChildren().add(param);<br>
1169:         * <br>
1170:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hyperlink;<br>
1171:         * &nbsp;&nbsp;&nbsp; }<br>
1172:         * <br>
1173:         * &nbsp;&nbsp;&nbsp; // Get StaticText component.<br>
1174:         * &nbsp;&nbsp;&nbsp; //<br>
1175:         * &nbsp;&nbsp;&nbsp; // @param text Value binding expression for text.<br>
1176:         * &nbsp;&nbsp;&nbsp; public StaticText getText(String text) {<br>
1177:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get static text.<br>
1178:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StaticText staticText = new
1179:         * StaticText();<br>
1180:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setValueBinding(staticText,
1181:         * "text", text); // Set text.<br>
1182:         * <br>
1183:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return staticText;<br>
1184:         * &nbsp;&nbsp;&nbsp; }<br>
1185:         * <br>
1186:         * &nbsp;&nbsp;&nbsp; // Set TableRowGroup children.<br>
1187:         * &nbsp;&nbsp;&nbsp; //<br>
1188:         * &nbsp;&nbsp;&nbsp; // @param rowGroup The TableRowGroup component.<br>
1189:         * &nbsp;&nbsp;&nbsp; // @param cbSort Value binding expression for cb
1190:         * sort.<br>
1191:         * &nbsp;&nbsp;&nbsp; // @param cbSelected Value binding expression for cb
1192:         * selected property.<br>
1193:         * &nbsp;&nbsp;&nbsp; // @param cbSelectedValue Value binding expression
1194:         * for cb selectedValue property.<br>
1195:         * &nbsp;&nbsp;&nbsp; // @param action The Method binding expression for
1196:         * hyperlink action.<br>
1197:         * &nbsp;&nbsp;&nbsp; // @param showHeader Flag indicating to display
1198:         * column header text.<br>
1199:         * &nbsp;&nbsp;&nbsp; public void setTableRowGroupChildren(TableRowGroup
1200:         * rowGroup, String cbSort,<br>
1201:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String cbSelected, String
1202:         * cbSelectedValue, String action,<br>
1203:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1204:         * boolean showHeader) {<br>
1205:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // UI guidelines recomend no
1206:         * headers for second row group.<br>
1207:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String header1 = showHeader
1208:         * ? "Last Name" : null;<br>
1209:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String header2 = showHeader
1210:         * ? "First Name" : null;<br>
1211:         * <br>
1212:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get columns.<br>
1213:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TableColumn col1 =
1214:         * getTableColumn(<br>
1215:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1216:         * "col0", cbSort, null, null, CHECKBOX_ID);<br>
1217:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TableColumn col2 =
1218:         * getTableColumn(<br>
1219:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1220:         * "col1", "#{name.value.last}", "last", header1,
1221:         * null);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1222:         * <br>
1223:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TableColumn col3 =
1224:         * getTableColumn(<br>
1225:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1226:         * "col2", "#{name.value.first}", "first", header2, null);<br>
1227:         * <br>
1228:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get column components.<br>
1229:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Checkbox cb =
1230:         * getCheckbox(CHECKBOX_ID, cbSelected, cbSelectedValue);<br>
1231:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StaticText firstName =
1232:         * getText("#{name.value.first}");<br>
1233:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
1234:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // If action was provided,
1235:         * add a hyperlink; otherwise, use static text.<br>
1236:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (action != null) {<br>
1237:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1238:         * Hyperlink lastName = getHyperlink(HYPERLINK_ID, <br>
1239:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1240:         * "#{name.value.last}", action,<br>
1241:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1242:         * "#{name.value.last}");<br>
1243:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1244:         * col2.getChildren().add(lastName);<br>
1245:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>
1246:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1247:         * StaticText lastName = getText("#{name.value.last}");<br>
1248:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1249:         * col2.getChildren().add(lastName);<br>
1250:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
1251:         * <br>
1252:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Add Children.<br>
1253:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col1.getChildren().add(cb);<br>
1254:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1255:         * col3.getChildren().add(firstName);<br>
1256:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1257:         * rowGroup.getChildren().add(col1);<br>
1258:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1259:         * rowGroup.getChildren().add(col2);<br>
1260:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1261:         * rowGroup.getChildren().add(col3);<br>
1262:         * &nbsp;&nbsp;&nbsp; }<br>
1263:         * <br>
1264:         * &nbsp;&nbsp;&nbsp; // Helper method to set value bindings.<br>
1265:         * &nbsp;&nbsp;&nbsp; //<br>
1266:         * &nbsp;&nbsp;&nbsp; // @param component The UIComponent to set a value
1267:         * binding for.<br>
1268:         * &nbsp;&nbsp;&nbsp; // @param name The name of the value binding.<br>
1269:         * &nbsp;&nbsp;&nbsp; // @param value The value of the value binding.<br>
1270:         * &nbsp;&nbsp;&nbsp; protected void setValueBinding(UIComponent
1271:         * component, String name, <br>
1272:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1273:         * String value) {<br>
1274:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (value == null) {<br>
1275:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1276:         * return;<br>
1277:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
1278:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FacesContext context =
1279:         * FacesContext.getCurrentInstance();<br>
1280:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1281:         * component.setValueBinding(name, context.getApplication().<br>
1282:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1283:         * createValueBinding(value));<br>
1284:         * &nbsp;&nbsp;&nbsp; }<br>
1285:         * <br>
1286:         * &nbsp;&nbsp;&nbsp; // Helper method to set method bindings.<br>
1287:         * &nbsp;&nbsp;&nbsp; //<br>
1288:         * &nbsp;&nbsp;&nbsp; // @param component The UIComponent to set a value
1289:         * binding for.<br>
1290:         * &nbsp;&nbsp;&nbsp; // @param name The name of the method binding.<br>
1291:         * &nbsp;&nbsp;&nbsp; // @param action The action of the method binding.<br>
1292:         * &nbsp;&nbsp;&nbsp; protected void setMethodBinding(UIComponent
1293:         * component, String name,<br>
1294:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1295:         * String action) {<br>
1296:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (action == null) {<br>
1297:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1298:         * return;<br>
1299:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
1300:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FacesContext context =
1301:         * FacesContext.getCurrentInstance();<br>
1302:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1303:         * component.getAttributes().put(name, context.getApplication().<br>
1304:         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1305:         * createMethodBinding(action, new Class[0]));<br>
1306:         * &nbsp;&nbsp;&nbsp; }<br>
1307:         * }</code><br>
1308:         * <br>
1309:         * <p>Auto-generated component class.
1310:         * Do <strong>NOT</strong> modify; all changes
1311:         * <strong>will</strong> be lost!</p>
1312:         */
1313:
1314:        public abstract class TableRowGroupBase extends
1315:                javax.faces.component.UIComponentBase {
1316:
1317:            /**
1318:             * <p>Construct a new <code>TableRowGroupBase</code>.</p>
1319:             */
1320:            public TableRowGroupBase() {
1321:                super ();
1322:                setRendererType("com.sun.rave.web.ui.TableRowGroup");
1323:            }
1324:
1325:            /**
1326:             * <p>Return the identifier of the component family to which this
1327:             * component belongs.  This identifier, in conjunction with the value
1328:             * of the <code>rendererType</code> property, may be used to select
1329:             * the appropriate {@link Renderer} for this component instance.</p>
1330:             */
1331:            public String getFamily() {
1332:                return "com.sun.rave.web.ui.TableRowGroup";
1333:            }
1334:
1335:            // aboveColumnFooter
1336:            private boolean aboveColumnFooter = false;
1337:            private boolean aboveColumnFooter_set = false;
1338:
1339:            /**
1340:             * <p>Set the <code>aboveColumnFooter</code> attribute to true to display the group 
1341:             * footer bar above the column footers bar. The default is to display the group 
1342:             * footer below the column footers.</p>
1343:             */
1344:            public boolean isAboveColumnFooter() {
1345:                if (this .aboveColumnFooter_set) {
1346:                    return this .aboveColumnFooter;
1347:                }
1348:                ValueBinding _vb = getValueBinding("aboveColumnFooter");
1349:                if (_vb != null) {
1350:                    Object _result = _vb.getValue(getFacesContext());
1351:                    if (_result == null) {
1352:                        return false;
1353:                    } else {
1354:                        return ((Boolean) _result).booleanValue();
1355:                    }
1356:                }
1357:                return false;
1358:            }
1359:
1360:            /**
1361:             * <p>Set the <code>aboveColumnFooter</code> attribute to true to display the group 
1362:             * footer bar above the column footers bar. The default is to display the group 
1363:             * footer below the column footers.</p>
1364:             * @see #isAboveColumnFooter()
1365:             */
1366:            public void setAboveColumnFooter(boolean aboveColumnFooter) {
1367:                this .aboveColumnFooter = aboveColumnFooter;
1368:                this .aboveColumnFooter_set = true;
1369:            }
1370:
1371:            // aboveColumnHeader
1372:            private boolean aboveColumnHeader = false;
1373:            private boolean aboveColumnHeader_set = false;
1374:
1375:            /**
1376:             * <p>Set the <code>aboveColumnHeader</code> attribute to true to display the group 
1377:             * header bar above the column headers bar. The default is to display the group 
1378:             * header below the column headers.</p>
1379:             */
1380:            public boolean isAboveColumnHeader() {
1381:                if (this .aboveColumnHeader_set) {
1382:                    return this .aboveColumnHeader;
1383:                }
1384:                ValueBinding _vb = getValueBinding("aboveColumnHeader");
1385:                if (_vb != null) {
1386:                    Object _result = _vb.getValue(getFacesContext());
1387:                    if (_result == null) {
1388:                        return false;
1389:                    } else {
1390:                        return ((Boolean) _result).booleanValue();
1391:                    }
1392:                }
1393:                return false;
1394:            }
1395:
1396:            /**
1397:             * <p>Set the <code>aboveColumnHeader</code> attribute to true to display the group 
1398:             * header bar above the column headers bar. The default is to display the group 
1399:             * header below the column headers.</p>
1400:             * @see #isAboveColumnHeader()
1401:             */
1402:            public void setAboveColumnHeader(boolean aboveColumnHeader) {
1403:                this .aboveColumnHeader = aboveColumnHeader;
1404:                this .aboveColumnHeader_set = true;
1405:            }
1406:
1407:            // align
1408:            private String align = null;
1409:
1410:            /**
1411:             * <p>Sets the horizontal alignment (left, right, justify, center) for the cell contents</p>
1412:             */
1413:            public String getAlign() {
1414:                if (this .align != null) {
1415:                    return this .align;
1416:                }
1417:                ValueBinding _vb = getValueBinding("align");
1418:                if (_vb != null) {
1419:                    return (String) _vb.getValue(getFacesContext());
1420:                }
1421:                return null;
1422:            }
1423:
1424:            /**
1425:             * <p>Sets the horizontal alignment (left, right, justify, center) for the cell contents</p>
1426:             * @see #getAlign()
1427:             */
1428:            public void setAlign(String align) {
1429:                this .align = align;
1430:            }
1431:
1432:            // bgColor
1433:            private String bgColor = null;
1434:
1435:            public String getBgColor() {
1436:                if (this .bgColor != null) {
1437:                    return this .bgColor;
1438:                }
1439:                ValueBinding _vb = getValueBinding("bgColor");
1440:                if (_vb != null) {
1441:                    return (String) _vb.getValue(getFacesContext());
1442:                }
1443:                return null;
1444:            }
1445:
1446:            public void setBgColor(String bgColor) {
1447:                this .bgColor = bgColor;
1448:            }
1449:
1450:            // char
1451:            private String _char = null;
1452:
1453:            public String getChar() {
1454:                if (this ._char != null) {
1455:                    return this ._char;
1456:                }
1457:                ValueBinding _vb = getValueBinding("char");
1458:                if (_vb != null) {
1459:                    return (String) _vb.getValue(getFacesContext());
1460:                }
1461:                return null;
1462:            }
1463:
1464:            public void setChar(String _char) {
1465:                this ._char = _char;
1466:            }
1467:
1468:            // charOff
1469:            private String charOff = null;
1470:
1471:            public String getCharOff() {
1472:                if (this .charOff != null) {
1473:                    return this .charOff;
1474:                }
1475:                ValueBinding _vb = getValueBinding("charOff");
1476:                if (_vb != null) {
1477:                    return (String) _vb.getValue(getFacesContext());
1478:                }
1479:                return null;
1480:            }
1481:
1482:            public void setCharOff(String charOff) {
1483:                this .charOff = charOff;
1484:            }
1485:
1486:            // collapsed
1487:            private boolean collapsed = false;
1488:            private boolean collapsed_set = false;
1489:
1490:            /**
1491:             * <p>Use the collapsed attribute to initially render the group as collapsed, so that 
1492:             * the data rows are hidden and only the header row is visible. The default is to 
1493:             * show the group expanded.</p>
1494:             */
1495:            public boolean isCollapsed() {
1496:                if (this .collapsed_set) {
1497:                    return this .collapsed;
1498:                }
1499:                ValueBinding _vb = getValueBinding("collapsed");
1500:                if (_vb != null) {
1501:                    Object _result = _vb.getValue(getFacesContext());
1502:                    if (_result == null) {
1503:                        return false;
1504:                    } else {
1505:                        return ((Boolean) _result).booleanValue();
1506:                    }
1507:                }
1508:                return false;
1509:            }
1510:
1511:            /**
1512:             * <p>Use the collapsed attribute to initially render the group as collapsed, so that 
1513:             * the data rows are hidden and only the header row is visible. The default is to 
1514:             * show the group expanded.</p>
1515:             * @see #isCollapsed()
1516:             */
1517:            public void setCollapsed(boolean collapsed) {
1518:                this .collapsed = collapsed;
1519:                this .collapsed_set = true;
1520:            }
1521:
1522:            // emptyDataMsg
1523:            private String emptyDataMsg = null;
1524:
1525:            /**
1526:             * <p>The text to be displayed when the table does not contain data. The text is 
1527:             * displayed left-aligned in a single row that contains one cell that spans all 
1528:             * columns. The <code>emptyDataMsg</code> text might be something similar to "No 
1529:             * items found." If users can add items to the table, the message might include 
1530:             * instructions, such as "This table contains no files. To add a file to monitor, 
1531:             * click the New button."</p>
1532:             */
1533:            public String getEmptyDataMsg() {
1534:                if (this .emptyDataMsg != null) {
1535:                    return this .emptyDataMsg;
1536:                }
1537:                ValueBinding _vb = getValueBinding("emptyDataMsg");
1538:                if (_vb != null) {
1539:                    return (String) _vb.getValue(getFacesContext());
1540:                }
1541:                return null;
1542:            }
1543:
1544:            /**
1545:             * <p>The text to be displayed when the table does not contain data. The text is 
1546:             * displayed left-aligned in a single row that contains one cell that spans all 
1547:             * columns. The <code>emptyDataMsg</code> text might be something similar to "No 
1548:             * items found." If users can add items to the table, the message might include 
1549:             * instructions, such as "This table contains no files. To add a file to monitor, 
1550:             * click the New button."</p>
1551:             * @see #getEmptyDataMsg()
1552:             */
1553:            public void setEmptyDataMsg(String emptyDataMsg) {
1554:                this .emptyDataMsg = emptyDataMsg;
1555:            }
1556:
1557:            // extraFooterHtml
1558:            private String extraFooterHtml = null;
1559:
1560:            /**
1561:             * <p>Extra HTML code to be appended to the <code>&lt;tr&gt;</code> HTML element that 
1562:             * is rendered for the group footer. Use only code that is valid in an HTML 
1563:             * <code>&lt;td&gt;</code> element. The code you specify is inserted in the HTML 
1564:             * element, and is not checked for validity. For example, you might set this 
1565:             * attribute to <code>"nowrap=`nowrap'"</code>.</p>
1566:             */
1567:            public String getExtraFooterHtml() {
1568:                if (this .extraFooterHtml != null) {
1569:                    return this .extraFooterHtml;
1570:                }
1571:                ValueBinding _vb = getValueBinding("extraFooterHtml");
1572:                if (_vb != null) {
1573:                    return (String) _vb.getValue(getFacesContext());
1574:                }
1575:                return null;
1576:            }
1577:
1578:            /**
1579:             * <p>Extra HTML code to be appended to the <code>&lt;tr&gt;</code> HTML element that 
1580:             * is rendered for the group footer. Use only code that is valid in an HTML 
1581:             * <code>&lt;td&gt;</code> element. The code you specify is inserted in the HTML 
1582:             * element, and is not checked for validity. For example, you might set this 
1583:             * attribute to <code>"nowrap=`nowrap'"</code>.</p>
1584:             * @see #getExtraFooterHtml()
1585:             */
1586:            public void setExtraFooterHtml(String extraFooterHtml) {
1587:                this .extraFooterHtml = extraFooterHtml;
1588:            }
1589:
1590:            // extraHeaderHtml
1591:            private String extraHeaderHtml = null;
1592:
1593:            /**
1594:             * <p>Extra HTML code to be appended to the <code>&lt;tr&gt;</code> HTML element that 
1595:             * is rendered for the group header. Use only code that is valid in an HTML 
1596:             * <code>&lt;td&gt;</code> element. The code you specify is inserted in the HTML 
1597:             * element, and is not checked for validity. For example, you might set this 
1598:             * attribute to <code>"nowrap=`nowrap'"</code>.</p>
1599:             */
1600:            public String getExtraHeaderHtml() {
1601:                if (this .extraHeaderHtml != null) {
1602:                    return this .extraHeaderHtml;
1603:                }
1604:                ValueBinding _vb = getValueBinding("extraHeaderHtml");
1605:                if (_vb != null) {
1606:                    return (String) _vb.getValue(getFacesContext());
1607:                }
1608:                return null;
1609:            }
1610:
1611:            /**
1612:             * <p>Extra HTML code to be appended to the <code>&lt;tr&gt;</code> HTML element that 
1613:             * is rendered for the group header. Use only code that is valid in an HTML 
1614:             * <code>&lt;td&gt;</code> element. The code you specify is inserted in the HTML 
1615:             * element, and is not checked for validity. For example, you might set this 
1616:             * attribute to <code>"nowrap=`nowrap'"</code>.</p>
1617:             * @see #getExtraHeaderHtml()
1618:             */
1619:            public void setExtraHeaderHtml(String extraHeaderHtml) {
1620:                this .extraHeaderHtml = extraHeaderHtml;
1621:            }
1622:
1623:            // first
1624:            private int first = Integer.MIN_VALUE;
1625:            private boolean first_set = false;
1626:
1627:            /**
1628:             * <p>Use the <code>first</code> attribute to specify which row should be the first 
1629:             * to be displayed. This value is used only when the table is paginated. By 
1630:             * default, the first row (0) is displayed first. The value of this property is 
1631:             * maintained as part of the table's state, and the value is updated when the user 
1632:             * clicks on buttons to page through the table.</p>
1633:             */
1634:            public int getFirst() {
1635:                if (this .first_set) {
1636:                    return this .first;
1637:                }
1638:                ValueBinding _vb = getValueBinding("first");
1639:                if (_vb != null) {
1640:                    Object _result = _vb.getValue(getFacesContext());
1641:                    if (_result == null) {
1642:                        return Integer.MIN_VALUE;
1643:                    } else {
1644:                        return ((Integer) _result).intValue();
1645:                    }
1646:                }
1647:                return 0;
1648:            }
1649:
1650:            /**
1651:             * <p>Use the <code>first</code> attribute to specify which row should be the first 
1652:             * to be displayed. This value is used only when the table is paginated. By 
1653:             * default, the first row (0) is displayed first. The value of this property is 
1654:             * maintained as part of the table's state, and the value is updated when the user 
1655:             * clicks on buttons to page through the table.</p>
1656:             * @see #getFirst()
1657:             */
1658:            public void setFirst(int first) {
1659:                this .first = first;
1660:                this .first_set = true;
1661:            }
1662:
1663:            // footerText
1664:            private String footerText = null;
1665:
1666:            /**
1667:             * <p>The text to be displayed in the group footer.</p>
1668:             */
1669:            public String getFooterText() {
1670:                if (this .footerText != null) {
1671:                    return this .footerText;
1672:                }
1673:                ValueBinding _vb = getValueBinding("footerText");
1674:                if (_vb != null) {
1675:                    return (String) _vb.getValue(getFacesContext());
1676:                }
1677:                return null;
1678:            }
1679:
1680:            /**
1681:             * <p>The text to be displayed in the group footer.</p>
1682:             * @see #getFooterText()
1683:             */
1684:            public void setFooterText(String footerText) {
1685:                this .footerText = footerText;
1686:            }
1687:
1688:            // groupToggleButton
1689:            private boolean groupToggleButton = false;
1690:            private boolean groupToggleButton_set = false;
1691:
1692:            /**
1693:             * <p>Use the <code>groupToggleButton</code> attribute to display a button in the 
1694:             * group header to allow users to collapse and expand the group of rows.</p>
1695:             */
1696:            public boolean isGroupToggleButton() {
1697:                if (this .groupToggleButton_set) {
1698:                    return this .groupToggleButton;
1699:                }
1700:                ValueBinding _vb = getValueBinding("groupToggleButton");
1701:                if (_vb != null) {
1702:                    Object _result = _vb.getValue(getFacesContext());
1703:                    if (_result == null) {
1704:                        return false;
1705:                    } else {
1706:                        return ((Boolean) _result).booleanValue();
1707:                    }
1708:                }
1709:                return false;
1710:            }
1711:
1712:            /**
1713:             * <p>Use the <code>groupToggleButton</code> attribute to display a button in the 
1714:             * group header to allow users to collapse and expand the group of rows.</p>
1715:             * @see #isGroupToggleButton()
1716:             */
1717:            public void setGroupToggleButton(boolean groupToggleButton) {
1718:                this .groupToggleButton = groupToggleButton;
1719:                this .groupToggleButton_set = true;
1720:            }
1721:
1722:            // headerText
1723:            private String headerText = null;
1724:
1725:            /**
1726:             * <p>The text to be displayed in the group header.</p>
1727:             */
1728:            public String getHeaderText() {
1729:                if (this .headerText != null) {
1730:                    return this .headerText;
1731:                }
1732:                ValueBinding _vb = getValueBinding("headerText");
1733:                if (_vb != null) {
1734:                    return (String) _vb.getValue(getFacesContext());
1735:                }
1736:                return null;
1737:            }
1738:
1739:            /**
1740:             * <p>The text to be displayed in the group header.</p>
1741:             * @see #getHeaderText()
1742:             */
1743:            public void setHeaderText(String headerText) {
1744:                this .headerText = headerText;
1745:            }
1746:
1747:            // multipleColumnFooters
1748:            private boolean multipleColumnFooters = false;
1749:            private boolean multipleColumnFooters_set = false;
1750:
1751:            /**
1752:             * <p>Use the <code>multipleColumnFooters</code> attribute when the 
1753:             * <code>ui:tableRowGroup</code> contains nested <code>ui:tableColumn</code> tags, 
1754:             * and you want the footers of all the <code>ui:tableColumn</code> tags to be 
1755:             * shown. The default is to show the footers of only the innermost level of nested 
1756:             * <code>ui:tableColumn</code> tags.</p>
1757:             */
1758:            public boolean isMultipleColumnFooters() {
1759:                if (this .multipleColumnFooters_set) {
1760:                    return this .multipleColumnFooters;
1761:                }
1762:                ValueBinding _vb = getValueBinding("multipleColumnFooters");
1763:                if (_vb != null) {
1764:                    Object _result = _vb.getValue(getFacesContext());
1765:                    if (_result == null) {
1766:                        return false;
1767:                    } else {
1768:                        return ((Boolean) _result).booleanValue();
1769:                    }
1770:                }
1771:                return false;
1772:            }
1773:
1774:            /**
1775:             * <p>Use the <code>multipleColumnFooters</code> attribute when the 
1776:             * <code>ui:tableRowGroup</code> contains nested <code>ui:tableColumn</code> tags, 
1777:             * and you want the footers of all the <code>ui:tableColumn</code> tags to be 
1778:             * shown. The default is to show the footers of only the innermost level of nested 
1779:             * <code>ui:tableColumn</code> tags.</p>
1780:             * @see #isMultipleColumnFooters()
1781:             */
1782:            public void setMultipleColumnFooters(boolean multipleColumnFooters) {
1783:                this .multipleColumnFooters = multipleColumnFooters;
1784:                this .multipleColumnFooters_set = true;
1785:            }
1786:
1787:            // multipleTableColumnFooters
1788:            private boolean multipleTableColumnFooters = false;
1789:            private boolean multipleTableColumnFooters_set = false;
1790:
1791:            /**
1792:             * <p>Use the <code>multipleTableColumnFooters</code> attribute when the 
1793:             * <code>ui:tableRowGroup</code> contains nested <code>ui:tableColumn</code> tags, 
1794:             * and you want the table footers of all the <code>ui:tableColumn</code> tags to 
1795:             * be shown. The default is to show the table footers of only the innermost level 
1796:             * of nested <code>ui:tableColumn</code> tags.</p>
1797:             */
1798:            public boolean isMultipleTableColumnFooters() {
1799:                if (this .multipleTableColumnFooters_set) {
1800:                    return this .multipleTableColumnFooters;
1801:                }
1802:                ValueBinding _vb = getValueBinding("multipleTableColumnFooters");
1803:                if (_vb != null) {
1804:                    Object _result = _vb.getValue(getFacesContext());
1805:                    if (_result == null) {
1806:                        return false;
1807:                    } else {
1808:                        return ((Boolean) _result).booleanValue();
1809:                    }
1810:                }
1811:                return false;
1812:            }
1813:
1814:            /**
1815:             * <p>Use the <code>multipleTableColumnFooters</code> attribute when the 
1816:             * <code>ui:tableRowGroup</code> contains nested <code>ui:tableColumn</code> tags, 
1817:             * and you want the table footers of all the <code>ui:tableColumn</code> tags to 
1818:             * be shown. The default is to show the table footers of only the innermost level 
1819:             * of nested <code>ui:tableColumn</code> tags.</p>
1820:             * @see #isMultipleTableColumnFooters()
1821:             */
1822:            public void setMultipleTableColumnFooters(
1823:                    boolean multipleTableColumnFooters) {
1824:                this .multipleTableColumnFooters = multipleTableColumnFooters;
1825:                this .multipleTableColumnFooters_set = true;
1826:            }
1827:
1828:            // onClick
1829:            private String onClick = null;
1830:
1831:            /**
1832:             * <p>Scripting code executed when a mouse click
1833:             *     occurs over this component.</p>
1834:             */
1835:            public String getOnClick() {
1836:                if (this .onClick != null) {
1837:                    return this .onClick;
1838:                }
1839:                ValueBinding _vb = getValueBinding("onClick");
1840:                if (_vb != null) {
1841:                    return (String) _vb.getValue(getFacesContext());
1842:                }
1843:                return null;
1844:            }
1845:
1846:            /**
1847:             * <p>Scripting code executed when a mouse click
1848:             *     occurs over this component.</p>
1849:             * @see #getOnClick()
1850:             */
1851:            public void setOnClick(String onClick) {
1852:                this .onClick = onClick;
1853:            }
1854:
1855:            // onDblClick
1856:            private String onDblClick = null;
1857:
1858:            /**
1859:             * <p>Scripting code executed when a mouse double click
1860:             *     occurs over this component.</p>
1861:             */
1862:            public String getOnDblClick() {
1863:                if (this .onDblClick != null) {
1864:                    return this .onDblClick;
1865:                }
1866:                ValueBinding _vb = getValueBinding("onDblClick");
1867:                if (_vb != null) {
1868:                    return (String) _vb.getValue(getFacesContext());
1869:                }
1870:                return null;
1871:            }
1872:
1873:            /**
1874:             * <p>Scripting code executed when a mouse double click
1875:             *     occurs over this component.</p>
1876:             * @see #getOnDblClick()
1877:             */
1878:            public void setOnDblClick(String onDblClick) {
1879:                this .onDblClick = onDblClick;
1880:            }
1881:
1882:            // onKeyDown
1883:            private String onKeyDown = null;
1884:
1885:            /**
1886:             * <p>Scripting code executed when the user presses down on a key while the
1887:             *     component has focus.</p>
1888:             */
1889:            public String getOnKeyDown() {
1890:                if (this .onKeyDown != null) {
1891:                    return this .onKeyDown;
1892:                }
1893:                ValueBinding _vb = getValueBinding("onKeyDown");
1894:                if (_vb != null) {
1895:                    return (String) _vb.getValue(getFacesContext());
1896:                }
1897:                return null;
1898:            }
1899:
1900:            /**
1901:             * <p>Scripting code executed when the user presses down on a key while the
1902:             *     component has focus.</p>
1903:             * @see #getOnKeyDown()
1904:             */
1905:            public void setOnKeyDown(String onKeyDown) {
1906:                this .onKeyDown = onKeyDown;
1907:            }
1908:
1909:            // onKeyPress
1910:            private String onKeyPress = null;
1911:
1912:            /**
1913:             * <p>Scripting code executed when the user presses and releases a key while
1914:             *     the component has focus.</p>
1915:             */
1916:            public String getOnKeyPress() {
1917:                if (this .onKeyPress != null) {
1918:                    return this .onKeyPress;
1919:                }
1920:                ValueBinding _vb = getValueBinding("onKeyPress");
1921:                if (_vb != null) {
1922:                    return (String) _vb.getValue(getFacesContext());
1923:                }
1924:                return null;
1925:            }
1926:
1927:            /**
1928:             * <p>Scripting code executed when the user presses and releases a key while
1929:             *     the component has focus.</p>
1930:             * @see #getOnKeyPress()
1931:             */
1932:            public void setOnKeyPress(String onKeyPress) {
1933:                this .onKeyPress = onKeyPress;
1934:            }
1935:
1936:            // onKeyUp
1937:            private String onKeyUp = null;
1938:
1939:            /**
1940:             * <p>Scripting code executed when the user releases a key while the
1941:             *     component has focus.</p>
1942:             */
1943:            public String getOnKeyUp() {
1944:                if (this .onKeyUp != null) {
1945:                    return this .onKeyUp;
1946:                }
1947:                ValueBinding _vb = getValueBinding("onKeyUp");
1948:                if (_vb != null) {
1949:                    return (String) _vb.getValue(getFacesContext());
1950:                }
1951:                return null;
1952:            }
1953:
1954:            /**
1955:             * <p>Scripting code executed when the user releases a key while the
1956:             *     component has focus.</p>
1957:             * @see #getOnKeyUp()
1958:             */
1959:            public void setOnKeyUp(String onKeyUp) {
1960:                this .onKeyUp = onKeyUp;
1961:            }
1962:
1963:            // onMouseDown
1964:            private String onMouseDown = null;
1965:
1966:            /**
1967:             * <p>Scripting code executed when the user presses a mouse button while the
1968:             *     mouse pointer is on the component.</p>
1969:             */
1970:            public String getOnMouseDown() {
1971:                if (this .onMouseDown != null) {
1972:                    return this .onMouseDown;
1973:                }
1974:                ValueBinding _vb = getValueBinding("onMouseDown");
1975:                if (_vb != null) {
1976:                    return (String) _vb.getValue(getFacesContext());
1977:                }
1978:                return null;
1979:            }
1980:
1981:            /**
1982:             * <p>Scripting code executed when the user presses a mouse button while the
1983:             *     mouse pointer is on the component.</p>
1984:             * @see #getOnMouseDown()
1985:             */
1986:            public void setOnMouseDown(String onMouseDown) {
1987:                this .onMouseDown = onMouseDown;
1988:            }
1989:
1990:            // onMouseMove
1991:            private String onMouseMove = null;
1992:
1993:            /**
1994:             * <p>Scripting code executed when the user moves the mouse pointer while
1995:             *     over the component.</p>
1996:             */
1997:            public String getOnMouseMove() {
1998:                if (this .onMouseMove != null) {
1999:                    return this .onMouseMove;
2000:                }
2001:                ValueBinding _vb = getValueBinding("onMouseMove");
2002:                if (_vb != null) {
2003:                    return (String) _vb.getValue(getFacesContext());
2004:                }
2005:                return null;
2006:            }
2007:
2008:            /**
2009:             * <p>Scripting code executed when the user moves the mouse pointer while
2010:             *     over the component.</p>
2011:             * @see #getOnMouseMove()
2012:             */
2013:            public void setOnMouseMove(String onMouseMove) {
2014:                this .onMouseMove = onMouseMove;
2015:            }
2016:
2017:            // onMouseOut
2018:            private String onMouseOut = null;
2019:
2020:            /**
2021:             * <p>Scripting code executed when a mouse out movement
2022:             *     occurs over this component.</p>
2023:             */
2024:            public String getOnMouseOut() {
2025:                if (this .onMouseOut != null) {
2026:                    return this .onMouseOut;
2027:                }
2028:                ValueBinding _vb = getValueBinding("onMouseOut");
2029:                if (_vb != null) {
2030:                    return (String) _vb.getValue(getFacesContext());
2031:                }
2032:                return null;
2033:            }
2034:
2035:            /**
2036:             * <p>Scripting code executed when a mouse out movement
2037:             *     occurs over this component.</p>
2038:             * @see #getOnMouseOut()
2039:             */
2040:            public void setOnMouseOut(String onMouseOut) {
2041:                this .onMouseOut = onMouseOut;
2042:            }
2043:
2044:            // onMouseOver
2045:            private String onMouseOver = null;
2046:
2047:            /**
2048:             * <p>Scripting code executed when the user moves the  mouse pointer into
2049:             *     the boundary of this component.</p>
2050:             */
2051:            public String getOnMouseOver() {
2052:                if (this .onMouseOver != null) {
2053:                    return this .onMouseOver;
2054:                }
2055:                ValueBinding _vb = getValueBinding("onMouseOver");
2056:                if (_vb != null) {
2057:                    return (String) _vb.getValue(getFacesContext());
2058:                }
2059:                return null;
2060:            }
2061:
2062:            /**
2063:             * <p>Scripting code executed when the user moves the  mouse pointer into
2064:             *     the boundary of this component.</p>
2065:             * @see #getOnMouseOver()
2066:             */
2067:            public void setOnMouseOver(String onMouseOver) {
2068:                this .onMouseOver = onMouseOver;
2069:            }
2070:
2071:            // onMouseUp
2072:            private String onMouseUp = null;
2073:
2074:            /**
2075:             * <p>Scripting code executed when the user releases a mouse button while
2076:             *     the mouse pointer is on the component.</p>
2077:             */
2078:            public String getOnMouseUp() {
2079:                if (this .onMouseUp != null) {
2080:                    return this .onMouseUp;
2081:                }
2082:                ValueBinding _vb = getValueBinding("onMouseUp");
2083:                if (_vb != null) {
2084:                    return (String) _vb.getValue(getFacesContext());
2085:                }
2086:                return null;
2087:            }
2088:
2089:            /**
2090:             * <p>Scripting code executed when the user releases a mouse button while
2091:             *     the mouse pointer is on the component.</p>
2092:             * @see #getOnMouseUp()
2093:             */
2094:            public void setOnMouseUp(String onMouseUp) {
2095:                this .onMouseUp = onMouseUp;
2096:            }
2097:
2098:            // rows
2099:            private int rows = Integer.MIN_VALUE;
2100:            private boolean rows_set = false;
2101:
2102:            /**
2103:             * <p>The number of rows per page</span> to be displayed for a paginated table. The 
2104:             * default value is 25 per page.</p>
2105:             */
2106:            public int getRows() {
2107:                if (this .rows_set) {
2108:                    return this .rows;
2109:                }
2110:                ValueBinding _vb = getValueBinding("rows");
2111:                if (_vb != null) {
2112:                    Object _result = _vb.getValue(getFacesContext());
2113:                    if (_result == null) {
2114:                        return Integer.MIN_VALUE;
2115:                    } else {
2116:                        return ((Integer) _result).intValue();
2117:                    }
2118:                }
2119:                return 25;
2120:            }
2121:
2122:            /**
2123:             * <p>The number of rows per page</span> to be displayed for a paginated table. The 
2124:             * default value is 25 per page.</p>
2125:             * @see #getRows()
2126:             */
2127:            public void setRows(int rows) {
2128:                this .rows = rows;
2129:                this .rows_set = true;
2130:            }
2131:
2132:            // selectMultipleToggleButton
2133:            private boolean selectMultipleToggleButton = false;
2134:            private boolean selectMultipleToggleButton_set = false;
2135:
2136:            /**
2137:             * <p>Use the <code>selectMultipleToggleButton</code> attribute to display a button 
2138:             * in the group header to allow users to select all rows of the group at once. 
2139:             * The button toggles a column of checkboxes using the id that is given to the 
2140:             * <code>selectId</code> attribute of the <code>ui:tableColumn</code> tag.</p>
2141:             */
2142:            public boolean isSelectMultipleToggleButton() {
2143:                if (this .selectMultipleToggleButton_set) {
2144:                    return this .selectMultipleToggleButton;
2145:                }
2146:                ValueBinding _vb = getValueBinding("selectMultipleToggleButton");
2147:                if (_vb != null) {
2148:                    Object _result = _vb.getValue(getFacesContext());
2149:                    if (_result == null) {
2150:                        return false;
2151:                    } else {
2152:                        return ((Boolean) _result).booleanValue();
2153:                    }
2154:                }
2155:                return false;
2156:            }
2157:
2158:            /**
2159:             * <p>Use the <code>selectMultipleToggleButton</code> attribute to display a button 
2160:             * in the group header to allow users to select all rows of the group at once. 
2161:             * The button toggles a column of checkboxes using the id that is given to the 
2162:             * <code>selectId</code> attribute of the <code>ui:tableColumn</code> tag.</p>
2163:             * @see #isSelectMultipleToggleButton()
2164:             */
2165:            public void setSelectMultipleToggleButton(
2166:                    boolean selectMultipleToggleButton) {
2167:                this .selectMultipleToggleButton = selectMultipleToggleButton;
2168:                this .selectMultipleToggleButton_set = true;
2169:            }
2170:
2171:            // selected
2172:            private boolean selected = false;
2173:            private boolean selected_set = false;
2174:
2175:            /**
2176:             * <p>Flag indicating that the current row is selected. If the value is set to true, 
2177:             * the row will appear highlighted.</p>
2178:             */
2179:            public boolean isSelected() {
2180:                if (this .selected_set) {
2181:                    return this .selected;
2182:                }
2183:                ValueBinding _vb = getValueBinding("selected");
2184:                if (_vb != null) {
2185:                    Object _result = _vb.getValue(getFacesContext());
2186:                    if (_result == null) {
2187:                        return false;
2188:                    } else {
2189:                        return ((Boolean) _result).booleanValue();
2190:                    }
2191:                }
2192:                return false;
2193:            }
2194:
2195:            /**
2196:             * <p>Flag indicating that the current row is selected. If the value is set to true, 
2197:             * the row will appear highlighted.</p>
2198:             * @see #isSelected()
2199:             */
2200:            public void setSelected(boolean selected) {
2201:                this .selected = selected;
2202:                this .selected_set = true;
2203:            }
2204:
2205:            // sourceData
2206:            private Object sourceData = null;
2207:
2208:            /**
2209:             * <p>The <code>sourceData</code> attribute is used to specify the data source to 
2210:             * populate the table. The value of the <code>sourceData</code> attribute must be 
2211:             * a JavaServer Faces EL expression that resolves to a backing bean of type 
2212:             * <code>com.sun.data.provider.TableDataProvider</code>.
2213:             * <br><br>
2214:             * The sourceData property is referenced during multiple phases of the JavaServer 
2215:             * Faces life cycle while iterating over the rows. The TableDataProvider object 
2216:             * that is bound to this attribute should be cached so that the object is not 
2217:             * created more often than needed.</p>
2218:             */
2219:            public Object getSourceData() {
2220:                if (this .sourceData != null) {
2221:                    return this .sourceData;
2222:                }
2223:                ValueBinding _vb = getValueBinding("sourceData");
2224:                if (_vb != null) {
2225:                    return (Object) _vb.getValue(getFacesContext());
2226:                }
2227:                return null;
2228:            }
2229:
2230:            /**
2231:             * <p>The <code>sourceData</code> attribute is used to specify the data source to 
2232:             * populate the table. The value of the <code>sourceData</code> attribute must be 
2233:             * a JavaServer Faces EL expression that resolves to a backing bean of type 
2234:             * <code>com.sun.data.provider.TableDataProvider</code>.
2235:             * <br><br>
2236:             * The sourceData property is referenced during multiple phases of the JavaServer 
2237:             * Faces life cycle while iterating over the rows. The TableDataProvider object 
2238:             * that is bound to this attribute should be cached so that the object is not 
2239:             * created more often than needed.</p>
2240:             * @see #getSourceData()
2241:             */
2242:            public void setSourceData(Object sourceData) {
2243:                this .sourceData = sourceData;
2244:            }
2245:
2246:            // sourceVar
2247:            private String sourceVar = null;
2248:
2249:            /**
2250:             * <p>Use the <code>sourceVar</code> attribute to specify the name of the 
2251:             * request-scope attribute under which model data for the current row will be 
2252:             * exposed when iterating. During iterative processing over the rows of data in 
2253:             * the data provider, the TableDataProvider for the current row is exposed as a 
2254:             * request attribute under the key specified by this property. Note: This 
2255:             * value must be unique for each table in the JSP page.</p>
2256:             */
2257:            public String getSourceVar() {
2258:                if (this .sourceVar != null) {
2259:                    return this .sourceVar;
2260:                }
2261:                ValueBinding _vb = getValueBinding("sourceVar");
2262:                if (_vb != null) {
2263:                    return (String) _vb.getValue(getFacesContext());
2264:                }
2265:                return null;
2266:            }
2267:
2268:            /**
2269:             * <p>Use the <code>sourceVar</code> attribute to specify the name of the 
2270:             * request-scope attribute under which model data for the current row will be 
2271:             * exposed when iterating. During iterative processing over the rows of data in 
2272:             * the data provider, the TableDataProvider for the current row is exposed as a 
2273:             * request attribute under the key specified by this property. Note: This 
2274:             * value must be unique for each table in the JSP page.</p>
2275:             * @see #getSourceVar()
2276:             */
2277:            public void setSourceVar(String sourceVar) {
2278:                this .sourceVar = sourceVar;
2279:            }
2280:
2281:            // styleClasses
2282:            private String styleClasses = null;
2283:
2284:            /**
2285:             * <p>Use the <code>styleClasses</code> attribute to specify a list of CSS style 
2286:             * classes to apply to the rows of the group. You can apply all the styles in the 
2287:             * list to each row by separating the class names with commas. Each row looks the 
2288:             * same when commas are used to delimit the styles. You can apply alternating 
2289:             * styles to individual rows by separating the style class names with spaces. You 
2290:             * can create a pattern of shading alternate rows, for example, to improve 
2291:             * readability of the table. For example, if the list has two elements, the first 
2292:             * style class in the list is applied to the first row, the second class to the 
2293:             * second row, the first class to the third row, the second class to the fourth 
2294:             * row, etc. The tableRowGroup component iterates through the list of styles and 
2295:             * repeats from the beginning until a style is applied to each row.</p>
2296:             */
2297:            public String getStyleClasses() {
2298:                if (this .styleClasses != null) {
2299:                    return this .styleClasses;
2300:                }
2301:                ValueBinding _vb = getValueBinding("styleClasses");
2302:                if (_vb != null) {
2303:                    return (String) _vb.getValue(getFacesContext());
2304:                }
2305:                return null;
2306:            }
2307:
2308:            /**
2309:             * <p>Use the <code>styleClasses</code> attribute to specify a list of CSS style 
2310:             * classes to apply to the rows of the group. You can apply all the styles in the 
2311:             * list to each row by separating the class names with commas. Each row looks the 
2312:             * same when commas are used to delimit the styles. You can apply alternating 
2313:             * styles to individual rows by separating the style class names with spaces. You 
2314:             * can create a pattern of shading alternate rows, for example, to improve 
2315:             * readability of the table. For example, if the list has two elements, the first 
2316:             * style class in the list is applied to the first row, the second class to the 
2317:             * second row, the first class to the third row, the second class to the fourth 
2318:             * row, etc. The tableRowGroup component iterates through the list of styles and 
2319:             * repeats from the beginning until a style is applied to each row.</p>
2320:             * @see #getStyleClasses()
2321:             */
2322:            public void setStyleClasses(String styleClasses) {
2323:                this .styleClasses = styleClasses;
2324:            }
2325:
2326:            // tableDataFilter
2327:            private com.sun.data.provider.TableDataFilter tableDataFilter = null;
2328:
2329:            /**
2330:             * <p>The <code>tableDataFilter</code> attribute is used to define filter critera and 
2331:             * mechanism for filtering the contents of a TableDataProvider. The value of the 
2332:             * <code>tableDataFilter</code> attribute must be a JavaServer Faces EL expression 
2333:             * that resolves to a backing bean of type 
2334:             * <code>com.sun.data.provider.TableDataFilter</code>.</p>
2335:             */
2336:            public com.sun.data.provider.TableDataFilter getTableDataFilter() {
2337:                if (this .tableDataFilter != null) {
2338:                    return this .tableDataFilter;
2339:                }
2340:                ValueBinding _vb = getValueBinding("tableDataFilter");
2341:                if (_vb != null) {
2342:                    return (com.sun.data.provider.TableDataFilter) _vb
2343:                            .getValue(getFacesContext());
2344:                }
2345:                return null;
2346:            }
2347:
2348:            /**
2349:             * <p>The <code>tableDataFilter</code> attribute is used to define filter critera and 
2350:             * mechanism for filtering the contents of a TableDataProvider. The value of the 
2351:             * <code>tableDataFilter</code> attribute must be a JavaServer Faces EL expression 
2352:             * that resolves to a backing bean of type 
2353:             * <code>com.sun.data.provider.TableDataFilter</code>.</p>
2354:             * @see #getTableDataFilter()
2355:             */
2356:            public void setTableDataFilter(
2357:                    com.sun.data.provider.TableDataFilter tableDataFilter) {
2358:                this .tableDataFilter = tableDataFilter;
2359:            }
2360:
2361:            // tableDataSorter
2362:            private com.sun.data.provider.TableDataSorter tableDataSorter = null;
2363:
2364:            /**
2365:             * <p>The <code>tableDataSorter</code> attribute is used to define sort critera and 
2366:             * the mechanism for sorting the contents of a TableDataProvider. The value of the 
2367:             * <code>tableDataSorter</code> attribute must be a JavaServer Faces EL expression 
2368:             * that resolves to a backing bean of type 
2369:             * <code>com.sun.data.provider.TableDataSorter</code>.</p>
2370:             */
2371:            public com.sun.data.provider.TableDataSorter getTableDataSorter() {
2372:                if (this .tableDataSorter != null) {
2373:                    return this .tableDataSorter;
2374:                }
2375:                ValueBinding _vb = getValueBinding("tableDataSorter");
2376:                if (_vb != null) {
2377:                    return (com.sun.data.provider.TableDataSorter) _vb
2378:                            .getValue(getFacesContext());
2379:                }
2380:                return null;
2381:            }
2382:
2383:            /**
2384:             * <p>The <code>tableDataSorter</code> attribute is used to define sort critera and 
2385:             * the mechanism for sorting the contents of a TableDataProvider. The value of the 
2386:             * <code>tableDataSorter</code> attribute must be a JavaServer Faces EL expression 
2387:             * that resolves to a backing bean of type 
2388:             * <code>com.sun.data.provider.TableDataSorter</code>.</p>
2389:             * @see #getTableDataSorter()
2390:             */
2391:            public void setTableDataSorter(
2392:                    com.sun.data.provider.TableDataSorter tableDataSorter) {
2393:                this .tableDataSorter = tableDataSorter;
2394:            }
2395:
2396:            // toolTip
2397:            private String toolTip = null;
2398:
2399:            /**
2400:             * <p>Display the text as a tooltip for this component</p>
2401:             */
2402:            public String getToolTip() {
2403:                if (this .toolTip != null) {
2404:                    return this .toolTip;
2405:                }
2406:                ValueBinding _vb = getValueBinding("toolTip");
2407:                if (_vb != null) {
2408:                    return (String) _vb.getValue(getFacesContext());
2409:                }
2410:                return null;
2411:            }
2412:
2413:            /**
2414:             * <p>Display the text as a tooltip for this component</p>
2415:             * @see #getToolTip()
2416:             */
2417:            public void setToolTip(String toolTip) {
2418:                this .toolTip = toolTip;
2419:            }
2420:
2421:            // valign
2422:            private String valign = null;
2423:
2424:            /**
2425:             * <p>Vertical alignment (top, middle, bottom) for the content of each cell in the column</p>
2426:             */
2427:            public String getValign() {
2428:                if (this .valign != null) {
2429:                    return this .valign;
2430:                }
2431:                ValueBinding _vb = getValueBinding("valign");
2432:                if (_vb != null) {
2433:                    return (String) _vb.getValue(getFacesContext());
2434:                }
2435:                return null;
2436:            }
2437:
2438:            /**
2439:             * <p>Vertical alignment (top, middle, bottom) for the content of each cell in the column</p>
2440:             * @see #getValign()
2441:             */
2442:            public void setValign(String valign) {
2443:                this .valign = valign;
2444:            }
2445:
2446:            // visible
2447:            private boolean visible = false;
2448:            private boolean visible_set = false;
2449:
2450:            /**
2451:             * <p>Use the visible attribute to indicate whether the component should be
2452:             *     viewable by the user in the rendered HTML page. If set to false, the
2453:             *     HTML code for the component is present in the page, but the component
2454:             *     is hidden with style attributes. By default, visible is set to true, so
2455:             *     HTML for the component HTML is included and visible to the user. If the
2456:             *     component is not visible, it can still be processed on subsequent form
2457:             *     submissions because the HTML is present.</p>
2458:             */
2459:            public boolean isVisible() {
2460:                if (this .visible_set) {
2461:                    return this .visible;
2462:                }
2463:                ValueBinding _vb = getValueBinding("visible");
2464:                if (_vb != null) {
2465:                    Object _result = _vb.getValue(getFacesContext());
2466:                    if (_result == null) {
2467:                        return false;
2468:                    } else {
2469:                        return ((Boolean) _result).booleanValue();
2470:                    }
2471:                }
2472:                return true;
2473:            }
2474:
2475:            /**
2476:             * <p>Use the visible attribute to indicate whether the component should be
2477:             *     viewable by the user in the rendered HTML page. If set to false, the
2478:             *     HTML code for the component is present in the page, but the component
2479:             *     is hidden with style attributes. By default, visible is set to true, so
2480:             *     HTML for the component HTML is included and visible to the user. If the
2481:             *     component is not visible, it can still be processed on subsequent form
2482:             *     submissions because the HTML is present.</p>
2483:             * @see #isVisible()
2484:             */
2485:            public void setVisible(boolean visible) {
2486:                this .visible = visible;
2487:                this .visible_set = true;
2488:            }
2489:
2490:            /**
2491:             * <p>Restore the state of this component.</p>
2492:             */
2493:            public void restoreState(FacesContext _context, Object _state) {
2494:                Object _values[] = (Object[]) _state;
2495:                super .restoreState(_context, _values[0]);
2496:                this .aboveColumnFooter = ((Boolean) _values[1]).booleanValue();
2497:                this .aboveColumnFooter_set = ((Boolean) _values[2])
2498:                        .booleanValue();
2499:                this .aboveColumnHeader = ((Boolean) _values[3]).booleanValue();
2500:                this .aboveColumnHeader_set = ((Boolean) _values[4])
2501:                        .booleanValue();
2502:                this .align = (String) _values[5];
2503:                this .bgColor = (String) _values[6];
2504:                this ._char = (String) _values[7];
2505:                this .charOff = (String) _values[8];
2506:                this .collapsed = ((Boolean) _values[9]).booleanValue();
2507:                this .collapsed_set = ((Boolean) _values[10]).booleanValue();
2508:                this .emptyDataMsg = (String) _values[11];
2509:                this .extraFooterHtml = (String) _values[12];
2510:                this .extraHeaderHtml = (String) _values[13];
2511:                this .first = ((Integer) _values[14]).intValue();
2512:                this .first_set = ((Boolean) _values[15]).booleanValue();
2513:                this .footerText = (String) _values[16];
2514:                this .groupToggleButton = ((Boolean) _values[17]).booleanValue();
2515:                this .groupToggleButton_set = ((Boolean) _values[18])
2516:                        .booleanValue();
2517:                this .headerText = (String) _values[19];
2518:                this .multipleColumnFooters = ((Boolean) _values[20])
2519:                        .booleanValue();
2520:                this .multipleColumnFooters_set = ((Boolean) _values[21])
2521:                        .booleanValue();
2522:                this .multipleTableColumnFooters = ((Boolean) _values[22])
2523:                        .booleanValue();
2524:                this .multipleTableColumnFooters_set = ((Boolean) _values[23])
2525:                        .booleanValue();
2526:                this .onClick = (String) _values[24];
2527:                this .onDblClick = (String) _values[25];
2528:                this .onKeyDown = (String) _values[26];
2529:                this .onKeyPress = (String) _values[27];
2530:                this .onKeyUp = (String) _values[28];
2531:                this .onMouseDown = (String) _values[29];
2532:                this .onMouseMove = (String) _values[30];
2533:                this .onMouseOut = (String) _values[31];
2534:                this .onMouseOver = (String) _values[32];
2535:                this .onMouseUp = (String) _values[33];
2536:                this .rows = ((Integer) _values[34]).intValue();
2537:                this .rows_set = ((Boolean) _values[35]).booleanValue();
2538:                this .selectMultipleToggleButton = ((Boolean) _values[36])
2539:                        .booleanValue();
2540:                this .selectMultipleToggleButton_set = ((Boolean) _values[37])
2541:                        .booleanValue();
2542:                this .selected = ((Boolean) _values[38]).booleanValue();
2543:                this .selected_set = ((Boolean) _values[39]).booleanValue();
2544:                this .sourceData = (Object) _values[40];
2545:                this .sourceVar = (String) _values[41];
2546:                this .styleClasses = (String) _values[42];
2547:                this .tableDataFilter = (com.sun.data.provider.TableDataFilter) _values[43];
2548:                this .tableDataSorter = (com.sun.data.provider.TableDataSorter) _values[44];
2549:                this .toolTip = (String) _values[45];
2550:                this .valign = (String) _values[46];
2551:                this .visible = ((Boolean) _values[47]).booleanValue();
2552:                this .visible_set = ((Boolean) _values[48]).booleanValue();
2553:            }
2554:
2555:            /**
2556:             * <p>Save the state of this component.</p>
2557:             */
2558:            public Object saveState(FacesContext _context) {
2559:                Object _values[] = new Object[49];
2560:                _values[0] = super .saveState(_context);
2561:                _values[1] = this .aboveColumnFooter ? Boolean.TRUE
2562:                        : Boolean.FALSE;
2563:                _values[2] = this .aboveColumnFooter_set ? Boolean.TRUE
2564:                        : Boolean.FALSE;
2565:                _values[3] = this .aboveColumnHeader ? Boolean.TRUE
2566:                        : Boolean.FALSE;
2567:                _values[4] = this .aboveColumnHeader_set ? Boolean.TRUE
2568:                        : Boolean.FALSE;
2569:                _values[5] = this .align;
2570:                _values[6] = this .bgColor;
2571:                _values[7] = this ._char;
2572:                _values[8] = this .charOff;
2573:                _values[9] = this .collapsed ? Boolean.TRUE : Boolean.FALSE;
2574:                _values[10] = this .collapsed_set ? Boolean.TRUE : Boolean.FALSE;
2575:                _values[11] = this .emptyDataMsg;
2576:                _values[12] = this .extraFooterHtml;
2577:                _values[13] = this .extraHeaderHtml;
2578:                _values[14] = new Integer(this .first);
2579:                _values[15] = this .first_set ? Boolean.TRUE : Boolean.FALSE;
2580:                _values[16] = this .footerText;
2581:                _values[17] = this .groupToggleButton ? Boolean.TRUE
2582:                        : Boolean.FALSE;
2583:                _values[18] = this .groupToggleButton_set ? Boolean.TRUE
2584:                        : Boolean.FALSE;
2585:                _values[19] = this .headerText;
2586:                _values[20] = this .multipleColumnFooters ? Boolean.TRUE
2587:                        : Boolean.FALSE;
2588:                _values[21] = this .multipleColumnFooters_set ? Boolean.TRUE
2589:                        : Boolean.FALSE;
2590:                _values[22] = this .multipleTableColumnFooters ? Boolean.TRUE
2591:                        : Boolean.FALSE;
2592:                _values[23] = this .multipleTableColumnFooters_set ? Boolean.TRUE
2593:                        : Boolean.FALSE;
2594:                _values[24] = this .onClick;
2595:                _values[25] = this .onDblClick;
2596:                _values[26] = this .onKeyDown;
2597:                _values[27] = this .onKeyPress;
2598:                _values[28] = this .onKeyUp;
2599:                _values[29] = this .onMouseDown;
2600:                _values[30] = this .onMouseMove;
2601:                _values[31] = this .onMouseOut;
2602:                _values[32] = this .onMouseOver;
2603:                _values[33] = this .onMouseUp;
2604:                _values[34] = new Integer(this .rows);
2605:                _values[35] = this .rows_set ? Boolean.TRUE : Boolean.FALSE;
2606:                _values[36] = this .selectMultipleToggleButton ? Boolean.TRUE
2607:                        : Boolean.FALSE;
2608:                _values[37] = this .selectMultipleToggleButton_set ? Boolean.TRUE
2609:                        : Boolean.FALSE;
2610:                _values[38] = this .selected ? Boolean.TRUE : Boolean.FALSE;
2611:                _values[39] = this .selected_set ? Boolean.TRUE : Boolean.FALSE;
2612:                _values[40] = this .sourceData;
2613:                _values[41] = this .sourceVar;
2614:                _values[42] = this .styleClasses;
2615:                _values[43] = this .tableDataFilter;
2616:                _values[44] = this .tableDataSorter;
2617:                _values[45] = this .toolTip;
2618:                _values[46] = this .valign;
2619:                _values[47] = this .visible ? Boolean.TRUE : Boolean.FALSE;
2620:                _values[48] = this.visible_set ? Boolean.TRUE : Boolean.FALSE;
2621:                return _values;
2622:            }
2623:
2624:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.