001 
002 /*
003  *  JScripter Standard 1.0 - To Script In Java
004  *  Copyright (C) 2008-2011  J.J.Liu<jianjunliu@126.com> <http://www.jscripter.org>
005  *  
006  *  This program is free software: you can redistribute it and/or modify
007  *  it under the terms of the GNU Affero General Public License as published by
008  *  the Free Software Foundation, either version 3 of the License, or
009  *  (at your option) any later version.
010  *  
011  *  This program is distributed in the hope that it will be useful,
012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014  *  GNU Affero General Public License for more details.
015  *  
016  *  You should have received a copy of the GNU Affero General Public License
017  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
018  */
019 
020 package js.user;
021 
022 import js.*;
023 import js.core.*;
024 
025 /**
026  * <p>An <b>opaque</b> class representing JavaScript client-side objects of the global 
027  * {@link JsClient#HTMLTableElement} class.</p>
028  * <p>This class represents a table 
029  * in an HTML page, or a {@link JsHTMLElement} object created with the HTML 
030  * <tt>&lt;table&gt;</tt> tag.</p>
031  * <p>This class defines a number of convenience properties and methods for querying and 
032  * modifying various sections of the table. These methods and properties make it easier to 
033  * work with tables, but their functionality can also be duplicated with core DOM methods.</p>
034  *
035  * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
036  *
037  * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
038  * generated into the target codes. Re-compilers must exit with error on the operations of
039  * accessing that kind of class objects.
040  * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
041  * and <tt>instanceof</tt> to it always <tt>true</tt>.
042  */
043 public class JsHTMLTableElement extends JsClient.HTMLTableElement.Prototype
044 {
045     /**
046      * <p>An <b>internal</b> class containing membership data for its enclosing
047      * opaque class.</p>
048      * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
049      * class members.</p>
050      *
051      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
052      * 
053      * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
054      */
055     protected static abstract class Members extends JsClient.HTMLTableElement.Prototype.Members
056     {
057         /**
058          * <p>An <b>internal</b> static field defining a member ID of the field name and
059          * used internally to define a member of the same name.</p>
060          * @since 1.0
061          * @see JsHTMLTableElement#caption
062          * @see JsHTMLTableElement.Member#caption
063          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
064          */
065         public final static Mid caption     = id("caption"    );
066         /**
067          * <p>An <b>internal</b> static field defining a member ID of the field name and
068          * used internally to define a member of the same name.</p>
069          * @since 1.0
070          * @see JsHTMLTableElement#rows
071          * @see JsHTMLTableElement.Member#rows
072          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
073          */
074         public final static Mid rows        = id("rows"       );
075         /**
076          * <p>An <b>internal</b> static field defining a member ID of the field name and
077          * used internally to define a member of the same name.</p>
078          * @since 1.0
079          * @see JsHTMLTableElement#tBodies
080          * @see JsHTMLTableElement.Member#tBodies
081          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
082          */
083         public final static Mid tBodies     = id("tBodies"    );
084         /**
085          * <p>An <b>internal</b> static field defining a member ID of the field name and
086          * used internally to define a member of the same name.</p>
087          * @since 1.0
088          * @see JsHTMLTableElement#tFoot
089          * @see JsHTMLTableElement.Member#tFoot
090          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
091          */
092         public final static Mid tFoot       = id("tFoot"      );
093         /**
094          * <p>An <b>internal</b> static field defining a member ID of the field name and
095          * used internally to define a member of the same name.</p>
096          * @since 1.0
097          * @see JsHTMLTableElement#tHead
098          * @see JsHTMLTableElement.Member#tHead
099          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
100          */
101         public final static Mid tHead       = id("tHead"      );
102         /**
103          * <p>An <b>internal</b> static field defining a member ID of the field name and
104          * used internally to define a member of the same name.</p>
105          * @since 1.0
106          * @see JsHTMLTableElement#align
107          * @see JsHTMLTableElement.Member#align
108          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
109          */
110         public final static Mid align       = id("align"      );
111         /**
112          * <p>An <b>internal</b> static field defining a member ID of the field name and
113          * used internally to define a member of the same name.</p>
114          * @since 1.0
115          * @see JsHTMLTableElement#bgColor
116          * @see JsHTMLTableElement.Member#bgColor
117          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
118          */
119         public final static Mid bgColor     = id("bgColor"    );
120         /**
121          * <p>An <b>internal</b> static field defining a member ID of the field name and
122          * used internally to define a member of the same name.</p>
123          * @since 1.0
124          * @see JsHTMLTableElement#border
125          * @see JsHTMLTableElement.Member#border
126          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
127          */
128         public final static Mid border      = id("border"     );
129         /**
130          * <p>An <b>internal</b> static field defining a member ID of the field name and
131          * used internally to define a member of the same name.</p>
132          * @since 1.0
133          * @see JsHTMLTableElement#cellPadding
134          * @see JsHTMLTableElement.Member#cellPadding
135          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
136          */
137         public final static Mid cellPadding = id("cellPadding");
138         /**
139          * <p>An <b>internal</b> static field defining a member ID of the field name and
140          * used internally to define a member of the same name.</p>
141          * @since 1.0
142          * @see JsHTMLTableElement#cellSpacing
143          * @see JsHTMLTableElement.Member#cellSpacing
144          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
145          */
146         public final static Mid cellSpacing = id("cellSpacing");
147         /**
148          * <p>An <b>internal</b> static field defining a member ID of the field name and
149          * used internally to define a member of the same name.</p>
150          * @since 1.0
151          * @see JsHTMLTableElement#frame
152          * @see JsHTMLTableElement.Member#frame
153          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
154          */
155         public final static Mid frame       = id("frame"      );
156         /**
157          * <p>An <b>internal</b> static field defining a member ID of the field name and
158          * used internally to define a member of the same name.</p>
159          * @since 1.0
160          * @see JsHTMLTableElement#rules
161          * @see JsHTMLTableElement.Member#rules
162          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
163          */
164         public final static Mid rules       = id("rules"      );
165         /**
166          * <p>An <b>internal</b> static field defining a member ID of the field name and
167          * used internally to define a member of the same name.</p>
168          * @since 1.0
169          * @see JsHTMLTableElement#summary
170          * @see JsHTMLTableElement.Member#summary
171          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
172          */
173         public final static Mid summary     = id("summary"    );
174         /**
175          * <p>An <b>internal</b> static field defining a member ID of the field name and
176          * used internally to define a member of the same name.</p>
177          * @since 1.0
178          * @see JsHTMLTableElement#width
179          * @see JsHTMLTableElement.Member#width
180          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
181          */
182         public final static Mid width       = id("width"      );
183     }
184 
185     /**
186      * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
187      * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
188      * This class and the subclasses of this class are used to declare either <b>opaque</b> 
189      * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
190      * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
191      * constructors are used to define the fields inside <b>opaque</b> classes. Under 
192      * either circumstance, the field names must be exactly same as the member names, as 
193      * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
194      * based on the field names.</p>
195      *
196      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
197      * 
198      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
199      * in the target codes. Re-compilers must exit with error on operations accessing that kind 
200      * of class objects.
201      * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
202      * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
203      * <pre>q.m</pre>
204      * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
205      * resolved from the instance of the enclosing member. Re-compilers must resolve an 
206      * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
207      * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
208      * <pre>m</pre>
209      * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
210      * error on the access to <b>opaque</b> fields declared by this class under any other 
211      * circumstances.
212      */
213     public static class Member extends JsClient.HTMLTableElement.Prototype.Member
214     {
215         /**
216          * <p>Internally constructs a member based on a qualifying member.</p>
217          * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
218          * or <b>internal</b> classes or class members.</p>
219          * <p>Note that, this constructor is <b>internal</b> but its declaring class is
220          * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
221          * declared in the declaring class of this constructor itself or its subclasses. 
222          * Under this circumstance, the field names must be exactly same as the member 
223          * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
224          * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
225          * to their names appending to the name resolved from the specified qualifying 
226          * member with a dot in between.</p>
227          * @param q A qualifying member
228          * @param mid The ID of the member to construct
229          * @since 1.0
230          * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
231          */
232         public Member(JsObject.Member q, Mid mid) {
233             super(q, mid);
234         }
235         /**
236          * <p>Internally constructs a member without a qualifying member.</p>
237          * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
238          * or <b>internal</b> classes or class members.</p>
239          * <p>Note that, this constructor is <b>internal</b> but its declaring class is
240          * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
241          * declared in <b>opaque</b> types other than the declaring class of this constructor 
242          * itself and its subclasses. Under this circumstance, the field names must be
243          * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
244          * types are generally resolved by re-compilers directly to identifiers of their names.</p>
245          * @param mid The ID of the member to construct
246          * @since 1.0
247          * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
248          */
249         public Member(Mid mid) {
250             super(mid);
251         }
252         @Override
253         /**
254          * <p>Evaluates the property, represented by the current member instance, of the
255          * argument object.</p>
256          * @param o The argument object
257          * @return The value of the current member based on the object argument.
258          * @since 1.0
259          * @javascript Re-compilers must convert the instance invocation of this method into
260          * the JavaScript expression: 
261          * <pre>o.m</pre>
262          * where <tt>m</tt> is the identifier name resolved from the current member
263          * instance of the invocation.
264          */
265         public JsHTMLTableElement with(ObjectLike o) {
266             return new JsHTMLTableElement(super.with(o));
267         }
268 
269         /**
270          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
271          * name of this field, qualified by the current member instance of the field, and 
272          * to access the property of the name on an object.</p>
273          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
274          * object is a reference to a {@link JsHTMLTableCaptionElement} element representing 
275          * the <tt>&lt;caption&gt;</tt> element for the table, or <tt>null</tt> if there 
276          * is none.</p>
277          * <p>JavaScript throws a {@link JsDOMException} object with the {@link JsDOMException#code} 
278          * property of the value {@link JsDOMException#HIERARCHY_REQUEST_ERR} if the element 
279          * is not an instance of {@link JsClient#HTMLTableCaptionElement} when setting the 
280          * property. See {@link Js#err(Object)} for JS Simulation.</p>
281          * @since 1.0
282          * @javascript Re-compilers must resolve the member of this instance field to the
283          * identifier of the field name appending to the identifier resolved from its 
284          * qualifying member with a dot in between.
285          */
286         public final JsHTMLElement.Member caption = new JsHTMLElement.Member(this, Members.caption);
287         /**
288          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
289          * name of this field, qualified by the current member instance of the field, and 
290          * to access the property of the name on an object.</p>
291          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
292          * object is a read-only reference to a collection of {@link JsHTMLTableRowElement} 
293          * elements of the current table section, which represent all the rows in the 
294          * table including all rows defined within <tt>&lt;thead&gt;</tt>, <tt>&lt;tfoot&gt;</tt>, 
295          * and <tt>&lt;tbody&gt;</tt> tags.</p>
296          * @since 1.0
297          * @javascript Re-compilers must resolve the member of this instance field to the
298          * identifier of the field name appending to the identifier resolved from its 
299          * qualifying member with a dot in between.
300          */
301         public final JsHTMLCollection.Member<JsHTMLTableRowElement> rows = new JsHTMLCollection.Member<JsHTMLTableRowElement>(this, Members.rows);
302         /**
303          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
304          * name of this field, qualified by the current member instance of the field, and 
305          * to access the property of the name on an object.</p>
306          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
307          * object is a read-only reference to a collection of {@link JsHTMLTableSectionElement} 
308          * elements that represent <tt>&lt;tbody&gt;</tt> elements in the table.</p>
309          * @since 1.0
310          * @javascript Re-compilers must resolve the member of this instance field to the
311          * identifier of the field name appending to the identifier resolved from its 
312          * qualifying member with a dot in between.
313          */
314         public final JsHTMLCollection.Member<JsHTMLTableSectionElement> tBodies = new JsHTMLCollection.Member<JsHTMLTableSectionElement>(this, Members.tBodies);
315         /**
316          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
317          * name of this field, qualified by the current member instance of the field, and 
318          * to access the property of the name on an object.</p>
319          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
320          * object is a reference to a {@link JsHTMLTableSectionElement} element representing 
321          * the <tt>&lt;tfoot&gt;</tt> element for the table, or <tt>null</tt> if there 
322          * is none.</p>
323          * <p>JavaScript throws a {@link JsDOMException} object with the {@link JsDOMException#code} 
324          * property of the value {@link JsDOMException#HIERARCHY_REQUEST_ERR} if the element 
325          * is not an instance of {@link JsClient#HTMLTableSectionElement} when setting the 
326          * property. See {@link Js#err(Object)} for JS Simulation.</p>
327          * @since 1.0
328          * @javascript Re-compilers must resolve the member of this instance field to the
329          * identifier of the field name appending to the identifier resolved from its 
330          * qualifying member with a dot in between.
331          */
332         public final JsHTMLTableSectionElement.Member tFoot = new JsHTMLTableSectionElement.Member(this, Members.tFoot);
333         /**
334          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
335          * name of this field, qualified by the current member instance of the field, and 
336          * to access the property of the name on an object.</p>
337          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
338          * object is a reference to a {@link JsHTMLTableSectionElement} element representing 
339          * the <tt>&lt;thead&gt;</tt> element for the table, or <tt>null</tt> if there 
340          * is none.</p>
341          * <p>JavaScript throws a {@link JsDOMException} object with the {@link JsDOMException#code} 
342          * property of the value {@link JsDOMException#HIERARCHY_REQUEST_ERR} if the element 
343          * is not an instance of {@link JsClient#HTMLTableSectionElement} when setting the 
344          * property. See {@link Js#err(Object)} for JS Simulation.</p>
345          * @since 1.0
346          * @javascript Re-compilers must resolve the member of this instance field to the
347          * identifier of the field name appending to the identifier resolved from its 
348          * qualifying member with a dot in between.
349          */
350         public final JsHTMLTableSectionElement.Member tHead = new JsHTMLTableSectionElement.Member(this, Members.tHead);
351         /**
352          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
353          * name of this field, qualified by the current member instance of the field, and 
354          * to access the property of the name on an object.</p>
355          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
356          * object refers to a string specifying the horizontal alignment of the elements 
357          * of the table with respect to the surrounding context. Possible values 
358          * are:
359          * <ul>
360          * <li><tt>"left"</tt>: text lines are rendered flush left.</li>
361          * <li><tt>"center"</tt>: text lines are centered.</li>
362          * <li><tt>"right"</tt>: text lines are rendered flush right.</li>
363          * <li><tt>"justify"</tt>: text lines are justified to both margins.</li>
364          * </ul>
365          * The default value of this attribute depends on the base text direction. 
366          * For left to right text, the default is "left", while for right to left text, 
367          * it is "right".</p>
368          * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
369          * @since 1.0
370          * @javascript Re-compilers must resolve the member of this instance field to the
371          * identifier of the field name appending to the identifier resolved from its 
372          * qualifying member with a dot in between.
373          */
374         public final Value.String.Member align       = new Value.String.Member(this, Members.align      );
375         /**
376          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
377          * name of this field, qualified by the current member instance of the field, and 
378          * to access the property of the name on an object.</p>
379          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
380          * object refers to a string specifying the background color for the table cells.</p>
381          * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
382          * @since 1.0
383          * @javascript Re-compilers must resolve the member of this instance field to the
384          * identifier of the field name appending to the identifier resolved from its 
385          * qualifying member with a dot in between.
386          */
387         public final Value.String.Member bgColor     = new Value.String.Member(this, Members.bgColor    );
388         /**
389          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
390          * name of this field, qualified by the current member instance of the field, and 
391          * to access the property of the name on an object.</p>
392          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
393          * object refers to a string specifying the width of borders around this table 
394          * in pixels.</p>
395          * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
396          * @since 1.0
397          * @javascript Re-compilers must resolve the member of this instance field to the
398          * identifier of the field name appending to the identifier resolved from its 
399          * qualifying member with a dot in between.
400          */
401         public final Value.String.Member border      = new Value.String.Member(this, Members.border     );
402         /**
403          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
404          * name of this field, qualified by the current member instance of the field, and 
405          * to access the property of the name on an object.</p>
406          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
407          * object refers to a string specifying the horizontal and vertical space 
408          * between cell content and cell borders of the table.</p>
409          * @since 1.0
410          * @javascript Re-compilers must resolve the member of this instance field to the
411          * identifier of the field name appending to the identifier resolved from its 
412          * qualifying member with a dot in between.
413          */
414         public final Value.String.Member cellPadding = new Value.String.Member(this, Members.cellPadding);
415         /**
416          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
417          * name of this field, qualified by the current member instance of the field, and 
418          * to access the property of the name on an object.</p>
419          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
420          * object refers to a string specifying the horizontal and vertical separation 
421          * between cells of the table.</p>
422          * @since 1.0
423          * @javascript Re-compilers must resolve the member of this instance field to the
424          * identifier of the field name appending to the identifier resolved from its 
425          * qualifying member with a dot in between.
426          */
427         public final Value.String.Member cellSpacing = new Value.String.Member(this, Members.cellSpacing);
428         /**
429          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
430          * name of this field, qualified by the current member instance of the field, and 
431          * to access the property of the name on an object.</p>
432          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
433          * object refers to a string specifying which sides of the {@link #border} 
434          * surrounding a table will be visible. Possible values are:
435          * <ul>
436          * <li><tt>"void"</tt>: No sides. This is the default value.</li>
437          * <li><tt>"above"</tt>: The top side only.</li>
438          * <li><tt>"below"</tt>: The bottom side only.</li>
439          * <li><tt>"hsides"</tt>: The top and bottom sides only.</li>
440          * <li><tt>"vsides"</tt>: The right and left sides only.</li>
441          * <li><tt>"lhs"</tt>: The left-hand side only.</li>
442          * <li><tt>"rhs"</tt>: The right-hand side only.</li>
443          * <li><tt>"box"</tt>: All four sides.</li>
444          * <li><tt>"border"</tt>: All four sides.</li>
445          * </ul>
446          * </p>
447          * @since 1.0
448          * @javascript Re-compilers must resolve the member of this instance field to the
449          * identifier of the field name appending to the identifier resolved from its 
450          * qualifying member with a dot in between.
451          */
452         public final Value.String.Member frame       = new Value.String.Member(this, Members.frame      );
453         /**
454          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
455          * name of this field, qualified by the current member instance of the field, and 
456          * to access the property of the name on an object.</p>
457          * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
458          * object refers to a string specifying which rules will appear between cells 
459          * within the table. The rendering of rules is browser dependent. Possible 
460          * values are:
461          * <ul>
462          * <li><tt>"none"</tt>: No rules. This is the default value.</li>
463          * <li><tt>"groups"</tt>: Rules appear between row groups and column groups only.</li>
464          * <li><tt>"rows"</tt>: Rules appear between rows only.</li>
465          * <li><tt>"cols"</tt>: Rules appear between columns only.</li>
466          * <li><tt>"all"</tt>: Rules appear between all rows and columns.</li>
467          * </ul>
468          * </p>
469          * @since 1.0
470          * @javascript Re-compilers must resolve the member of this instance field to the
471          * identifier of the field name appending to the identifier resolved from its 
472          * qualifying member with a dot in between.
473          */
474         public final Value.String.Member rules       = new Value.String.Member(this, Members.rules      );
475         /**
476          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
477          * name of this field, qualified by the current member instance of the field, and 
478          * to access the property of the name on an object.</p>
479          * <p>The property, identified by this member, of a {@link JsHTMLTableCellElement} 
480          * object refers to a string specifying the summary description about the purpose 
481          * or structure of table.</p>
482          * @since 1.0
483          * @javascript Re-compilers must resolve the member of this instance field to the
484          * identifier of the field name appending to the identifier resolved from its 
485          * qualifying member with a dot in between.
486          */
487         public final Value.String.Member summary     = new Value.String.Member(this, Members.summary    );
488         /**
489          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
490          * name of this field, qualified by the current member instance of the field, and 
491          * to access the property of the name on an object.</p>
492          * <p>The property, identified by this member, of a {@link JsHTMLTableCellElement} 
493          * object refers to a string specifying the width the current table.</p>
494          * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
495          * @since 1.0
496          * @javascript Re-compilers must resolve the member of this instance field to the
497          * identifier of the field name appending to the identifier resolved from its 
498          * qualifying member with a dot in between.
499          */
500         public final Value.String.Member width       = new Value.String.Member(this, Members.width      );
501     }
502 
503     /**
504      * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
505      * with the wrapping constructor.</p>
506      * @param var The argument of an <b>opaque</b> object.
507      * @since 1.0
508      * @javascript Re-compilers must ignore the construction operation of this constructor,
509      * that is, replacing it with its only argument.
510      */
511     public JsHTMLTableElement(JsObject var) {
512         super(var);
513     }
514 
515     /**
516      * <p>An <b>opaque</b> static field defining a member that is named by the field name
517      * without a qualifying member and to access the property of the name on an object.</p>
518      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
519      * object is a reference to a {@link JsHTMLTableCaptionElement} element representing 
520      * the <tt>&lt;caption&gt;</tt> element for the table, or <tt>null</tt> if there 
521      * is none.</p>
522      * <p>JavaScript throws a {@link JsDOMException} object with the {@link JsDOMException#code} 
523      * property of the value {@link JsDOMException#HIERARCHY_REQUEST_ERR} if the element 
524      * is not an instance of {@link JsClient#HTMLTableCaptionElement} when setting the 
525      * property. See {@link Js#err(Object)} for JS Simulation.</p>
526      * @since 1.0
527      * @javascript Re-compilers must resolve the member of this static field to the
528      * identifier of the field name.
529      */
530     public static final JsHTMLElement.Member caption = new JsHTMLElement.Member(Members.caption);
531     /**
532      * <p>An <b>opaque</b> static field defining a member that is named by the field name
533      * without a qualifying member and to access the property of the name on an object.</p>
534      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
535      * object is a read-only reference to a collection of {@link JsHTMLTableRowElement} 
536      * elements of the current table section, which represent all the rows in the 
537      * table including all rows defined within <tt>&lt;thead&gt;</tt>, <tt>&lt;tfoot&gt;</tt>, 
538      * and <tt>&lt;tbody&gt;</tt> tags.</p>
539      * @since 1.0
540      * @javascript Re-compilers must resolve the member of this static field to the
541      * identifier of the field name.
542      */
543     public static final JsHTMLCollection.Member<JsHTMLTableRowElement> rows = new JsHTMLCollection.Member<JsHTMLTableRowElement>(Members.rows);
544     /**
545      * <p>An <b>opaque</b> static field defining a member that is named by the field name
546      * without a qualifying member and to access the property of the name on an object.</p>
547      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
548      * object is a read-only reference to a collection of {@link JsHTMLTableSectionElement} 
549      * elements that represent <tt>&lt;tbody&gt;</tt> elements in the table.</p>
550      * @since 1.0
551      * @javascript Re-compilers must resolve the member of this static field to the
552      * identifier of the field name.
553      */
554     public static final JsHTMLCollection.Member<JsHTMLTableSectionElement> tBodies = new JsHTMLCollection.Member<JsHTMLTableSectionElement>(Members.tBodies);
555     /**
556      * <p>An <b>opaque</b> static field defining a member that is named by the field name
557      * without a qualifying member and to access the property of the name on an object.</p>
558      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
559      * object is a reference to a {@link JsHTMLTableSectionElement} element representing 
560      * the <tt>&lt;tfoot&gt;</tt> element for the table, or <tt>null</tt> if there 
561      * is none.</p>
562      * <p>JavaScript throws a {@link JsDOMException} object with the {@link JsDOMException#code} 
563      * property of the value {@link JsDOMException#HIERARCHY_REQUEST_ERR} if the element 
564      * is not an instance of {@link JsClient#HTMLTableSectionElement} when setting the 
565      * property. See {@link Js#err(Object)} for JS Simulation.</p>
566      * @since 1.0
567      * @javascript Re-compilers must resolve the member of this static field to the
568      * identifier of the field name.
569      */
570     public static final JsHTMLTableSectionElement.Member tFoot = new JsHTMLTableSectionElement.Member(Members.tFoot);
571     /**
572      * <p>An <b>opaque</b> static field defining a member that is named by the field name
573      * without a qualifying member and to access the property of the name on an object.</p>
574      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
575      * object is a reference to a {@link JsHTMLTableSectionElement} element representing 
576      * the <tt>&lt;thead&gt;</tt> element for the table, or <tt>null</tt> if there 
577      * is none.</p>
578      * <p>JavaScript throws a {@link JsDOMException} object with the {@link JsDOMException#code} 
579      * property of the value {@link JsDOMException#HIERARCHY_REQUEST_ERR} if the element 
580      * is not an instance of {@link JsClient#HTMLTableSectionElement} when setting the 
581      * property. See {@link Js#err(Object)} for JS Simulation.</p>
582      * @since 1.0
583      * @javascript Re-compilers must resolve the member of this static field to the
584      * identifier of the field name.
585      */
586     public static final JsHTMLTableSectionElement.Member tHead = new JsHTMLTableSectionElement.Member(Members.tHead);
587     /**
588      * <p>An <b>opaque</b> static field defining a member that is named by the field name
589      * without a qualifying member and to access the property of the name on an object.</p>
590      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
591      * object refers to a string specifying the horizontal alignment of the elements 
592      * of the table with respect to the surrounding context. Possible values 
593      * are:
594      * <ul>
595      * <li><tt>"left"</tt>: text lines are rendered flush left.</li>
596      * <li><tt>"center"</tt>: text lines are centered.</li>
597      * <li><tt>"right"</tt>: text lines are rendered flush right.</li>
598      * <li><tt>"justify"</tt>: text lines are justified to both margins.</li>
599      * </ul>
600      * The default value of this attribute depends on the base text direction. 
601      * For left to right text, the default is "left", while for right to left text, 
602      * it is "right".</p>
603      * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
604      * @since 1.0
605      * @javascript Re-compilers must resolve the member of this static field to the
606      * identifier of the field name.
607      */
608     public static final Value.String.Member align       = new Value.String.Member(Members.align      );
609     /**
610      * <p>An <b>opaque</b> static field defining a member that is named by the field name
611      * without a qualifying member and to access the property of the name on an object.</p>
612      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
613      * object refers to a string specifying the background color for the table cells.</p>
614      * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
615      * @since 1.0
616      * @javascript Re-compilers must resolve the member of this static field to the
617      * identifier of the field name.
618      */
619     public static final Value.String.Member bgColor     = new Value.String.Member(Members.bgColor    );
620     /**
621      * <p>An <b>opaque</b> static field defining a member that is named by the field name
622      * without a qualifying member and to access the property of the name on an object.</p>
623      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
624      * object refers to a string specifying the width of borders around this table 
625      * in pixels.</p>
626      * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
627      * @since 1.0
628      * @javascript Re-compilers must resolve the member of this static field to the
629      * identifier of the field name.
630      */
631     public static final Value.String.Member border      = new Value.String.Member(Members.border     );
632     /**
633      * <p>An <b>opaque</b> static field defining a member that is named by the field name
634      * without a qualifying member and to access the property of the name on an object.</p>
635      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
636      * object refers to a string specifying the horizontal and vertical space 
637      * between cell content and cell borders of the table.</p>
638      * @since 1.0
639      * @javascript Re-compilers must resolve the member of this static field to the
640      * identifier of the field name.
641      */
642     public static final Value.String.Member cellPadding = new Value.String.Member(Members.cellPadding);
643     /**
644      * <p>An <b>opaque</b> static field defining a member that is named by the field name
645      * without a qualifying member and to access the property of the name on an object.</p>
646      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
647      * object refers to a string specifying the horizontal and vertical separation 
648      * between cells of the table.</p>
649      * @since 1.0
650      * @javascript Re-compilers must resolve the member of this static field to the
651      * identifier of the field name.
652      */
653     public static final Value.String.Member cellSpacing = new Value.String.Member(Members.cellSpacing);
654     /**
655      * <p>An <b>opaque</b> static field defining a member that is named by the field name
656      * without a qualifying member and to access the property of the name on an object.</p>
657      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
658      * object refers to a string specifying which sides of the {@link #border} 
659      * surrounding a table will be visible. Possible values are:
660      * <ul>
661      * <li><tt>"void"</tt>: No sides. This is the default value.</li>
662      * <li><tt>"above"</tt>: The top side only.</li>
663      * <li><tt>"below"</tt>: The bottom side only.</li>
664      * <li><tt>"hsides"</tt>: The top and bottom sides only.</li>
665      * <li><tt>"vsides"</tt>: The right and left sides only.</li>
666      * <li><tt>"lhs"</tt>: The left-hand side only.</li>
667      * <li><tt>"rhs"</tt>: The right-hand side only.</li>
668      * <li><tt>"box"</tt>: All four sides.</li>
669      * <li><tt>"border"</tt>: All four sides.</li>
670      * </ul>
671      * </p>
672      * @since 1.0
673      * @javascript Re-compilers must resolve the member of this static field to the
674      * identifier of the field name.
675      */
676     public static final Value.String.Member frame       = new Value.String.Member(Members.frame      );
677     /**
678      * <p>An <b>opaque</b> static field defining a member that is named by the field name
679      * without a qualifying member and to access the property of the name on an object.</p>
680      * <p>The property, identified by this member, of a {@link JsHTMLTableElement} 
681      * object refers to a string specifying which rules will appear between cells 
682      * within the table. The rendering of rules is browser dependent. Possible 
683      * values are:
684      * <ul>
685      * <li><tt>"none"</tt>: No rules. This is the default value.</li>
686      * <li><tt>"groups"</tt>: Rules appear between row groups and column groups only.</li>
687      * <li><tt>"rows"</tt>: Rules appear between rows only.</li>
688      * <li><tt>"cols"</tt>: Rules appear between columns only.</li>
689      * <li><tt>"all"</tt>: Rules appear between all rows and columns.</li>
690      * </ul>
691      * </p>
692      * @since 1.0
693      * @javascript Re-compilers must resolve the member of this static field to the
694      * identifier of the field name.
695      */
696     public static final Value.String.Member rules       = new Value.String.Member(Members.rules      );
697     /**
698      * <p>An <b>opaque</b> static field defining a member that is named by the field name
699      * without a qualifying member and to access the property of the name on an object.</p>
700      * <p>The property, identified by this member, of a {@link JsHTMLTableCellElement} 
701      * object refers to a string specifying the summary description about the purpose 
702      * or structure of table.</p>
703      * @since 1.0
704      * @javascript Re-compilers must resolve the member of this static field to the
705      * identifier of the field name.
706      */
707     public static final Value.String.Member summary     = new Value.String.Member(Members.summary    );
708     /**
709      * <p>An <b>opaque</b> static field defining a member that is named by the field name
710      * without a qualifying member and to access the property of the name on an object.</p>
711      * <p>The property, identified by this member, of a {@link JsHTMLTableCellElement} 
712      * object refers to a string specifying the width the current table.</p>
713      * <p>This attribute is deprecated by HTML 4.01 and should be handled by style sheets.</p> 
714      * @since 1.0
715      * @javascript Re-compilers must resolve the member of this static field to the
716      * identifier of the field name.
717      */
718     public static final Value.String.Member width       = new Value.String.Member(Members.width      );
719 
720     @Override
721     /**
722      * <p>Returns the primitive value associated with the current instance, if there is one.
723      * This invocation simply returns the instance itself for the current instance is an 
724      * object and there is no primitive value for it.</p>
725      * @return The current object itself.
726      * @since 1.0
727      * @javascript Re-compilers must convert the instance invocation of this method directly
728      * into a JavaScript invocation on its current object instance without changing the 
729      * method name, but expanding variable arguments, if any, into comma-separated values. 
730      */
731     public JsHTMLTableElement valueOf() {
732         return new JsHTMLTableElement((JsObject)var().valueOf());
733     }
734     /**
735      * <p>Creates a new table caption object or return an existing one.</p>
736      * @return A {@link JsHTMLTableCaptionElement} object representing the <tt>&lt;caption&gt;</tt> 
737      * element for this table. If the table already has a caption, this method simply 
738      * returns it. If the table does not have an existing <tt>&lt;caption&gt;</tt>, 
739      * this method creates a new empty one and inserts it into the table before 
740      * returning it.
741      * @since 1.0
742      * @javascript Re-compilers must convert the instance invocation of this method directly
743      * into a JavaScript invocation on its current object instance without changing the 
744      * method name, but expanding variable arguments, if any, into comma-separated values. 
745      */
746     public final JsHTMLTableCaptionElement createCaption() {
747         return new JsHTMLTableCaptionElement(call(createCaption));
748     }
749     /**
750      * <p>Creates a table footer row or returns an existing one.</p>
751      * @return A {@link JsHTMLTableSectionElement} object representing the <tt>&lt;tfoot&gt;</tt> 
752      * element for this table. If the table already has a footer, this method simply 
753      * returns it. If the table does not have an existing footer, this method creates 
754      * a new empty <tt>&lt;tfoot&gt;</tt> element and inserts it into the table before 
755      * returning it.
756      * @since 1.0
757      * @javascript Re-compilers must convert the instance invocation of this method directly
758      * into a JavaScript invocation on its current object instance without changing the 
759      * method name, but expanding variable arguments, if any, into comma-separated values. 
760      */
761     public final JsHTMLTableSectionElement createTFoot() {
762         return new JsHTMLTableSectionElement(call(createTFoot));
763     }
764     /**
765      * <p>Creates a new table header row or returns an existing one.</p>
766      * @return A {@link JsHTMLTableSectionElement} object representing the <tt>&lt;thead&gt;</tt> 
767      * element for this table. If the table already has a header, this method simply 
768      * returns it. If the table does not have an existing header, this method creates 
769      * a new empty <tt>&lt;thead&gt;</tt> element and inserts it into the table before 
770      * returning it.
771      * @since 1.0
772      * @javascript Re-compilers must convert the instance invocation of this method directly
773      * into a JavaScript invocation on its current object instance without changing the 
774      * method name, but expanding variable arguments, if any, into comma-separated values. 
775      */
776     public final JsHTMLTableSectionElement createTHead() {
777         return new JsHTMLTableSectionElement(call(createTHead));
778     }
779     /**
780      * <p>Deletes the table caption, if one exists.</p>
781      * <p>If this table has a <tt>&lt;caption&gt;</tt> element, this method removes it 
782      * from the document tree. Otherwise, it does nothing.</p>
783      * @since 1.0
784      * @javascript Re-compilers must convert the instance invocation of this method directly
785      * into a JavaScript invocation on its current object instance without changing the 
786      * method name, but expanding variable arguments, if any, into comma-separated values. 
787      */
788     public final void deleteCaption() {
789         call(deleteCaption);
790     }
791     /**
792      * <p>Deletes the row at the specified position in the table.</p>
793      * <p>This method deletes the row at the specified position from the table. Rows 
794      * are numbered in the order in which they appear in the document source. Rows in 
795      * tt>&lt;thead&gt;</tt> and tt>&lt;tfoot&gt;</tt> sections are numbered along with 
796      * all other rows in the table.</p>
797      * @param index Specifies the position within the table of the row to be deleted.
798      * @throws RuntimeException JavaScript throws a {@link JsDOMException} object with 
799      * the {@link JsDOMException#code} property of the value {@link JsDOMException#INDEX_SIZE_ERR} 
800      * if the specified <tt>index</tt> is greater than or equal to the number of cells 
801      * or if the <tt>index</tt> is a negative number other than -1. See {@link Js#err(Object)} for 
802      * JS Simulation.
803      * @since 1.0
804      * @see #deleteRow(NumberLike)
805      * @javascript Re-compilers must convert the instance invocation of this method directly
806      * into a JavaScript invocation on its current object instance without changing the 
807      * method name, but expanding variable arguments, if any, into comma-separated values. 
808      */
809     public final void deleteRow(Number index) {
810         call(deleteRow, index);
811     }
812     /**
813      * <p>Deletes the row at the specified position in the table.</p>
814      * <p>This method deletes the row at the specified position from the table. Rows 
815      * are numbered in the order in which they appear in the document source. Rows in 
816      * tt>&lt;thead&gt;</tt> and tt>&lt;tfoot&gt;</tt> sections are numbered along with 
817      * all other rows in the table.</p>
818      * @param index Specifies the position within the table of the row to be deleted.
819      * @throws RuntimeException JavaScript throws a {@link JsDOMException} object with 
820      * the {@link JsDOMException#code} property of the value {@link JsDOMException#INDEX_SIZE_ERR} 
821      * if the specified <tt>index</tt> is greater than or equal to the number of cells 
822      * or if the <tt>index</tt> is a negative number other than -1. See {@link Js#err(Object)} for 
823      * JS Simulation.
824      * @since 1.0
825      * @see #deleteRow(Number)
826      * @javascript Re-compilers must convert the instance invocation of this method directly
827      * into a JavaScript invocation on its current object instance without changing the 
828      * method name, but expanding variable arguments, if any, into comma-separated values. 
829      */
830     public final void deleteRow(NumberLike<?> index) {
831         call(deleteRow, index);
832     }
833     /**
834      * <p>Deletes the footer from the table, if one exists.</p>
835      * <p>If this table has a <tt>&lt;tfoot&gt;</tt> element, this method removes it from the 
836      * document tree. If the table has no footer, this method does nothing.</p>
837      * @since 1.0
838      * @javascript Re-compilers must convert the instance invocation of this method directly
839      * into a JavaScript invocation on its current object instance without changing the 
840      * method name, but expanding variable arguments, if any, into comma-separated values. 
841      */
842     public final void deleteTFoot() {
843         call(deleteTFoot);
844     }
845     /**
846      * <p>Deletes the header from the table, if one exists.</p>
847      * <p>If this table has a <tt>&lt;thead&gt;</tt> element, this method removes it from the 
848      * document tree. If the table has no header, this method does nothing.</p>
849      * @since 1.0
850      * @javascript Re-compilers must convert the instance invocation of this method directly
851      * into a JavaScript invocation on its current object instance without changing the 
852      * method name, but expanding variable arguments, if any, into comma-separated values. 
853      */
854     public final void deleteTHead() {
855         call(deleteTHead);
856     }
857     /**
858      * <p>Inserts a new empty row in the table at the specified position.</p>
859      * <p>The new row is inserted immediately before and in the same section as the 
860      * current <tt>index</tt>th row in the table. If <tt>index</tt> is -1 or equal to 
861      * the number of rows, the new row is appended. In addition, when the table is 
862      * empty the row is inserted into a <tt>&lt;tbody&gt;</tt> which is created and 
863      * inserted into the table.</p>
864      * @param index The position at which the new row is to be inserted.
865      * @return A {@link JsHTMLTableRowElement} object representing the newly inserted row.
866      * @throws RuntimeException JavaScript throws a {@link JsDOMException} object with 
867      * the {@link JsDOMException#code} property of the value {@link JsDOMException#INDEX_SIZE_ERR} 
868      * if the specified <tt>index</tt> is greater than or equal to the number of cells 
869      * or if the <tt>index</tt> is a negative number other than -1. See {@link Js#err(Object)} for 
870      * JS Simulation.
871      * @since 1.0
872      * @see #insertRow(NumberLike)
873      * @javascript Re-compilers must convert the instance invocation of this method directly
874      * into a JavaScript invocation on its current object instance without changing the 
875      * method name, but expanding variable arguments, if any, into comma-separated values. 
876      */
877     public final JsHTMLTableRowElement insertRow(Number index) {
878         return new JsHTMLTableRowElement(call(insertRow, index));
879     }
880     /**
881      * <p>Inserts a new empty row in the table at the specified position.</p>
882      * <p>The new row is inserted immediately before and in the same section as the 
883      * current <tt>index</tt>th row in the table. If <tt>index</tt> is -1 or equal to 
884      * the number of rows, the new row is appended. In addition, when the table is 
885      * empty the row is inserted into a <tt>&lt;tbody&gt;</tt> which is created and 
886      * inserted into the table.</p>
887      * @param index The position at which the new row is to be inserted.
888      * @return A {@link JsHTMLTableRowElement} object representing the newly inserted row.
889      * @throws RuntimeException JavaScript throws a {@link JsDOMException} object with 
890      * the {@link JsDOMException#code} property of the value {@link JsDOMException#INDEX_SIZE_ERR} 
891      * if the specified <tt>index</tt> is greater than or equal to the number of cells 
892      * or if the <tt>index</tt> is a negative number other than -1. See {@link Js#err(Object)} for 
893      * JS Simulation.
894      * @since 1.0
895      * @see #insertRow(Number)
896      * @javascript Re-compilers must convert the instance invocation of this method directly
897      * into a JavaScript invocation on its current object instance without changing the 
898      * method name, but expanding variable arguments, if any, into comma-separated values. 
899      */
900     public final JsHTMLTableRowElement insertRow(NumberLike<?> index) {
901         return new JsHTMLTableRowElement(call(insertRow, index));
902     }
903 }