<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- saved from url=(0014)about:internet -->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_19) on Sun Mar 20 20:56:37 PKT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
FieldColumn (Click Extras API - v2.3.0)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.click.extras.control.FieldColumn class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="FieldColumn (Click Extras API - v2.3.0)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/ExternalLink.html" title="class in org.apache.click.extras.control"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/FormTable.html" title="class in org.apache.click.extras.control"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/click/extras/control/FieldColumn.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="FieldColumn.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.click.extras.control</FONT>
<BR>
Class FieldColumn</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html" title="class or interface in org.apache.click.control">org.apache.click.control.Column</A>
      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.click.extras.control.FieldColumn</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>FieldColumn</B><DT>extends <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html" title="class or interface in org.apache.click.control">Column</A></DL>
</PRE>

<P>
Provides a FieldColumn for rendering table data cells.

 <table cellspacing='10'>
 <tr>
 <td>
 <img align='middle' hspace='2'src='form-table.png' title='FormTable control'/>
 </td>
 </tr>
 </table>
 <p/>

 The FieldColumn class is used to define the table cell data
 <tt>&lt;td&gt;</tt> editors. Each FieldColumn should include a <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control"><CODE>Field</CODE></A>
 instance.
 <p/>
 If the FieldColumn is contained in a standard Table it will render the all
 the table column data cells using its single field instance.
 <p/>
 If the FieldColumn is contained in a FormTable it will both render the column
 data cells and process any posted column data values using the field instance.
 Changes to the tables data objects will be available in the Table rowList
 property.
 <p/>
 Please see the <A HREF="../../../../../org/apache/click/extras/control/FormTable.html" title="class in org.apache.click.extras.control"><CODE>FormTable</CODE></A> Javadoc for usage examples.
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html" title="class or interface in org.apache.click.control"><CODE>Column</CODE></A>, 
<A HREF="../../../../../org/apache/click/extras/control/FormTable.html" title="class in org.apache.click.extras.control"><CODE>FormTable</CODE></A>, 
<A HREF="../../../../../serialized-form.html#org.apache.click.extras.control.FieldColumn">Serialized Form</A></DL>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#field">field</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The columns field to process and render.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.click.control.Column"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html" title="class or interface in org.apache.click.control">Column</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#attributes" title="class or interface in org.apache.click.control">attributes</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#autolink" title="class or interface in org.apache.click.control">autolink</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#dataClass" title="class or interface in org.apache.click.control">dataClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#dataStyles" title="class or interface in org.apache.click.control">dataStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#decorator" title="class or interface in org.apache.click.control">decorator</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#escapeHtml" title="class or interface in org.apache.click.control">escapeHtml</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#format" title="class or interface in org.apache.click.control">format</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#headerClass" title="class or interface in org.apache.click.control">headerClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#headerStyles" title="class or interface in org.apache.click.control">headerStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#headerTitle" title="class or interface in org.apache.click.control">headerTitle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#maxLength" title="class or interface in org.apache.click.control">maxLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#messageFormat" title="class or interface in org.apache.click.control">messageFormat</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#methodCache" title="class or interface in org.apache.click.control">methodCache</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#name" title="class or interface in org.apache.click.control">name</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#renderId" title="class or interface in org.apache.click.control">renderId</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#sortable" title="class or interface in org.apache.click.control">sortable</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#table" title="class or interface in org.apache.click.control">table</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#titleProperty" title="class or interface in org.apache.click.control">titleProperty</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#width" title="class or interface in org.apache.click.control">width</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#FieldColumn()">FieldColumn</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a FieldColumn with no name or field defined.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#FieldColumn(java.lang.String)">FieldColumn</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a table field column with the given property name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#FieldColumn(java.lang.String, org.apache.click.control.Field)">FieldColumn</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
            <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A>&nbsp;field)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a table field column with the given property name and field.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#FieldColumn(java.lang.String, java.lang.String)">FieldColumn</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;title)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a table field column with the given property name and header title.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#FieldColumn(java.lang.String, java.lang.String, org.apache.click.control.Field)">FieldColumn</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;title,
            <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A>&nbsp;field)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a table field column with the given property name, header title
 and field.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#getField()">getField</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the column editor field.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#renderTableDataContent(java.lang.Object, org.apache.click.util.HtmlStringBuffer, org.apache.click.Context, int)">renderTableDataContent</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;row,
                       <A HREF="http://click.apache.org/docs/click-api/org/apache/click/util/HtmlStringBuffer.html" title="class or interface in org.apache.click.util">HtmlStringBuffer</A>&nbsp;buffer,
                       <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Context.html" title="class or interface in org.apache.click">Context</A>&nbsp;context,
                       int&nbsp;rowIndex)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Render the content within the column table data &lt;td&gt; element.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#setField(org.apache.click.control.Field)">setField</A></B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A>&nbsp;field)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the column editor field.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#setProperty(java.lang.Object, java.lang.String, java.lang.Object)">setProperty</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;row,
            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;propertyName,
            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set a row value based on the given property name and value.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.click.control.Column"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html" title="class or interface in org.apache.click.control">Column</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getAttribute(java.lang.String)" title="class or interface in org.apache.click.control">getAttribute</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getAttributes()" title="class or interface in org.apache.click.control">getAttributes</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getAutolink()" title="class or interface in org.apache.click.control">getAutolink</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getComparator()" title="class or interface in org.apache.click.control">getComparator</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getDataClass()" title="class or interface in org.apache.click.control">getDataClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getDataStyle(java.lang.String)" title="class or interface in org.apache.click.control">getDataStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getDataStyles()" title="class or interface in org.apache.click.control">getDataStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getDecorator()" title="class or interface in org.apache.click.control">getDecorator</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getEscapeHtml()" title="class or interface in org.apache.click.control">getEscapeHtml</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getFormat()" title="class or interface in org.apache.click.control">getFormat</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getHeaderClass()" title="class or interface in org.apache.click.control">getHeaderClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getHeaderStyle(java.lang.String)" title="class or interface in org.apache.click.control">getHeaderStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getHeaderStyles()" title="class or interface in org.apache.click.control">getHeaderStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getHeaderTitle()" title="class or interface in org.apache.click.control">getHeaderTitle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getId()" title="class or interface in org.apache.click.control">getId</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getMaxLength()" title="class or interface in org.apache.click.control">getMaxLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getMessageFormat()" title="class or interface in org.apache.click.control">getMessageFormat</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getName()" title="class or interface in org.apache.click.control">getName</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getProperty(java.lang.Object)" title="class or interface in org.apache.click.control">getProperty</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getProperty(java.lang.String, java.lang.Object)" title="class or interface in org.apache.click.control">getProperty</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getRenderId()" title="class or interface in org.apache.click.control">getRenderId</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getSortable()" title="class or interface in org.apache.click.control">getSortable</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getTable()" title="class or interface in org.apache.click.control">getTable</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getTitleProperty()" title="class or interface in org.apache.click.control">getTitleProperty</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#getWidth()" title="class or interface in org.apache.click.control">getWidth</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#hasAttributes()" title="class or interface in org.apache.click.control">hasAttributes</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#hasDataStyles()" title="class or interface in org.apache.click.control">hasDataStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#hasHeaderStyles()" title="class or interface in org.apache.click.control">hasHeaderStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#renderLink(java.lang.Object, org.apache.click.util.HtmlStringBuffer)" title="class or interface in org.apache.click.control">renderLink</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#renderTableData(java.lang.Object, org.apache.click.util.HtmlStringBuffer, org.apache.click.Context, int)" title="class or interface in org.apache.click.control">renderTableData</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#renderTableHeader(org.apache.click.util.HtmlStringBuffer, org.apache.click.Context)" title="class or interface in org.apache.click.control">renderTableHeader</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setAttribute(java.lang.String, java.lang.String)" title="class or interface in org.apache.click.control">setAttribute</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setAutolink(boolean)" title="class or interface in org.apache.click.control">setAutolink</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setComparator(java.util.Comparator)" title="class or interface in org.apache.click.control">setComparator</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setDataClass(java.lang.String)" title="class or interface in org.apache.click.control">setDataClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setDataStyle(java.lang.String, java.lang.String)" title="class or interface in org.apache.click.control">setDataStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setDecorator(org.apache.click.control.Decorator)" title="class or interface in org.apache.click.control">setDecorator</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setEscapeHtml(boolean)" title="class or interface in org.apache.click.control">setEscapeHtml</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setFormat(java.lang.String)" title="class or interface in org.apache.click.control">setFormat</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setHeaderClass(java.lang.String)" title="class or interface in org.apache.click.control">setHeaderClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setHeaderStyle(java.lang.String, java.lang.String)" title="class or interface in org.apache.click.control">setHeaderStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setHeaderTitle(java.lang.String)" title="class or interface in org.apache.click.control">setHeaderTitle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setMaxLength(int)" title="class or interface in org.apache.click.control">setMaxLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setMessageFormat(java.text.MessageFormat)" title="class or interface in org.apache.click.control">setMessageFormat</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setName(java.lang.String)" title="class or interface in org.apache.click.control">setName</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setRenderId(boolean)" title="class or interface in org.apache.click.control">setRenderId</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setSortable(boolean)" title="class or interface in org.apache.click.control">setSortable</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setTable(org.apache.click.control.Table)" title="class or interface in org.apache.click.control">setTable</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setTextAlign(java.lang.String)" title="class or interface in org.apache.click.control">setTextAlign</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setTitleProperty(java.lang.String)" title="class or interface in org.apache.click.control">setTitleProperty</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setVerticalAlign(java.lang.String)" title="class or interface in org.apache.click.control">setVerticalAlign</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#setWidth(java.lang.String)" title="class or interface in org.apache.click.control">setWidth</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="field"><!-- --></A><H3>
field</H3>
<PRE>
protected <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A> <B>field</B></PRE>
<DL>
<DD>The columns field to process and render.
<P>
<DL>
</DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="FieldColumn(java.lang.String)"><!-- --></A><H3>
FieldColumn</H3>
<PRE>
public <B>FieldColumn</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</PRE>
<DL>
<DD>Create a table field column with the given property name. The table
 header title will be set as the capitalized property name.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the property to render</DL>
</DL>
<HR>

<A NAME="FieldColumn(java.lang.String, org.apache.click.control.Field)"><!-- --></A><H3>
FieldColumn</H3>
<PRE>
public <B>FieldColumn</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                   <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A>&nbsp;field)</PRE>
<DL>
<DD>Create a table field column with the given property name and field.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the property to render<DD><CODE>field</CODE> - the field to process and render</DL>
</DL>
<HR>

<A NAME="FieldColumn(java.lang.String, java.lang.String)"><!-- --></A><H3>
FieldColumn</H3>
<PRE>
public <B>FieldColumn</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                   <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;title)</PRE>
<DL>
<DD>Create a table field column with the given property name and header title.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the property to render<DD><CODE>title</CODE> - the column header title to render</DL>
</DL>
<HR>

<A NAME="FieldColumn(java.lang.String, java.lang.String, org.apache.click.control.Field)"><!-- --></A><H3>
FieldColumn</H3>
<PRE>
public <B>FieldColumn</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                   <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;title,
                   <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A>&nbsp;field)</PRE>
<DL>
<DD>Create a table field column with the given property name, header title
 and field.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the property to render<DD><CODE>title</CODE> - the column header title to render<DD><CODE>field</CODE> - the field to process and render</DL>
</DL>
<HR>

<A NAME="FieldColumn()"><!-- --></A><H3>
FieldColumn</H3>
<PRE>
public <B>FieldColumn</B>()</PRE>
<DL>
<DD>Create a FieldColumn with no name or field defined.
 <p/>
 <b>Please note</b> the control's name must be defined before it is valid.
<P>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="getField()"><!-- --></A><H3>
getField</H3>
<PRE>
public <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A> <B>getField</B>()</PRE>
<DL>
<DD>Return the column editor field.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the column editor field</DL>
</DD>
</DL>
<HR>

<A NAME="setField(org.apache.click.control.Field)"><!-- --></A><H3>
setField</H3>
<PRE>
public void <B>setField</B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A>&nbsp;field)</PRE>
<DL>
<DD>Set the column editor field.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>field</CODE> - the column editor field</DL>
</DD>
</DL>
<HR>

<A NAME="setProperty(java.lang.Object, java.lang.String, java.lang.Object)"><!-- --></A><H3>
setProperty</H3>
<PRE>
public void <B>setProperty</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;row,
                        <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;propertyName,
                        <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Set a row value based on the given property name and value. The given row
 can either be a Java Object or a Map instance.
 <p/>
 If the row is a Java Object this method uses OGNL to set the value of the
 row based on the property name. Property names can be specified using a
 path expression e.g: "person.address.city".
 <p/>
 If the row object is a <tt>Map</tt> this method will attempt to set the
 map's key/value pair based on the property name and value. The key
 of the map is matched against the property name. If a key matches the
 property name, the value will be copied to the map.
 <p/>
 <b>Note:</b> you can access the underlying Field using <A HREF="../../../../../org/apache/click/extras/control/FieldColumn.html#getField()"><CODE>getField()</CODE></A>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>row</CODE> - the row object to obtain the property from<DD><CODE>propertyName</CODE> - the name of the property<DD><CODE>value</CODE> - the row object property value
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang">RuntimeException</A></CODE> - if an error occurred obtaining the property</DL>
</DD>
</DL>
<HR>

<A NAME="renderTableDataContent(java.lang.Object, org.apache.click.util.HtmlStringBuffer, org.apache.click.Context, int)"><!-- --></A><H3>
renderTableDataContent</H3>
<PRE>
protected void <B>renderTableDataContent</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;row,
                                      <A HREF="http://click.apache.org/docs/click-api/org/apache/click/util/HtmlStringBuffer.html" title="class or interface in org.apache.click.util">HtmlStringBuffer</A>&nbsp;buffer,
                                      <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Context.html" title="class or interface in org.apache.click">Context</A>&nbsp;context,
                                      int&nbsp;rowIndex)</PRE>
<DL>
<DD>Render the content within the column table data &lt;td&gt; element. If
 the FieldColumn has a decorator defined this will be used instead to
 render the table data cell.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html#renderTableDataContent(java.lang.Object, org.apache.click.util.HtmlStringBuffer, org.apache.click.Context, int)" title="class or interface in org.apache.click.control">renderTableDataContent</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Column.html" title="class or interface in org.apache.click.control">Column</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>row</CODE> - the row object to render<DD><CODE>buffer</CODE> - the string buffer to render to<DD><CODE>context</CODE> - the request context<DD><CODE>rowIndex</CODE> - the index of the current row within the parent table</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/ExternalLink.html" title="class in org.apache.click.extras.control"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/FormTable.html" title="class in org.apache.click.extras.control"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/click/extras/control/FieldColumn.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="FieldColumn.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>

<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:1em;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;').replace(pr_quot,'&quot;');}function PR_textToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;');}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,"'").replace(pr_quotEnt,'"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'="',PR_attribToHtml(node.value),'"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES='                ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,"'"],[PR_STRING,/^"(?:[^\\"]|\\[\s\S])*(?:"|$)/,null,'"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,"'"],[PR_ATTRIB_VALUE,/^"[^"]*(?:"|$)/,null,'"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^["\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&&currentDecoration){openDecoration=currentDecoration;html.push('<span class="',openDecoration,'">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1&nbsp;').replace(/\r\n?|\n/g,'&nbsp;<br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script></BODY>
</HTML>
