blob: 62fe446a6463a00fec521cd6bb7d731d80045956 [file] [log] [blame]
<!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:07 PKT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
ContainerUtils (Click Framework API - v2.3.0)
</TITLE>
<META NAME="keywords" CONTENT="org.apache.click.util.ContainerUtils class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="ContainerUtils (Click Framework 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/util/ClickUtils.html" title="class in org.apache.click.util"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/click/util/ErrorPage.html" title="class in org.apache.click.util"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?org/apache/click/util/ContainerUtils.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ContainerUtils.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;FIELD&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;FIELD&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.util</FONT>
<BR>
Class ContainerUtils</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 "><B>org.apache.click.util.ContainerUtils</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>ContainerUtils</B><DT>extends <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></DL>
</PRE>
<P>
Provides Container access and copy utilities.
<P>
<P>
<HR>
<P>
<!-- ======== 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/util/ContainerUtils.html#ContainerUtils()">ContainerUtils</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#copyContainerToObject(org.apache.click.control.Container, java.lang.Object)">copyContainerToObject</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<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;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Populate the given object attributes from the Containers field values.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#copyContainerToObject(org.apache.click.control.Container, java.lang.Object, java.util.List)">copyContainerToObject</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<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;object,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;&nbsp;fieldList)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Populate the given object attributes from the Containers field values.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#copyObjectToContainer(java.lang.Object, org.apache.click.control.Container)">copyObjectToContainer</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;object,
<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Populate the given Container field values from the object attributes.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#copyObjectToContainer(java.lang.Object, org.apache.click.control.Container, java.util.List)">copyObjectToContainer</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;object,
<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;&nbsp;fieldList)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Populate the given Container field values from the object attributes.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#findControlByName(org.apache.click.control.Container, java.lang.String)">findControlByName</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<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;Find and return the first control with a matching name in the specified
container.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../org/apache/click/control/Form.html" title="class in org.apache.click.control">Form</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#findForm(org.apache.click.Control)">findForm</A></B>(<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;control)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find and return the specified controls parent Form or null
if no Form is present.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Button.html" title="class in org.apache.click.control">Button</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#getButtons(org.apache.click.control.Container)">getButtons</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the list of Buttons for the given Container, recursively including
any Fields contained in child containers.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#getErrorFields(org.apache.click.control.Container)">getErrorFields</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a list of container fields which are not valid, not hidden and not
disabled.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#getFieldMap(org.apache.click.control.Container)">getFieldMap</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a map of all Fields for the given Container, recursively including
any Fields contained in child containers.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#getFields(org.apache.click.control.Container)">getFields</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the list of Fields for the given Container, recursively including
any Fields contained in child containers.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#getFieldsAndLabels(org.apache.click.control.Container)">getFieldsAndLabels</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the list of Fields for the given Container, recursively including
any Fields contained in child containers.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#getHiddenFields(org.apache.click.control.Container)">getHiddenFields</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the list of hidden Fields for the given Container, recursively including
any Fields contained in child containers.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#getInputFields(org.apache.click.control.Container)">getInputFields</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the list of input Fields (TextField, Select, Radio, Checkbox etc).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#insert(org.apache.click.control.Container, org.apache.click.Control, int, java.util.Map)">insert</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;control,
int&nbsp;index,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&gt;&nbsp;controlMap)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add the given control to the container at the specified index, and return
the added instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#remove(org.apache.click.control.Container, org.apache.click.Control, java.util.Map)">remove</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;control,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&gt;&nbsp;controlMap)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove the given control from the container, returning <tt>true</tt> if
the control was found in the container and removed, or <tt>false</tt> if
the control was not found.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/click/util/ContainerUtils.html#replace(org.apache.click.control.Container, org.apache.click.Control, org.apache.click.Control, int, java.util.Map)">replace</A></B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;currentControl,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;newControl,
int&nbsp;controlIndex,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&gt;&nbsp;controlMap)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>this method was used for stateful pages, which have been deprecated</I></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>
<!-- ========= 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="ContainerUtils()"><!-- --></A><H3>
ContainerUtils</H3>
<PRE>
public <B>ContainerUtils</B>()</PRE>
<DL>
</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="copyContainerToObject(org.apache.click.control.Container, java.lang.Object, java.util.List)"><!-- --></A><H3>
copyContainerToObject</H3>
<PRE>
public static void <B>copyContainerToObject</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<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;object,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;&nbsp;fieldList)</PRE>
<DL>
<DD>Populate the given object attributes from the Containers field values.
<p/>
If a Field and object attribute matches, the object attribute is set to
the Object returned from the method
<A HREF="../../../../org/apache/click/control/Field.html#getValueObject()"><CODE>Field.getValueObject()</CODE></A>. If an object
attribute is a primitive, the Object returned from
<A HREF="../../../../org/apache/click/control/Field.html#getValueObject()"><CODE>Field.getValueObject()</CODE></A> will be converted
into the specific primitive e.g. Integer will become int and Boolean will
become boolean.
<p/>
The fieldList specifies which fields to copy to the object. This allows
one to include or exclude certain Container fields before populating the
object.
<p/>
The following example shows how to exclude disabled fields from
populating a customer object:
<pre class="prettyprint">
public void onInit() {
List formFields = new ArrayList();
for(Iterator it = form.getFieldList().iterator(); it.hasNext(); ) {
Field field = (Field) formFields.next();
// Exclude disabled fields
if (!field.isDisabled()) {
formFields.add(field);
}
}
Customer customer = new Customer();
ContainerUtils.copyContainerToObject(form, customer, formFields);
}
</pre>
The specified Object can either be a POJO (plain old java object) or
a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A>. If a POJO is specified, its attributes are
populated from matching container fields. If a map is specified, its
key/value pairs are populated from matching container fields.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the fieldList Container<DD><CODE>object</CODE> - the object to populate with field values<DD><CODE>fieldList</CODE> - the list of fields to obtain values from
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if container, object or fieldList is
null</DL>
</DD>
</DL>
<HR>
<A NAME="copyContainerToObject(org.apache.click.control.Container, java.lang.Object)"><!-- --></A><H3>
copyContainerToObject</H3>
<PRE>
public static void <B>copyContainerToObject</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<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;object)</PRE>
<DL>
<DD>Populate the given object attributes from the Containers field values.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the Container to obtain field values from<DD><CODE>object</CODE> - the object to populate with field values<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/click/util/ContainerUtils.html#copyContainerToObject(org.apache.click.control.Container, java.lang.Object, java.util.List)"><CODE>copyContainerToObject(org.apache.click.control.Container, java.lang.Object, java.util.List)</CODE></A></DL>
</DD>
</DL>
<HR>
<A NAME="copyObjectToContainer(java.lang.Object, org.apache.click.control.Container, java.util.List)"><!-- --></A><H3>
copyObjectToContainer</H3>
<PRE>
public static void <B>copyObjectToContainer</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;object,
<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt;&nbsp;fieldList)</PRE>
<DL>
<DD>Populate the given Container field values from the object attributes.
<p/>
If a Field and object attribute matches, the Field value is set to the
object attribute using the method
<A HREF="../../../../org/apache/click/control/Field.html#setValueObject(java.lang.Object)"><CODE>Field.setValueObject(java.lang.Object)</CODE></A>. If
an object attribute is a primitive it is first converted to its proper
wrapper class e.g. int will become Integer and boolean will become
Boolean.
<p/>
The fieldList specifies which fields to populate from the object. This
allows one to exclude or include specific fields.
<p/>
The specified Object can either be a POJO (plain old java object) or
a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A>. If a POJO is specified, its attributes are
copied to matching container fields. If a map is specified, its key/value
pairs are copied to matching container fields.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - the object to obtain attribute values from<DD><CODE>container</CODE> - the Container to populate<DD><CODE>fieldList</CODE> - the list of fields to populate from the object
attributes</DL>
</DD>
</DL>
<HR>
<A NAME="copyObjectToContainer(java.lang.Object, org.apache.click.control.Container)"><!-- --></A><H3>
copyObjectToContainer</H3>
<PRE>
public static void <B>copyObjectToContainer</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;object,
<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Populate the given Container field values from the object attributes.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - the object to obtain attribute values from<DD><CODE>container</CODE> - the Container to populate<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/click/util/ContainerUtils.html#copyObjectToContainer(java.lang.Object, org.apache.click.control.Container, java.util.List)"><CODE>copyObjectToContainer(java.lang.Object, org.apache.click.control.Container, java.util.List)</CODE></A></DL>
</DD>
</DL>
<HR>
<A NAME="findControlByName(org.apache.click.control.Container, java.lang.String)"><!-- --></A><H3>
findControlByName</H3>
<PRE>
public static <A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A> <B>findControlByName</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<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>Find and return the first control with a matching name in the specified
container.
<p/>
If no matching control is found in the specified container, child
containers will be recursively scanned for a match.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container that is searched for a control with a
matching name<DD><CODE>name</CODE> - the name of the control to find
<DT><B>Returns:</B><DD>the control which name matched the given name</DL>
</DD>
</DL>
<HR>
<A NAME="findForm(org.apache.click.Control)"><!-- --></A><H3>
findForm</H3>
<PRE>
public static <A HREF="../../../../org/apache/click/control/Form.html" title="class in org.apache.click.control">Form</A> <B>findForm</B>(<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;control)</PRE>
<DL>
<DD>Find and return the specified controls parent Form or null
if no Form is present.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>control</CODE> - the control to check for Form
<DT><B>Returns:</B><DD>the controls parent Form or null if no parent is a Form</DL>
</DD>
</DL>
<HR>
<A NAME="getButtons(org.apache.click.control.Container)"><!-- --></A><H3>
getButtons</H3>
<PRE>
public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Button.html" title="class in org.apache.click.control">Button</A>&gt; <B>getButtons</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Return the list of Buttons for the given Container, recursively including
any Fields contained in child containers.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to obtain the buttons from
<DT><B>Returns:</B><DD>the list of contained buttons</DL>
</DD>
</DL>
<HR>
<A NAME="getErrorFields(org.apache.click.control.Container)"><!-- --></A><H3>
getErrorFields</H3>
<PRE>
public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt; <B>getErrorFields</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Return a list of container fields which are not valid, not hidden and not
disabled.
<p/>
The list of returned fields will exclude any <tt>Button</tt> fields.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to obtain the invalid fields from
<DT><B>Returns:</B><DD>list of container fields which are not valid, not hidden and not
disabled</DL>
</DD>
</DL>
<HR>
<A NAME="getFieldMap(org.apache.click.control.Container)"><!-- --></A><H3>
getFieldMap</H3>
<PRE>
public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt; <B>getFieldMap</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Return a map of all Fields for the given Container, recursively including
any Fields contained in child containers.
<p/>
The map's key / value pair will consist of the control name and instance.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to obtain the fields from
<DT><B>Returns:</B><DD>the map of contained fields</DL>
</DD>
</DL>
<HR>
<A NAME="getFields(org.apache.click.control.Container)"><!-- --></A><H3>
getFields</H3>
<PRE>
public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt; <B>getFields</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Return the list of Fields for the given Container, recursively including
any Fields contained in child containers.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to obtain the fields from
<DT><B>Returns:</B><DD>the list of contained fields</DL>
</DD>
</DL>
<HR>
<A NAME="getFieldsAndLabels(org.apache.click.control.Container)"><!-- --></A><H3>
getFieldsAndLabels</H3>
<PRE>
public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt; <B>getFieldsAndLabels</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Return the list of Fields for the given Container, recursively including
any Fields contained in child containers. The list of returned fields
will exclude any <tt>Button</tt> and <tt>FieldSet</tt> fields.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to obtain the fields from
<DT><B>Returns:</B><DD>the list of contained fields</DL>
</DD>
</DL>
<HR>
<A NAME="getHiddenFields(org.apache.click.control.Container)"><!-- --></A><H3>
getHiddenFields</H3>
<PRE>
public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt; <B>getHiddenFields</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Return the list of hidden Fields for the given Container, recursively including
any Fields contained in child containers. The list of returned fields
will exclude any <tt>Button</tt>, <tt>FieldSet</tt> and <tt>Label</tt>
fields.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to obtain the fields from
<DT><B>Returns:</B><DD>the list of contained fields</DL>
</DD>
</DL>
<HR>
<A NAME="getInputFields(org.apache.click.control.Container)"><!-- --></A><H3>
getInputFields</H3>
<PRE>
public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="../../../../org/apache/click/control/Field.html" title="class in org.apache.click.control">Field</A>&gt; <B>getInputFields</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container)</PRE>
<DL>
<DD>Return the list of input Fields (TextField, Select, Radio, Checkbox etc).
for the given Container, recursively including any Fields contained in
child containers. The list of returned fields will exclude any
<tt>Button</tt>, <tt>FieldSet</tt> and <tt>Label</tt> fields.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to obtain the fields from
<DT><B>Returns:</B><DD>the list of contained fields</DL>
</DD>
</DL>
<HR>
<A NAME="insert(org.apache.click.control.Container, org.apache.click.Control, int, java.util.Map)"><!-- --></A><H3>
insert</H3>
<PRE>
public static <A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A> <B>insert</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;control,
int&nbsp;index,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&gt;&nbsp;controlMap)</PRE>
<DL>
<DD>Add the given control to the container at the specified index, and return
the added instance.
<p/>
<b>Please note</b>: an exception is raised if the container contains a
control with the same name as the given control. It is the responsibility
of the caller to replace existing controls.
<p/>
<b>Also note</b> if the specified control already has a parent assigned,
it will automatically be removed from that parent and inserted as a child
of the container instead.
<p/>
This method is useful for developers needing to implement the
<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control"><CODE>Container</CODE></A> interface but cannot for one
reason or another extend from <A HREF="../../../../org/apache/click/control/AbstractContainer.html" title="class in org.apache.click.control"><CODE>AbstractContainer</CODE></A>.
For example if the Container already extends from an existing <tt>Control</tt>
such as a <tt>Field</tt>, it won't be possible to extend
<tt>AbstractContainer</tt> as well. In such scenarios instead of
reimplementing <A HREF="../../../../org/apache/click/control/Container.html#insert(org.apache.click.Control, int)"><CODE>insert</CODE></A>,
one can delegate to this method.
<p/>
For example, a custom Container that extends <tt>Field</tt> and
implements <tt>Container</tt> could implement the <tt>insert</tt> method
as follows:
<pre class="prettyprint">
public class MyContainer extends Field implements Container {
public Control insert(Control control, int index) {
return ContainerUtils.insert(this, control, index, getControlMap());
}
...
} </pre>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to insert the given control into<DD><CODE>control</CODE> - the control to add to the container<DD><CODE>index</CODE> - the index at which the control is to be inserted<DD><CODE>controlMap</CODE> - the container's map of controls keyed on control name
<DT><B>Returns:</B><DD>the control that was added to the container
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the control is null or if the control
and container is the same instance
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if index is out of range
<tt>(index &lt; 0 || index &gt; container.getControls().size())</tt></DL>
</DD>
</DL>
<HR>
<A NAME="replace(org.apache.click.control.Container, org.apache.click.Control, org.apache.click.Control, int, java.util.Map)"><!-- --></A><H3>
replace</H3>
<PRE>
public static <A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A> <B>replace</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;currentControl,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;newControl,
int&nbsp;controlIndex,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&gt;&nbsp;controlMap)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>this method was used for stateful pages, which have been deprecated</I>
<P>
<DD>Replace the current control in the container at the specified index, and
return the newly added control.
<p/>
<b>Please note</b> if the new control already has a parent assigned,
it will automatically be removed from that parent and inserted as a child
of the container instead.
<p/>
This method is useful for developers needing to implement the
<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control"><CODE>Container</CODE></A> interface but cannot for one
reason or another extend from <A HREF="../../../../org/apache/click/control/AbstractContainer.html" title="class in org.apache.click.control"><CODE>AbstractContainer</CODE></A>.
For example if the Container already extends from an existing <tt>Control</tt>
such as a <tt>Field</tt>, it won't be possible to extend
<tt>AbstractContainer</tt> as well. In such scenarios instead of
reimplementing <A HREF="../../../../org/apache/click/control/Container.html#replace(org.apache.click.Control, org.apache.click.Control)"><CODE>replace</CODE></A>,
one can delegate to this method.
<p/>
For example, a custom Container that extends <tt>Field</tt> and
implements <tt>Container</tt> could implement the <tt>replace</tt> method
as follows:
<pre class="prettyprint">
public class MyContainer extends Field implements Container {
public Control replace(Control currentControl, Control newControl) {
int controlIndex = getControls().indexOf(currentControl);
return ContainerUtils.replace(this, currentControl, newControl,
controlIndex, getControlMap());
}
...
} </pre>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to insert the new control into<DD><CODE>currentControl</CODE> - the control currently contained in the container<DD><CODE>newControl</CODE> - the control to replace the current control contained in
the container<DD><CODE>controlIndex</CODE> - the index of the current control in the container<DD><CODE>controlMap</CODE> - the container's map of controls keyed on control name
<DT><B>Returns:</B><DD>the new control that replaced the current control
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the currentControl or newControl is
null
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if the controlIndex = -1</DL>
</DD>
</DL>
<HR>
<A NAME="remove(org.apache.click.control.Container, org.apache.click.Control, java.util.Map)"><!-- --></A><H3>
remove</H3>
<PRE>
public static boolean <B>remove</B>(<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>&nbsp;container,
<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&nbsp;control,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;<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>,<A HREF="../../../../org/apache/click/Control.html" title="interface in org.apache.click">Control</A>&gt;&nbsp;controlMap)</PRE>
<DL>
<DD>Remove the given control from the container, returning <tt>true</tt> if
the control was found in the container and removed, or <tt>false</tt> if
the control was not found.
<p/>
This method is useful for developers needing to implement the
<A HREF="../../../../org/apache/click/control/Container.html" title="interface in org.apache.click.control"><CODE>Container</CODE></A> interface but cannot for one
reason or another extend from <A HREF="../../../../org/apache/click/control/AbstractContainer.html" title="class in org.apache.click.control"><CODE>AbstractContainer</CODE></A>.
For example if the Container already extends from an existing <tt>Control</tt>
such as a <tt>Field</tt>, it won't be possible to extend
<tt>AbstractContainer</tt> as well. In such scenarios instead of
reimplementing <A HREF="../../../../org/apache/click/control/Container.html#remove(org.apache.click.Control)"><CODE>remove</CODE></A>,
one can delegate to this method.
<p/>
For example, a custom Container that extends <tt>Field</tt> and
implements <tt>Container</tt> could implement the <tt>remove</tt> method
as follows:
<pre class="prettyprint">
public class MyContainer extends Field implements Container {
public boolean remove (Control control) {
return ContainerUtils.remove(this, control, getControlMap());
}
...
} </pre>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>container</CODE> - the container to remove the given control from<DD><CODE>control</CODE> - the control to remove from the container<DD><CODE>controlMap</CODE> - the container's map of controls keyed on control name
<DT><B>Returns:</B><DD>true if the control was removed from the container
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the control is null</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/util/ClickUtils.html" title="class in org.apache.click.util"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/click/util/ErrorPage.html" title="class in org.apache.click.util"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?org/apache/click/util/ContainerUtils.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ContainerUtils.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;FIELD&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;FIELD&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>