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"><object></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}