View Javadoc
1   /*
2    * Copyright (c) 2002-2026 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.html;
16  
17  import java.util.Map;
18  
19  import org.htmlunit.SgmlPage;
20  
21  /**
22   * Wrapper for the HTML element "optgroup".
23   *
24   * @author Mike Bowler
25   * @author David K. Taylor
26   * @author Christian Sell
27   * @author David D. Kilzer
28   * @author Ahmed Ashour
29   * @author Daniel Gredler
30   * @author Ronald Brill
31   * @author Frank Danek
32   */
33  public class HtmlOptionGroup extends HtmlElement implements DisabledElement {
34  
35      /** The HTML tag represented by this element. */
36      public static final String TAG_NAME = "optgroup";
37  
38      /**
39       * Creates an instance of HtmlOptionGroup.
40       *
41       * @param qualifiedName the qualified name of the element type to instantiate
42       * @param page the HtmlPage that contains this element
43       * @param attributes the initial attributes
44       */
45      HtmlOptionGroup(final String qualifiedName, final SgmlPage page,
46              final Map<String, DomAttr> attributes) {
47          super(qualifiedName, page, attributes);
48      }
49  
50      /**
51       * {@inheritDoc}
52       */
53      @Override
54      public final String getDisabledAttribute() {
55          return getAttributeDirect(ATTRIBUTE_DISABLED);
56      }
57  
58      /**
59       * Returns the value of the attribute {@code label}. Refer to the
60       * <a href="http://www.w3.org/TR/html401/">HTML 4.01</a>
61       * documentation for details on the use of this attribute.
62       *
63       * @return the value of the attribute {@code label} or an empty string if that attribute isn't defined
64       */
65      public final String getLabelAttribute() {
66          return getAttributeDirect("label");
67      }
68  
69      /**
70       * Sets the value of the attribute {@code label}. Refer to the
71       * <a href="http://www.w3.org/TR/html401/">HTML 4.01</a>
72       * documentation for details on the use of this attribute.
73       *
74       * @param newLabel the value of the attribute {@code label}
75       */
76      public final void setLabelAttribute(final String newLabel) {
77          setAttribute("label", newLabel);
78      }
79  
80      /**
81       * Gets the enclosing select of this HtmlOptionGroup.
82       * @return {@code null} if no select is found (for instance malformed html)
83       */
84      public HtmlSelect getEnclosingSelect() {
85          return (HtmlSelect) getEnclosingElement(HtmlSelect.TAG_NAME);
86      }
87  
88      /**
89       * {@inheritDoc}
90       */
91      @Override
92      public DisplayStyle getDefaultStyleDisplay() {
93          return DisplayStyle.BLOCK;
94      }
95  }