View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.commons.util.renderkit;
20  
21  import org.apache.myfaces.commons.util.ArrayUtils;
22  
23  
24  /**
25   * Constant declarations for HTML rendering.
26   * @author Manfred Geiler
27   * @author Anton Koinov
28   * @version $Revision: 938289 $ $Date: 2010-04-26 20:35:24 -0500 (Lun, 26 Abr 2010) $
29   */
30  public final class HTML
31  {
32  
33      // Common attributes
34      public static final String ALIGN_ATTR = "align";
35      public static final String BORDER_ATTR = "border";
36      public static final String WIDTH_ATTR = "width";
37      public static final String READONLY_ATTR = "readonly";
38      public static final String FILE_ATTR = "file";
39      public static final String ACCEPT_ATTR = "accept";
40  
41      // Common event handler attributes
42      public static final String ONCLICK_ATTR     = "onclick";
43      public static final String ONDBLCLICK_ATTR  = "ondblclick";
44      public static final String ONMOUSEDOWN_ATTR = "onmousedown";
45      public static final String ONMOUSEUP_ATTR   = "onmouseup";
46      public static final String ONMOUSEOVER_ATTR = "onmouseover";
47      public static final String ONMOUSEMOVE_ATTR = "onmousemove";
48      public static final String ONMOUSEOUT_ATTR  = "onmouseout";
49      public static final String ONKEYPRESS_ATTR  = "onkeypress";
50      public static final String ONKEYDOWN_ATTR   = "onkeydown";
51      public static final String ONKEYUP_ATTR     = "onkeyup";
52      public static final String ONFOCUS_ATTR = "onfocus";
53      public static final String ONBLUR_ATTR = "onblur";
54      public static final String[] EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK =
55      {
56          ONDBLCLICK_ATTR,
57          ONMOUSEDOWN_ATTR,
58          ONMOUSEUP_ATTR,
59          ONMOUSEOVER_ATTR,
60          ONMOUSEMOVE_ATTR,
61          ONMOUSEOUT_ATTR,
62          ONKEYPRESS_ATTR,
63          ONKEYDOWN_ATTR,
64          ONKEYUP_ATTR
65      };
66      public static final String[] EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT =
67      {
68          ONDBLCLICK_ATTR,
69          ONMOUSEDOWN_ATTR,
70          ONMOUSEUP_ATTR,
71          ONMOUSEMOVE_ATTR,
72          ONKEYPRESS_ATTR,
73          ONKEYDOWN_ATTR,
74          ONKEYUP_ATTR,
75          ONCLICK_ATTR
76      };
77      public static final String[] EVENT_HANDLER_ATTRIBUTES =
78              (String[]) ArrayUtils.concat(
79                  EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK,
80                  new String[] {ONCLICK_ATTR});
81  
82      // Input field event handler attributes
83      public static final String ONSELECT_ATTR = "onselect";
84      public static final String ONCHANGE_ATTR = "onchange";
85      public static final String[] COMMON_FIELD_EVENT_ATTRIBUTES =
86      {
87          ONFOCUS_ATTR,
88          ONBLUR_ATTR,
89          ONSELECT_ATTR,
90          ONCHANGE_ATTR
91      };
92  
93      public static final String[] COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS =
94      {
95          ONBLUR_ATTR,
96          ONSELECT_ATTR,
97          ONCHANGE_ATTR
98      };
99      
100     public static final String[] COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE =
101     {
102         ONFOCUS_ATTR,
103         ONBLUR_ATTR
104     };
105 
106     // universal attributes
107     public static final String DIR_ATTR   = "dir";
108     public static final String LANG_ATTR  = "lang";
109     public static final String STYLE_ATTR = "style";
110     public static final String TITLE_ATTR = "title";
111     public static final String STYLE_CLASS_ATTR = "styleClass"; //"class" cannot be used as property name
112      
113     public static final String[] UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE =
114     {
115         DIR_ATTR,
116         LANG_ATTR,
117         TITLE_ATTR,
118 
119         //NOTE: if changed, please verify universal attributes in HtmlMessageRenderer !
120     };
121     public static final String[] UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE_AND_TITLE =
122     {
123         DIR_ATTR,
124         LANG_ATTR,
125     };
126     public static final String[] UNIVERSAL_ATTRIBUTES =
127             (String[]) ArrayUtils.concat(
128                 UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE,
129                 new String[] {STYLE_ATTR, STYLE_CLASS_ATTR});
130 
131     //universal, but not the same property-name -
132     //styleClass attribute is rendered as such
133     public static final String CLASS_ATTR = "class";
134 
135     // common form field attributes
136     public static final String ACCESSKEY_ATTR   = "accesskey";
137     public static final String TABINDEX_ATTR    = "tabindex";
138     public static final String DISABLED_ATTR = "disabled";
139     public static final String[] COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED =
140     {
141         ACCESSKEY_ATTR,
142         TABINDEX_ATTR
143     };
144     public static final String[] COMMON_FIELD_ATTRIBUTES =
145         (String[]) ArrayUtils.concat(
146             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
147             new String[] {DISABLED_ATTR});
148 
149     // Common Attributes
150     public static final String[] COMMON_PASSTROUGH_ATTRIBUTES =
151         (String[]) ArrayUtils.concat(
152             EVENT_HANDLER_ATTRIBUTES,
153             UNIVERSAL_ATTRIBUTES);
154     public static final String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE =
155         (String[]) ArrayUtils.concat(
156             EVENT_HANDLER_ATTRIBUTES,
157             UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE);
158     public static final String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK =
159         (String[]) ArrayUtils.concat(
160             EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK,
161             UNIVERSAL_ATTRIBUTES);
162     public static final String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE =
163         (String[]) ArrayUtils.concat(
164             EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK,
165             UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE);
166     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED =
167         (String[]) ArrayUtils.concat(
168             COMMON_PASSTROUGH_ATTRIBUTES,
169             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
170             COMMON_FIELD_EVENT_ATTRIBUTES);
171     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE =
172         (String[]) ArrayUtils.concat(
173             COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE,
174             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
175             COMMON_FIELD_EVENT_ATTRIBUTES);
176     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS =
177         (String[]) ArrayUtils.concat(
178             COMMON_PASSTROUGH_ATTRIBUTES,
179             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
180             COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS);
181     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK =
182         (String[]) ArrayUtils.concat(
183             COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK,
184             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
185             COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS);
186     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONCLICK =
187         (String[]) ArrayUtils.concat(
188             COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK,
189             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
190             COMMON_FIELD_EVENT_ATTRIBUTES);
191     public static final String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT =
192         (String[]) ArrayUtils.concat(
193             EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT,
194             UNIVERSAL_ATTRIBUTES);
195     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
196         (String[]) ArrayUtils.concat(
197             UNIVERSAL_ATTRIBUTES,
198             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED);
199     public static final String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE_AND_EVENTS =
200         (String[]) ArrayUtils.concat(
201             UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE,
202             COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED);
203     
204     // <a>
205     public static final String TARGET_ATTR = "target";  //used by <a> and <form>
206     public static final String CHARSET_ATTR     = "charset";
207     public static final String COORDS_ATTR      = "coords";
208     public static final String HREF_ATTR    = "href";
209     public static final String HREFLANG_ATTR    = "hreflang";
210     public static final String REL_ATTR         = "rel";
211     public static final String REV_ATTR         = "rev";
212     public static final String SHAPE_ATTR       = "shape";
213     public static final String TYPE_ATTR        = "type";
214     public static final String[] ANCHOR_ATTRIBUTES =
215     {
216         ACCESSKEY_ATTR,
217         CHARSET_ATTR,
218         COORDS_ATTR,
219         HREFLANG_ATTR,
220         REL_ATTR,
221         REV_ATTR,
222         SHAPE_ATTR,
223         TABINDEX_ATTR,
224         TARGET_ATTR,
225         TYPE_ATTR
226     };
227     public static final String[] ANCHOR_PASSTHROUGH_ATTRIBUTES =
228         (String[]) ArrayUtils.concat(
229             ANCHOR_ATTRIBUTES,
230             COMMON_PASSTROUGH_ATTRIBUTES,
231             COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE);
232     public static final String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE =
233         (String[]) ArrayUtils.concat(
234             ANCHOR_ATTRIBUTES,
235             COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE,
236             COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE);
237     public static final String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE =
238         (String[]) ArrayUtils.concat(
239             ANCHOR_ATTRIBUTES,
240             COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE,
241             COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE);
242     public static final String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
243         (String[]) ArrayUtils.concat(
244             ANCHOR_ATTRIBUTES,
245             UNIVERSAL_ATTRIBUTES);
246     public static final String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE_AND_EVENTS =
247         (String[]) ArrayUtils.concat(
248             ANCHOR_ATTRIBUTES,
249             UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE);
250 
251     // <form>
252     public static final String ACCEPT_CHARSET_ATTR = "accept-charset";
253     public static final String ENCTYPE_ATTR = "enctype";
254     public static final String ONRESET_ATTR = "onreset";
255     public static final String ONSUMBIT_ATTR = "onsubmit";
256     public static final String[] FORM_ATTRIBUTES =
257     {
258         ACCEPT_ATTR,
259         ACCEPT_CHARSET_ATTR,
260         ENCTYPE_ATTR,
261         ONRESET_ATTR,
262         ONSUMBIT_ATTR,
263         TARGET_ATTR,
264     };
265     public static final String[] FORM_PASSTHROUGH_ATTRIBUTES =
266         (String[]) ArrayUtils.concat(
267             FORM_ATTRIBUTES,
268             COMMON_PASSTROUGH_ATTRIBUTES);
269     public static final String[] FORM_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
270         (String[]) ArrayUtils.concat(
271             FORM_ATTRIBUTES,
272             UNIVERSAL_ATTRIBUTES);
273     // <img>
274     public static final String SRC_ATTR = "src";
275     public static final String ALT_ATTR = "alt";
276     public static final String HEIGHT_ATTR = "height";
277     public static final String HSPACE_ATTR = "hspace";
278     public static final String ISMAP_ATTR = "ismap";
279     public static final String LONGDESC_ATTR = "longdesc";
280     public static final String USEMAP_ATTR = "usemap";
281     public static final String VSPACE_ATTR = "vspace";
282 
283     public static final String[] IMG_ATTRIBUTES =
284     {
285         ALIGN_ATTR,
286         ALT_ATTR,
287         BORDER_ATTR,
288         HEIGHT_ATTR,
289         HSPACE_ATTR,
290         ISMAP_ATTR,
291         LONGDESC_ATTR,
292         USEMAP_ATTR,
293         VSPACE_ATTR,
294         WIDTH_ATTR
295     };
296     public static final String[] IMG_PASSTHROUGH_ATTRIBUTES =
297         (String[]) ArrayUtils.concat(
298            IMG_ATTRIBUTES,
299            COMMON_PASSTROUGH_ATTRIBUTES);
300     public static final String[] IMG_PASSTHROUGH_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT =
301         (String[]) ArrayUtils.concat(
302            IMG_ATTRIBUTES,
303            COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT);
304     public static final String[] IMG_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
305         (String[]) ArrayUtils.concat(
306            IMG_ATTRIBUTES,
307            UNIVERSAL_ATTRIBUTES);
308     // <input>
309     public static final String SIZE_ATTR = "size";
310     public static final String AUTOCOMPLETE_ATTR = "autocomplete";
311     public static final String CHECKED_ATTR = "checked";
312     public static final String MAXLENGTH_ATTR = "maxlength";
313 
314     public static final String[] INPUT_ATTRIBUTES = {
315         ALIGN_ATTR,
316         ALT_ATTR,
317         CHECKED_ATTR,
318         MAXLENGTH_ATTR,
319         READONLY_ATTR,
320         SIZE_ATTR
321     };
322     public static final String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
323         (String[]) ArrayUtils.concat(
324                 INPUT_ATTRIBUTES,
325                 COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED);
326     public static final String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE =
327         (String[]) ArrayUtils.concat(
328                 INPUT_ATTRIBUTES,
329                 COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE);
330 
331     public static final String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK =
332         (String[]) ArrayUtils.concat(
333                 INPUT_ATTRIBUTES,
334                 COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK);
335 
336     public static final String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
337         (String[]) ArrayUtils.concat(
338                 INPUT_ATTRIBUTES,
339                 COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
340     
341     public static final String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE_AND_EVENTS =
342         (String[]) ArrayUtils.concat(
343                 INPUT_ATTRIBUTES,
344                 COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE_AND_EVENTS);
345 
346     //values for input-type attribute
347     public static final String INPUT_TYPE_SUBMIT = "submit";
348     public static final String INPUT_TYPE_IMAGE = "image";
349     public static final String INPUT_TYPE_HIDDEN = "hidden";
350     public static final String INPUT_TYPE_CHECKBOX = "checkbox";
351     public static final String INPUT_TYPE_PASSWORD = "password";
352     public static final String INPUT_TYPE_TEXT = "text";
353     public static final String INPUT_TYPE_RADIO = "radio";
354     public static final String INPUT_TYPE_BUTTON = "button";
355 
356     // <button>
357     public static final String[] BUTTON_ATTRIBUTES =
358     {
359         ALIGN_ATTR,
360         ALT_ATTR,
361     };
362     public static final String[] BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
363         (String[]) ArrayUtils.concat(
364             BUTTON_ATTRIBUTES,
365             COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED);
366     public static final String[] BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONCLICK =
367         (String[]) ArrayUtils.concat(
368             BUTTON_ATTRIBUTES,
369             COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONCLICK);
370     public static final String[] BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
371         (String[]) ArrayUtils.concat(
372             BUTTON_ATTRIBUTES,
373             COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
374 
375     // <iframe>
376     public static final String FRAMEBORDER_ATTR = "frameborder";
377     public static final String SCROLLING_ATTR = "scrolling";
378 
379     // <label>
380     public static final String FOR_ATTR = "for";
381     public static final String[] LABEL_ATTRIBUTES =
382     {
383         ACCESSKEY_ATTR,
384         ONBLUR_ATTR,
385         ONFOCUS_ATTR
386         //FOR_ATTR is no pass through !
387     };
388     public static final String[] LABEL_ATTRIBUTES_WITHOUT_EVENTS =
389     {
390         ACCESSKEY_ATTR
391     };
392     public static final String[] LABEL_PASSTHROUGH_ATTRIBUTES =
393         (String[]) ArrayUtils.concat(
394             LABEL_ATTRIBUTES,
395             COMMON_PASSTROUGH_ATTRIBUTES);
396     public static final String[] LABEL_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
397         (String[]) ArrayUtils.concat(
398             LABEL_ATTRIBUTES_WITHOUT_EVENTS,
399             UNIVERSAL_ATTRIBUTES);
400 
401     // <select>
402     public static final String MULTIPLE_ATTR = "multiple";
403 
404     public static final String[] SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED = 
405             COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED;
406     public static final String[] SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS = 
407         COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS;
408 
409     // <table>
410     public static final String BGCOLOR_ATTR = "bgcolor";
411     public static final String CELLPADDING_ATTR = "cellpadding";
412     public static final String CELLSPACING_ATTR = "cellspacing";
413     public static final String FRAME_ATTR = "frame";
414     public static final String RULES_ATTR = "rules";
415     public static final String SUMMARY_ATTR = "summary";
416     public static final String[] TABLE_ATTRIBUTES = {
417         ALIGN_ATTR,
418         BGCOLOR_ATTR,
419         BORDER_ATTR,
420         CELLPADDING_ATTR,
421         CELLSPACING_ATTR,
422         FRAME_ATTR,
423         RULES_ATTR,
424         SUMMARY_ATTR,
425         WIDTH_ATTR
426     };
427     public static final String[] TABLE_PASSTHROUGH_ATTRIBUTES =
428         (String[]) ArrayUtils.concat(
429             TABLE_ATTRIBUTES,
430             COMMON_PASSTROUGH_ATTRIBUTES);
431     public static final String[] TABLE_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
432         (String[]) ArrayUtils.concat(
433             TABLE_ATTRIBUTES,
434             UNIVERSAL_ATTRIBUTES);
435 
436     // <textarea>
437     public static final String COLS_ATTR = "cols";
438     public static final String ROWS_ATTR = "rows";
439     public static final String WRAP_ATTR = "wrap";
440     public static final String[] TEXTAREA_ATTRIBUTES =
441     {
442         COLS_ATTR,
443         READONLY_ATTR,
444         ROWS_ATTR,
445         WRAP_ATTR
446     };
447     public static final String[] TEXTAREA_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
448         (String[]) ArrayUtils.concat(
449             TEXTAREA_ATTRIBUTES,
450             COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED);
451     public static final String[] TEXTAREA_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
452         (String[]) ArrayUtils.concat(
453             TEXTAREA_ATTRIBUTES,
454             COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
455 
456     // <input type=file>
457     public static final String[] INPUT_FILE_UPLOAD_ATTRIBUTES =
458     {
459         ACCEPT_ATTR
460     };
461     public static final String[] INPUT_FILE_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
462         (String[]) ArrayUtils.concat(
463             INPUT_FILE_UPLOAD_ATTRIBUTES,
464             INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED);
465     public static final String[] INPUT_FILE_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
466         (String[]) ArrayUtils.concat(
467             INPUT_FILE_UPLOAD_ATTRIBUTES,
468             INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
469 
470     /*
471     String[] MESSAGE_PASSTHROUGH_ATTRIBUTES =
472         (String[]) ArrayUtils.concat(
473             new String[] {DIR_ATTR, LANG_ATTR, TITLE_ATTR, STYLE_ATTR, STYLE_CLASS_ATTR},
474             EVENT_HANDLER_ATTRIBUTES);
475             */
476 
477     public static final String[] MESSAGE_PASSTHROUGH_ATTRIBUTES_WITHOUT_TITLE_STYLE_AND_STYLE_CLASS =
478         (String[]) ArrayUtils.concat(
479             new String[] {DIR_ATTR, LANG_ATTR},
480             EVENT_HANDLER_ATTRIBUTES);
481 
482 
483     // selectOne/Many table
484     public static final String[] SELECT_TABLE_PASSTHROUGH_ATTRIBUTES =
485         new String[] {STYLE_ATTR, STYLE_CLASS_ATTR, BORDER_ATTR};
486 
487     public static final String COMPACT_ATTR = "compact";
488     public static final String[] UL_ATTRIBUTES = {
489         COMPACT_ATTR,
490         TYPE_ATTR
491     };
492     public static final String[] UL_PASSTHROUGH_ATTRIBUTES =
493         (String[]) ArrayUtils.concat(
494             UL_ATTRIBUTES,
495             COMMON_PASSTROUGH_ATTRIBUTES);
496     public static final String[] UL_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
497         (String[]) ArrayUtils.concat(
498             UL_ATTRIBUTES,
499             UNIVERSAL_ATTRIBUTES);
500 
501     //body
502     public static final String BODY_ELEM = "body";
503     public static final String BODY_TARGET = BODY_ELEM;
504     
505     public static final String ONLOAD_ATTR = "onload";
506     public static final String ONUNLOAD_ATTR = "onunload";
507     public static final String ALINK_ATTR = "alink";
508     public static final String VLINK_ATTR = "vlink";
509     public static final String LINK_ATTR = "link";
510     public static final String TEXT_ATTR = "text";
511     public static final String BACKGROUND_ATTR = "background";
512 
513     public static final String[] BODY_ATTRIBUTES =
514     {
515         ONLOAD_ATTR,
516         ONUNLOAD_ATTR,
517         ALINK_ATTR,
518         VLINK_ATTR,
519         LINK_ATTR,
520         TEXT_ATTR,
521         BACKGROUND_ATTR,
522         BGCOLOR_ATTR
523     };
524     
525     public static final String[] BODY_ATTRIBUTES_WITHOUT_EVENTS =
526     {
527         ALINK_ATTR,
528         VLINK_ATTR,
529         LINK_ATTR,
530         TEXT_ATTR,
531         BACKGROUND_ATTR,
532         BGCOLOR_ATTR
533     };
534 
535     public static final String[] BODY_PASSTHROUGH_ATTRIBUTES =
536         (String[]) ArrayUtils.concat(
537                 COMMON_PASSTROUGH_ATTRIBUTES,
538                 BODY_ATTRIBUTES);
539     public static final String[] BODY_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
540         (String[]) ArrayUtils.concat(
541                 UNIVERSAL_ATTRIBUTES,
542                 BODY_ATTRIBUTES_WITHOUT_EVENTS);
543     //HTML attributes needed for renderding only
544     public static final String ID_ATTR = "id";
545     public static final String NAME_ATTR = "name";
546     public static final String VALUE_ATTR = "value";
547     public static final String METHOD_ATTR = "method";
548     public static final String ACTION_ATTR = "action";
549     public static final String COLSPAN_ATTR = "colspan";
550     public static final String SCOPE_ATTR = "scope";
551     public static final String LABEL_ATTR = "label";
552     public static final String SELECTED_ATTR = "selected";
553 
554     //HTML attributes values
555     public static final String SCOPE_COLGROUP_VALUE = "colgroup";
556     public static final String SCOPE_ROW_VALUE = "row";
557 
558     //HTML element constants
559     public static final String SPAN_ELEM = "span";
560     public static final String DIV_ELEM = "div";
561     public static final String INPUT_ELEM = "input";
562     public static final String BUTTON_ELEM = "button";
563     public static final String SELECT_ELEM = "select";
564     public static final String OPTION_ELEM = "option";
565     public static final String OPTGROUP_ELEM = "optgroup";
566     public static final String TEXTAREA_ELEM = "textarea";
567     public static final String FORM_ELEM = "form";
568     public static final String ANCHOR_ELEM = "a";
569     public static final String H1_ELEM = "h1";
570     public static final String H2_ELEM = "h2";
571     public static final String H3_ELEM = "h3";
572     public static final String H4_ELEM = "h4";
573     public static final String H5_ELEM = "h5";
574     public static final String H6_ELEM = "h6";
575     public static final String IFRAME_ELEM = "iframe";
576     public static final String IMG_ELEM = "img";
577     public static final String LABEL_ELEM = "label";
578     public static final String TABLE_ELEM = "table";
579     public static final String CAPTION_ELEM = "caption";
580     public static final String TR_ELEM = "tr";
581     public static final String TH_ELEM = "th";
582     public static final String TD_ELEM = "td";
583     public static final String TBODY_ELEM = "tbody";
584     public static final String TFOOT_ELEM = "tfoot";
585     public static final String THEAD_ELEM = "thead";
586     public static final String STYLE_ELEM = "style";
587     public static final String SCRIPT_ELEM = "script";
588     public static final String SCRIPT_TYPE_ATTR = "type";
589     public static final String SCRIPT_TYPE_TEXT_JAVASCRIPT = "text/javascript";
590     public static final String STYLE_TYPE_TEXT_CSS = "text/css";
591     public static final String SCRIPT_LANGUAGE_ATTR = "language";
592     public static final String SCRIPT_LANGUAGE_JAVASCRIPT = "JavaScript";
593     public static final String SCRIPT_ELEM_DEFER_ATTR = "defer";
594     public static final String LINK_ELEM = "link";
595     public static final String STYLESHEET_VALUE = "stylesheet";
596     public static final String UL_ELEM = "ul";
597     public static final String OL_ELEM = "ol";
598     public static final String LI_ELEM = "li";
599 
600 
601     //HTML simple element constants
602     public static final String BR_ELEM = "br";
603 
604 
605     //HTML entities
606     public static final String NBSP_ENTITY = "&#160;";
607 
608     public static final String HREF_PATH_SEPARATOR = "/";
609     public static final String HREF_PATH_FROM_PARAM_SEPARATOR = "?";
610     //removed because wrong for XHTML and not used anyway: String HREF_PARAM_SEPARATOR = "&";
611     public static final String HREF_PARAM_NAME_FROM_VALUE_SEPARATOR = "=";
612 
613 }