001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.bean.html5;
018
019import java.net.*;
020
021import org.apache.juneau.*;
022import org.apache.juneau.annotation.*;
023
024/**
025 * DTO for an HTML <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#the-object-element">&lt;object&gt;</a>
026 * element.
027 *
028 * <p>
029 * The object element represents an external resource, which can be treated as an image, a nested browsing context,
030 * or a resource to be handled by a plugin. It is commonly used to embed multimedia content such as Flash applications,
031 * PDFs, images, videos, or other HTML documents. While historically used for plugins, modern web development often
032 * prefers more specific elements like img, video, audio, or iframe when appropriate.
033 *
034 * <h5 class='section'>Examples:</h5>
035 * <p class='bcode w800'>
036 *    <jc>// PDF document</jc>
037 *    Object_ <jv>pdf</jv> = <jsm>object</jsm>()
038 *       .data(<js>"/documents/manual.pdf"</js>)
039 *       .type(<js>"application/pdf"</js>)
040 *       .width(<js>"600"</js>)
041 *       .height(<js>"800"</js>)
042 *       .children(<jsm>p</jsm>(<js>"Your browser doesn't support PDF viewing."</js>));
043 *
044 *    <jc>// SVG image</jc>
045 *    Object_ <jv>svg</jv> = <jsm>object</jsm>()
046 *       .data(<js>"/images/diagram.svg"</js>)
047 *       .type(<js>"image/svg+xml"</js>)
048 *       .width(<js>"400"</js>)
049 *       .height(<js>"300"</js>);
050 *
051 *    <jc>// Embedded HTML page</jc>
052 *    Object_ <jv>html</jv> = <jsm>object</jsm>()
053 *       .data(<js>"/external/page.html"</js>)
054 *       .type(<js>"text/html"</js>)
055 *       .width(<js>"100%"</js>)
056 *       .height(<js>"500"</js>);
057 *
058 *    <jc>// Flash content (legacy)</jc>
059 *    Object_ <jv>flash</jv> = <jsm>object</jsm>()
060 *       .data(<js>"/media/animation.swf"</js>)
061 *       .type(<js>"application/x-shockwave-flash"</js>)
062 *       .width(<js>"800"</js>)
063 *       .height(<js>"600"</js>)
064 *       .children(
065 *          <jsm>param</jsm>().name(<js>"quality"</js>).value(<js>"high"</js>),
066 *          <jsm>param</jsm>().name(<js>"bgcolor"</js>).value(<js>"#ffffff"</js>),
067 *          <jsm>p</jsm>(<js>"Flash is not supported by your browser."</js>)
068 *       );
069 *
070 *    <jc>// Image with fallback</jc>
071 *    Object_ <jv>image</jv> = <jsm>object</jsm>()
072 *       .data(<js>"/images/photo.jpg"</js>)
073 *       .type(<js>"image/jpeg"</js>)
074 *       .width(<js>"640"</js>)
075 *       .height(<js>"480"</js>)
076 *       .children(<jsm>img</jsm>().src(<js>"/images/fallback.jpg"</js>).alt(<js>"Photo"</js>));
077 *
078 *    <jc>// With usemap for image map</jc>
079 *    Object_ <jv>mapped</jv> = <jsm>object</jsm>()
080 *       .data(<js>"/images/map.jpg"</js>)
081 *       .type(<js>"image/jpeg"</js>)
082 *       .usemap(<js>"#imagemap"</js>);
083 * </p>
084 *
085 * <p>
086 * The following convenience methods are provided for constructing instances of this bean:
087 * <ul class='javatree'>
088 *    <li class='jc'>{@link HtmlBuilder}
089 *    <ul class='javatree'>
090 *       <li class='jm'>{@link HtmlBuilder#object() object()}
091 *       <li class='jm'>{@link HtmlBuilder#object(Object...) object(Object...)}
092 *    </ul>
093 * </ul>
094 * </p>
095 *
096 * <h5 class='section'>See Also:</h5><ul>
097 *    <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/JuneauBeanHtml5">juneau-bean-html5</a>
098 * </ul>
099 */
100@Bean(typeName = "object")
101public class Object_ extends HtmlElementMixed { // NOSONAR - Intentional naming.
102
103   /**
104    * Creates an empty {@link Object_} element.
105    */
106   public Object_() {}
107
108   /**
109    * Creates an {@link Object_} element with the specified child nodes.
110    *
111    * @param children The child nodes.
112    */
113   public Object_(Object...children) {
114      children(children);
115   }
116
117   @Override /* Overridden from HtmlElement */
118   public Object_ _class(String value) { // NOSONAR - Intentional naming.
119      super._class(value);
120      return this;
121   }
122
123   @Override /* Overridden from HtmlElement */
124   public Object_ accesskey(String value) {
125      super.accesskey(value);
126      return this;
127   }
128
129   @Override /* Overridden from HtmlElement */
130   public Object_ attr(String key, Object val) {
131      super.attr(key, val);
132      return this;
133   }
134
135   @Override /* Overridden from HtmlElement */
136   public Object_ attrUri(String key, Object val) {
137      super.attrUri(key, val);
138      return this;
139   }
140
141   @Override /* Overridden from HtmlElementMixed */
142   public Object_ child(Object value) {
143      super.child(value);
144      return this;
145   }
146
147   @Override /* Overridden from HtmlElementMixed */
148   public Object_ children(Object...value) {
149      super.children(value);
150      return this;
151   }
152
153   @Override /* Overridden from HtmlElement */
154   public Object_ contenteditable(Object value) {
155      super.contenteditable(value);
156      return this;
157   }
158
159   /**
160    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-object-data">data</a> attribute.
161    *
162    * <p>
163    * Specifies the URL of the resource to be embedded. This is the primary source of content
164    * for the object element.
165    *
166    * <p>
167    * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
168    * Strings must be valid URIs.
169    *
170    * <p>
171    * URIs defined by {@link UriResolver} can be used for values.
172    *
173    * @param value The URL of the resource to be embedded.
174    * @return This object.
175    */
176   public Object_ data(String value) {
177      attr("data", value);
178      return this;
179   }
180
181   @Override /* Overridden from HtmlElement */
182   public Object_ dir(String value) {
183      super.dir(value);
184      return this;
185   }
186
187   /**
188    * <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#attr-fae-form">form</a> attribute.
189    *
190    * <p>
191    * Associates the control with a form element.
192    *
193    * @param value The new value for this attribute.
194    * @return This object.
195    */
196   public Object_ form(String value) {
197      attr("form", value);
198      return this;
199   }
200
201   /**
202    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-height">height</a>
203    * attribute.
204    *
205    * <p>
206    * Vertical dimension.
207    *
208    * @param value
209    *    The new value for this attribute.
210    *    Typically a {@link Number} or {@link String}.
211    * @return This object.
212    */
213   public Object_ height(Object value) {
214      attr("height", value);
215      return this;
216   }
217
218   @Override /* Overridden from HtmlElement */
219   public Object_ hidden(Object value) {
220      super.hidden(value);
221      return this;
222   }
223
224   @Override /* Overridden from HtmlElement */
225   public Object_ id(String value) {
226      super.id(value);
227      return this;
228   }
229
230   @Override /* Overridden from HtmlElement */
231   public Object_ lang(String value) {
232      super.lang(value);
233      return this;
234   }
235
236   /**
237    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-object-name">name</a> attribute.
238    *
239    * <p>
240    * Name of nested browsing context.
241    *
242    * @param value The new value for this attribute.
243    * @return This object.
244    */
245   public Object_ name(String value) {
246      attr("name", value);
247      return this;
248   }
249
250   @Override /* Overridden from HtmlElement */
251   public Object_ onabort(String value) {
252      super.onabort(value);
253      return this;
254   }
255
256   @Override /* Overridden from HtmlElement */
257   public Object_ onblur(String value) {
258      super.onblur(value);
259      return this;
260   }
261
262   @Override /* Overridden from HtmlElement */
263   public Object_ oncancel(String value) {
264      super.oncancel(value);
265      return this;
266   }
267
268   @Override /* Overridden from HtmlElement */
269   public Object_ oncanplay(String value) {
270      super.oncanplay(value);
271      return this;
272   }
273
274   @Override /* Overridden from HtmlElement */
275   public Object_ oncanplaythrough(String value) {
276      super.oncanplaythrough(value);
277      return this;
278   }
279
280   @Override /* Overridden from HtmlElement */
281   public Object_ onchange(String value) {
282      super.onchange(value);
283      return this;
284   }
285
286   @Override /* Overridden from HtmlElement */
287   public Object_ onclick(String value) {
288      super.onclick(value);
289      return this;
290   }
291
292   @Override /* Overridden from HtmlElement */
293   public Object_ oncuechange(String value) {
294      super.oncuechange(value);
295      return this;
296   }
297
298   @Override /* Overridden from HtmlElement */
299   public Object_ ondblclick(String value) {
300      super.ondblclick(value);
301      return this;
302   }
303
304   @Override /* Overridden from HtmlElement */
305   public Object_ ondurationchange(String value) {
306      super.ondurationchange(value);
307      return this;
308   }
309
310   @Override /* Overridden from HtmlElement */
311   public Object_ onemptied(String value) {
312      super.onemptied(value);
313      return this;
314   }
315
316   @Override /* Overridden from HtmlElement */
317   public Object_ onended(String value) {
318      super.onended(value);
319      return this;
320   }
321
322   @Override /* Overridden from HtmlElement */
323   public Object_ onerror(String value) {
324      super.onerror(value);
325      return this;
326   }
327
328   @Override /* Overridden from HtmlElement */
329   public Object_ onfocus(String value) {
330      super.onfocus(value);
331      return this;
332   }
333
334   @Override /* Overridden from HtmlElement */
335   public Object_ oninput(String value) {
336      super.oninput(value);
337      return this;
338   }
339
340   @Override /* Overridden from HtmlElement */
341   public Object_ oninvalid(String value) {
342      super.oninvalid(value);
343      return this;
344   }
345
346   @Override /* Overridden from HtmlElement */
347   public Object_ onkeydown(String value) {
348      super.onkeydown(value);
349      return this;
350   }
351
352   @Override /* Overridden from HtmlElement */
353   public Object_ onkeypress(String value) {
354      super.onkeypress(value);
355      return this;
356   }
357
358   @Override /* Overridden from HtmlElement */
359   public Object_ onkeyup(String value) {
360      super.onkeyup(value);
361      return this;
362   }
363
364   @Override /* Overridden from HtmlElement */
365   public Object_ onload(String value) {
366      super.onload(value);
367      return this;
368   }
369
370   @Override /* Overridden from HtmlElement */
371   public Object_ onloadeddata(String value) {
372      super.onloadeddata(value);
373      return this;
374   }
375
376   @Override /* Overridden from HtmlElement */
377   public Object_ onloadedmetadata(String value) {
378      super.onloadedmetadata(value);
379      return this;
380   }
381
382   @Override /* Overridden from HtmlElement */
383   public Object_ onloadstart(String value) {
384      super.onloadstart(value);
385      return this;
386   }
387
388   @Override /* Overridden from HtmlElement */
389   public Object_ onmousedown(String value) {
390      super.onmousedown(value);
391      return this;
392   }
393
394   @Override /* Overridden from HtmlElement */
395   public Object_ onmouseenter(String value) {
396      super.onmouseenter(value);
397      return this;
398   }
399
400   @Override /* Overridden from HtmlElement */
401   public Object_ onmouseleave(String value) {
402      super.onmouseleave(value);
403      return this;
404   }
405
406   @Override /* Overridden from HtmlElement */
407   public Object_ onmousemove(String value) {
408      super.onmousemove(value);
409      return this;
410   }
411
412   @Override /* Overridden from HtmlElement */
413   public Object_ onmouseout(String value) {
414      super.onmouseout(value);
415      return this;
416   }
417
418   @Override /* Overridden from HtmlElement */
419   public Object_ onmouseover(String value) {
420      super.onmouseover(value);
421      return this;
422   }
423
424   @Override /* Overridden from HtmlElement */
425   public Object_ onmouseup(String value) {
426      super.onmouseup(value);
427      return this;
428   }
429
430   @Override /* Overridden from HtmlElement */
431   public Object_ onmousewheel(String value) {
432      super.onmousewheel(value);
433      return this;
434   }
435
436   @Override /* Overridden from HtmlElement */
437   public Object_ onpause(String value) {
438      super.onpause(value);
439      return this;
440   }
441
442   @Override /* Overridden from HtmlElement */
443   public Object_ onplay(String value) {
444      super.onplay(value);
445      return this;
446   }
447
448   @Override /* Overridden from HtmlElement */
449   public Object_ onplaying(String value) {
450      super.onplaying(value);
451      return this;
452   }
453
454   @Override /* Overridden from HtmlElement */
455   public Object_ onprogress(String value) {
456      super.onprogress(value);
457      return this;
458   }
459
460   @Override /* Overridden from HtmlElement */
461   public Object_ onratechange(String value) {
462      super.onratechange(value);
463      return this;
464   }
465
466   @Override /* Overridden from HtmlElement */
467   public Object_ onreset(String value) {
468      super.onreset(value);
469      return this;
470   }
471
472   @Override /* Overridden from HtmlElement */
473   public Object_ onresize(String value) {
474      super.onresize(value);
475      return this;
476   }
477
478   @Override /* Overridden from HtmlElement */
479   public Object_ onscroll(String value) {
480      super.onscroll(value);
481      return this;
482   }
483
484   @Override /* Overridden from HtmlElement */
485   public Object_ onseeked(String value) {
486      super.onseeked(value);
487      return this;
488   }
489
490   @Override /* Overridden from HtmlElement */
491   public Object_ onseeking(String value) {
492      super.onseeking(value);
493      return this;
494   }
495
496   @Override /* Overridden from HtmlElement */
497   public Object_ onselect(String value) {
498      super.onselect(value);
499      return this;
500   }
501
502   @Override /* Overridden from HtmlElement */
503   public Object_ onshow(String value) {
504      super.onshow(value);
505      return this;
506   }
507
508   @Override /* Overridden from HtmlElement */
509   public Object_ onstalled(String value) {
510      super.onstalled(value);
511      return this;
512   }
513
514   @Override /* Overridden from HtmlElement */
515   public Object_ onsubmit(String value) {
516      super.onsubmit(value);
517      return this;
518   }
519
520   @Override /* Overridden from HtmlElement */
521   public Object_ onsuspend(String value) {
522      super.onsuspend(value);
523      return this;
524   }
525
526   @Override /* Overridden from HtmlElement */
527   public Object_ ontimeupdate(String value) {
528      super.ontimeupdate(value);
529      return this;
530   }
531
532   @Override /* Overridden from HtmlElement */
533   public Object_ ontoggle(String value) {
534      super.ontoggle(value);
535      return this;
536   }
537
538   @Override /* Overridden from HtmlElement */
539   public Object_ onvolumechange(String value) {
540      super.onvolumechange(value);
541      return this;
542   }
543
544   @Override /* Overridden from HtmlElement */
545   public Object_ onwaiting(String value) {
546      super.onwaiting(value);
547      return this;
548   }
549
550   @Override /* Overridden from HtmlElement */
551   public Object_ spellcheck(Object value) {
552      super.spellcheck(value);
553      return this;
554   }
555
556   @Override /* Overridden from HtmlElement */
557   public Object_ style(String value) {
558      super.style(value);
559      return this;
560   }
561
562   @Override /* Overridden from HtmlElement */
563   public Object_ tabindex(Object value) {
564      super.tabindex(value);
565      return this;
566   }
567
568   @Override /* Overridden from HtmlElement */
569   public Object_ title(String value) {
570      super.title(value);
571      return this;
572   }
573
574   @Override /* Overridden from HtmlElement */
575   public Object_ translate(Object value) {
576      super.translate(value);
577      return this;
578   }
579
580   /**
581    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-object-type">type</a> attribute.
582    *
583    * <p>
584    * Type of embedded resource.
585    *
586    * @param value The new value for this attribute.
587    * @return This object.
588    */
589   public Object_ type(String value) {
590      attr("type", value);
591      return this;
592   }
593
594   /**
595    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-object-typemustmatch">typemustmatch</a>
596    * attribute.
597    *
598    * <p>
599    * Whether the type attribute and the Content-Type value need to match for the resource to be used.
600    *
601    * @param value
602    *    The new value for this attribute.
603    *    Typically a {@link Boolean} or {@link String}.
604    * @return This object.
605    */
606   public Object_ typemustmatch(Object value) {
607      attr("typemustmatch", value);
608      return this;
609   }
610
611   /**
612    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-hyperlink-usemap">usemap</a>
613    * attribute.
614    *
615    * <p>
616    * Name of image map to use.
617    *
618    * @param value The new value for this attribute.
619    * @return This object.
620    */
621   public Object_ usemap(String value) {
622      attr("usemap", value);
623      return this;
624   }
625
626   /**
627    * <a class="doclink" href="https://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-width">width</a> attribute.
628    *
629    * <p>
630    * Horizontal dimension.
631    *
632    * @param value
633    *    The new value for this attribute.
634    *    Typically a {@link Number} or {@link String}.
635    * @return This object.
636    */
637   public Object_ width(Object value) {
638      attr("width", value);
639      return this;
640   }
641}