1 /*
2 * Copyright (c) 2002-2025 Gargoyle Software Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 * https://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 package org.htmlunit.javascript.host.html;
16
17 import static org.htmlunit.html.DomElement.ATTRIBUTE_NOT_DEFINED;
18
19 import org.htmlunit.html.HtmlOptionGroup;
20 import org.htmlunit.javascript.configuration.JsxClass;
21 import org.htmlunit.javascript.configuration.JsxConstructor;
22 import org.htmlunit.javascript.configuration.JsxGetter;
23 import org.htmlunit.javascript.configuration.JsxSetter;
24
25 /**
26 * The JavaScript object {@code HTMLOptGroupElement}.
27 *
28 * @author Ahmed Ashour
29 * @author Ronald Brill
30 */
31 @JsxClass(domClass = HtmlOptionGroup.class)
32 public class HTMLOptGroupElement extends HTMLElement {
33
34 /**
35 * JavaScript constructor.
36 */
37 @Override
38 @JsxConstructor
39 public void jsConstructor() {
40 super.jsConstructor();
41 }
42
43 /**
44 * {@inheritDoc} Overridden to modify browser configurations.
45 */
46 @Override
47 @JsxGetter
48 public boolean isDisabled() {
49 return super.isDisabled();
50 }
51
52 /**
53 * {@inheritDoc} Overridden to modify browser configurations.
54 */
55 @Override
56 @JsxSetter
57 public void setDisabled(final boolean disabled) {
58 super.setDisabled(disabled);
59 }
60
61 /**
62 * Returns the value of the {@code label} property.
63 * @return the value of the {@code label} property
64 */
65 @JsxGetter
66 public String getLabel() {
67 final String label = getDomNodeOrDie().getAttributeDirect("label");
68 if (ATTRIBUTE_NOT_DEFINED == label) {
69 return "";
70 }
71 return label;
72 }
73
74 /**
75 * Updates the value of the {@code label} property.
76 * @param newLabel the new value
77 */
78 @JsxSetter
79 public void setLabel(final String newLabel) {
80 getDomNodeOrDie().setAttribute("label", newLabel);
81 }
82 }