Package org.htmlunit.html

# Class HtmlOption

java.lang.Object
org.htmlunit.html.DomNode
org.htmlunit.html.DomNamespaceNode
org.htmlunit.html.DomElement
org.htmlunit.html.HtmlElement
org.htmlunit.html.HtmlOption

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `DisabledElement`, `Element`, `Node`

public class HtmlOption extends HtmlElement implements DisabledElement
Wrapper for the HTML element "option".

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.htmlunit.html.HtmlElement

  `HtmlElement.DisplayStyle`

  ## Nested classes/interfaces inherited from class org.htmlunit.html.DomElement

  `DomElement.ChildElementsIterator`

  ## Nested classes/interfaces inherited from class org.htmlunit.html.DomNode

  `DomNode.ChildIterator, DomNode.DescendantDomElementsIterator, DomNode.DescendantDomNodesIterator, DomNode.DescendantElementsIterator<T extends DomNode>, DomNode.DescendantHtmlElementsIterator`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `TAG_NAME`
  The HTML tag represented by this element.

  ### Fields inherited from class org.htmlunit.html.HtmlElement

  `ATTRIBUTE_CHECKED, ATTRIBUTE_HIDDEN, ATTRIBUTE_REQUIRED, TAB_INDEX_OUT_OF_BOUNDS`

  ### Fields inherited from class org.htmlunit.html.DomElement

  `ATTRIBUTE_NOT_DEFINED, ATTRIBUTE_VALUE_EMPTY, ID_ATTRIBUTE, NAME_ATTRIBUTE, SRC_ATTRIBUTE, TYPE_ATTRIBUTE, VALUE_ATTRIBUTE`

  ### Fields inherited from class org.htmlunit.html.DomNode

  `PROPERTY_ELEMENT, READY_STATE_COMPLETE, READY_STATE_INTERACTIVE, READY_STATE_LOADED, READY_STATE_LOADING, READY_STATE_UNINITIALIZED`

  ### Fields inherited from interface org.htmlunit.html.DisabledElement

  `ATTRIBUTE_DISABLED`

  ### Fields inherited from interface org.w3c.dom.Node

  `ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `basicRemove()`
  Cuts off all relationships this node has with siblings and parents.
  `protected boolean`
  `doClickStateUpdate(boolean shiftKey, boolean ctrlKey)`
  Selects the option if it's not already selected.
  `HtmlElement.DisplayStyle`
  `getDefaultStyleDisplay()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Returns the default display style.
  `final String`
  `getDisabledAttribute()`
  Returns the value of the attribute `disabled`.
  `HtmlSelect`
  `getEnclosingSelect()`
  Gets the enclosing select of this option.
  `final String`
  `getLabelAttribute()`
  Returns the value of the attribute `label`.
  `final String`
  `getSelectedAttribute()`
  Returns the value of the attribute `selected`.
  `String`
  `getText()`
  Gets the text.
  `final String`
  `getValueAttribute()`
  Returns the value of the attribute `value`.
  `boolean`
  `handles(org.htmlunit.javascript.host.event.Event event)`
  Indicates if the provided event can be applied to this node.
  `void`
  `insertBefore(DomNode newNode)`
  Inserts the specified node as a new child node before this node into the child relationship this node is a part of.
  `final boolean`
  `isDefaultSelected()`
  Returns whether this Option is selected by default.
  `final boolean`
  `isDisabled()`
  Returns `true` if the disabled attribute is set for this element.
  `boolean`
  `isSelected()`
  Returns `true` if this option is currently selected.
  `protected boolean`
  `isStateUpdateFirst()`
  Returns `true` if state updates should be done before onclick event handling.
  `Page`
  `mouseOver(boolean shiftKey, boolean ctrlKey, boolean altKey, int button)`
  Simulates moving the mouse over this element, returning the page which this element's window contains after the mouse move.
  `protected void`
  `printOpeningTagContentAsXml(PrintWriter printWriter)`
  Prints the content between "<" and ">" (or "/>") in the output of the tag name and its attributes in XML format.
  `void`
  `reset()`
  Resets the option to its original selected state.
  `final void`
  `setLabelAttribute(String newLabel)`
  Sets the value of the attribute `label`.
  `Page`
  `setSelected(boolean selected)`
  Sets the selected state of this option.
  `void`
  `setSelectedFromJavaScript(boolean selected)`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Sets the selected state of this option.
  `void`
  `setText(String text)`
  Sets the text for this HtmlOption.
  `final void`
  `setValueAttribute(String newValue)`
  Sets the value of the attribute `value`.

  ### Methods inherited from class org.htmlunit.html.HtmlElement

  `acceptChar, addHtmlAttributeChangeListener, appendChildIfNoneExists, checkChildHierarchy, cloneNode, detach, doType, doType, fireHtmlAttributeAdded, fireHtmlAttributeRemoved, fireHtmlAttributeReplaced, getCanonicalXPath, getElementsByAttribute, getEnclosingElement, getEnclosingForm, getEnclosingFormOrDie, getLangAttribute, getNodeName, getOnClickAttribute, getOnDblClickAttribute, getOneHtmlElementByAttribute, getOnKeyDownAttribute, getOnKeyPressAttribute, getOnKeyUpAttribute, getOnMouseDownAttribute, getOnMouseMoveAttribute, getOnMouseOutAttribute, getOnMouseOverAttribute, getOnMouseUpAttribute, getSrcAttributeNormalized, getTabIndex, getTextDirectionAttribute, getXmlLangAttribute, hasEventHandlers, isAltPressed, isAttributeCaseSensitive, isCtrlPressed, isDisplayed, isHidden, isOptional, isRequired, isRequiredSupported, isShiftPressed, isSubmittableByEnter, isValid, notifyAttributeChangeListeners, removeAttribute, removeChild, removeHtmlAttributeChangeListener, setAttributeNode, setAttributeNS, setHidden, setHidden, setOwningForm, setRequired, type, type, type, type, typeDone`

  ### Methods inherited from class org.htmlunit.html.DomElement

  `blur, click, click, click, click, click, dblClick, dblClick, doClickFireChangeEvent, doClickFireClickEvent, fireEvent, fireEvent, focus, getAttribute, getAttributeDirect, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getAttributesMap, getChildElementCount, getChildElements, getElementsByTagName, getElementsByTagNameNS, getEventTargetElement, getFirstElementChild, getId, getLastElementChild, getNodeType, getSchemaTypeInfo, getStaticElementsByTagName, getStyleElement, getStyleElementCaseInSensitive, getStyleMap, getTagName, hasAttribute, hasAttributeNS, hasAttributes, isDisabledElementAndDisabled, isEmptyXmlTagExpanded, isMouseOver, matches, mouseDown, mouseDown, mouseMove, mouseMove, mouseOut, mouseOut, mouseOver, mouseUp, mouseUp, preventDefault, printXml, propagateClickStateUpdateToParent, removeAttributeNode, removeAttributeNS, removeFocus, removeStyleAttribute, replaceStyleAttribute, rightClick, rightClick, setAttribute, setAttributeNodeNS, setAttributeNS, setDefaults, setId, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setInnerHtml, setNodeValue, toString, writeStyleToElement`

  ### Methods inherited from class org.htmlunit.html.DomNamespaceNode

  `getLocalName, getLowercaseName, getNamespaceURI, getPrefix, getQualifiedName, processImportNode, setPrefix`

  ### Methods inherited from class org.htmlunit.html.DomNode

  `addCharacterDataChangeListener, addDomChangeListener, appendChild, asNormalizedText, asXml, closest, compareDocumentPosition, fireCharacterDataChanged, fireNodeAdded, fireNodeDeleted, getAncestors, getBaseURI, getByXPath, getByXPath, getChildNodes, getChildren, getDescendants, getDomElementDescendants, getEndColumnNumber, getEndLineNumber, getFeature, getFirstByXPath, getFirstByXPath, getFirstChild, getHtmlElementDescendants, getHtmlPageOrNull, getIndex, getLastChild, getNextElementSibling, getNextSibling, getNodeValue, getOwnerDocument, getPage, getParentNode, getPreviousElementSibling, getPreviousSibling, getReadyState, getScriptableObject, getSelectorList, getStartColumnNumber, getStartLineNumber, getTextContent, getUserData, getVisibleText, hasChildNodes, hasFeature, insertBefore, isAncestorOf, isAncestorOfAny, isAttachedToPage, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, mayBeDisplayed, normalize, notifyIncorrectness, onAddedToDocumentFragment, onAddedToPage, onAllChildrenAddedToPage, parseHtmlSnippet, printChildrenAsXml, querySelector, querySelectorAll, quietlyRemoveAndMoveChildrenTo, remove, removeAllChildren, removeCharacterDataChangeListener, removeChild, removeDomChangeListener, replace, replaceChild, setEndLocation, setParentNode, setReadyState, setScriptableObject, setStartLocation, setTextContent, setUserData`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface org.w3c.dom.Node

  `appendChild, compareDocumentPosition, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setPrefix, setTextContent, setUserData`

- ## Field Details

  - ### TAG_NAME

    public static final String TAG_NAME
    The HTML tag represented by this element.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### isSelected

    public boolean isSelected()
    Returns `true` if this option is currently selected.
    Returns:
      `true` if this option is currently selected

  - ### setSelected

    public Page setSelected(boolean selected)
    Sets the selected state of this option. This will possibly also change the selected properties of sibling option elements.
    Parameters:
      `selected` - true if this option should be selected
    Returns:
      the page that occupies this window after this change is made (may or may not be the same as the original page)

  - ### setSelectedFromJavaScript

    public void setSelectedFromJavaScript(boolean selected)
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Sets the selected state of this option. This will possibly also change the selected properties of sibling option elements.
    Parameters:
      `selected` - true if this option should be selected

  - ### insertBefore

    public void insertBefore(DomNode newNode)
    Inserts the specified node as a new child node before this node into the child relationship this node is a part of. If the specified node is this node, this method is a no-op.
    Overrides:
      `insertBefore` in class `DomNode`
    Parameters:
      `newNode` - the new node to insert

  - ### getEnclosingSelect

    public HtmlSelect getEnclosingSelect()
    Gets the enclosing select of this option.
    Returns:
      `null` if no select is found (for instance malformed HTML)

  - ### reset

    public void reset()
    Resets the option to its original selected state.

  - ### getSelectedAttribute

    public final String getSelectedAttribute()
    Returns the value of the attribute `selected`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `selected` or an empty string if that attribute isn't defined.

  - ### isDefaultSelected

    public final boolean isDefaultSelected()
    Returns whether this Option is selected by default. That is whether the "selected" attribute exists when the Option is constructed. This also determines the value of getSelectedAttribute() after a reset() on the form.
    Returns:
      whether the option is selected by default

  - ### isDisabled

    public final boolean isDisabled()
    Description copied from interface: `DisabledElement`
    Returns `true` if the disabled attribute is set for this element.
    Specified by:
      `isDisabled` in interface `DisabledElement`
    Returns:
      `true` if the disabled attribute is set for this element

  - ### getDisabledAttribute

    public final String getDisabledAttribute()
    Returns the value of the attribute `disabled`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Specified by:
      `getDisabledAttribute` in interface `DisabledElement`
    Returns:
      the value of the attribute `disabled` or an empty string if that attribute isn't defined

  - ### getLabelAttribute

    public final String getLabelAttribute()
    Returns the value of the attribute `label`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `label` or an empty string if that attribute isn't defined

  - ### setLabelAttribute

    public final void setLabelAttribute(String newLabel)
    Sets the value of the attribute `label`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Parameters:
      `newLabel` - the value of the attribute `label`

  - ### getValueAttribute

    public final String getValueAttribute()
    Returns the value of the attribute `value`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `value`
    See Also:
      - initial value if value attribute is not set

  - ### setValueAttribute

    public final void setValueAttribute(String newValue)
    Sets the value of the attribute `value`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Parameters:
      `newValue` - the value of the attribute `value`

  - ### doClickStateUpdate

    protected boolean doClickStateUpdate(boolean shiftKey, boolean ctrlKey) throws IOException
    Selects the option if it's not already selected. This method implements the control state update part of the click action.

    The default implementation only calls doClickStateUpdate on parent's DomElement (if any). Subclasses requiring different behavior (like `HtmlSubmitInput`) will override this method.

    Overrides:
      `doClickStateUpdate` in class `DomElement`
    Parameters:
      `shiftKey` - `true` if SHIFT is pressed
      `ctrlKey` - `true` if CTRL is pressed
    Returns:
      true if doClickFireEvent method has to be called later on (to signal, that the value was changed)
    Throws:
      `IOException` - if an IO error occurs

  - ### isStateUpdateFirst

    protected boolean isStateUpdateFirst()
    Returns `true` if state updates should be done before onclick event handling. This method returns `false` by default, and is expected to be overridden to return `true` by derived classes like `HtmlCheckBoxInput`.
    Overrides:
      `isStateUpdateFirst` in class `DomElement`
    Returns:
      `true` if state updates should be done before onclick event handling

  - ### printOpeningTagContentAsXml

    protected void printOpeningTagContentAsXml(PrintWriter printWriter)
    Prints the content between "<" and ">" (or "/>") in the output of the tag name and its attributes in XML format.
    Overrides:
      `printOpeningTagContentAsXml` in class `DomElement`
    Parameters:
      `printWriter` - the writer to print in

  - ### setText

    public void setText(String text)
    Sets the text for this HtmlOption.
    Parameters:
      `text` - the text

  - ### getText

    public String getText()
    Gets the text.
    Returns:
      the text of this option.

  - ### mouseOver

    public Page mouseOver(boolean shiftKey, boolean ctrlKey, boolean altKey, int button)
    Simulates moving the mouse over this element, returning the page which this element's window contains after the mouse move. The returned page may or may not be the same as the original page, depending on JavaScript event handlers, etc.
    Overrides:
      `mouseOver` in class `DomElement`
    Parameters:
      `shiftKey` - `true` if SHIFT is pressed during the mouse move
      `ctrlKey` - `true` if CTRL is pressed during the mouse move
      `altKey` - `true` if ALT is pressed during the mouse move
      `button` - the button code, must be `MouseEvent.BUTTON_LEFT`, `MouseEvent.BUTTON_MIDDLE` or `MouseEvent.BUTTON_RIGHT`
    Returns:
      the page which this element's window contains after the mouse move

  - ### getDefaultStyleDisplay

    public HtmlElement.DisplayStyle getDefaultStyleDisplay()
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Returns the default display style.
    Overrides:
      `getDefaultStyleDisplay` in class `HtmlElement`
    Returns:
      the default display style

  - ### handles

    public boolean handles(org.htmlunit.javascript.host.event.Event event)
    Indicates if the provided event can be applied to this node. Overwrite this.
    Overrides:
      `handles` in class `HtmlElement`
    Parameters:
      `event` - the event
    Returns:
      `false` if the event can't be applied

  - ### basicRemove

    protected void basicRemove()
    Cuts off all relationships this node has with siblings and parents.
    Overrides:
      `basicRemove` in class `DomNode`