com.gargoylesoftware.htmlunit.html
Class HtmlSelect

java.lang.Object
  extended by com.gargoylesoftware.htmlunit.html.DomNode
      extended by com.gargoylesoftware.htmlunit.html.DomNamespaceNode
          extended by com.gargoylesoftware.htmlunit.html.DomElement
              extended by com.gargoylesoftware.htmlunit.html.HtmlElement
                  extended by com.gargoylesoftware.htmlunit.html.HtmlSelect
All Implemented Interfaces:
DisabledElement, FormFieldWithNameHistory, SubmittableElement, Serializable, Cloneable, Element, Node

public class HtmlSelect
extends HtmlElement
implements DisabledElement, SubmittableElement, FormFieldWithNameHistory

Wrapper for the HTML element "select".

Version:
$Revision: 5864 $
Author:
Mike Bowler, Mike J. Bresnahan, David K. Taylor, Christian Sell, David D. Kilzer, Marc Guillemot, Daniel Gredler, Ahmed Ashour
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.gargoylesoftware.htmlunit.html.HtmlElement
HtmlElement.ChildElementsIterator
 
Nested classes/interfaces inherited from class com.gargoylesoftware.htmlunit.html.DomNode
DomNode.ChildIterator, DomNode.DescendantElementsIterator<T extends DomNode>
 
Field Summary
static String TAG_NAME
          The HTML tag represented by this element.
 
Fields inherited from class com.gargoylesoftware.htmlunit.html.HtmlElement
TAB_INDEX_OUT_OF_BOUNDS
 
Fields inherited from class com.gargoylesoftware.htmlunit.html.DomElement
ATTRIBUTE_NOT_DEFINED, ATTRIBUTE_VALUE_EMPTY
 
Fields inherited from class com.gargoylesoftware.htmlunit.html.DomNode
AS_TEXT_BLANK, AS_TEXT_BLOCK_SEPARATOR, AS_TEXT_NEW_LINE, AS_TEXT_TAB, PROPERTY_ELEMENT, READY_STATE_COMPLETE, READY_STATE_INTERACTIVE, READY_STATE_LOADED, READY_STATE_LOADING, READY_STATE_UNINITIALIZED
 
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
 DomNode appendChild(Node node)
          
 void appendOption(HtmlOption newOption)
          Add a new option at the end.
 String asText()
          Returns a text representation of this element that represents what would be visible to the user if this page was shown in a web browser.
 String getDefaultValue()
          Returns the default value to use when this element gets reset, if applicable.
 String getDisabledAttribute()
          Returns the value of the attribute "disabled".
 String getMultipleAttribute()
          Returns the value of the attribute "multiple".
 String getNameAttribute()
          Returns the value of the attribute "name".
 String getOnBlurAttribute()
          Returns the value of the attribute "onblur".
 String getOnChangeAttribute()
          Returns the value of the attribute "onchange".
 String getOnFocusAttribute()
          Returns the value of the attribute "onfocus".
 HtmlOption getOption(int index)
          Returns the indexed option.
 HtmlOption getOptionByText(String text)
          Returns the HtmlOption object that has the specified text.
 HtmlOption getOptionByValue(String value)
          Returns the HtmlOption object that corresponds to the specified value.
 List<HtmlOption> getOptions()
          Returns all of the options in this select element.
 int getOptionSize()
          Returns the number of options.
 String getOriginalName()
          Gets the first value of the name attribute of this field before any change.
 Collection<String> getPreviousNames()
          Get all the names this field had before the current one.
 List<HtmlOption> getSelectedOptions()
          Returns all of the currently selected options.
 String getSizeAttribute()
          Returns the value of the attribute "size".
 NameValuePair[] getSubmitKeyValuePairs()
          Returns an array of NameValuePairs that are the values that will be sent back to the server whenever this element's containing form is submitted.
 String getTabIndexAttribute()
          Returns the value of the attribute "tabindex".
 boolean isDefaultChecked()
          Returns the default checked state to use when this element gets reset, if applicable.
 boolean isDisabled()
          Returns true if the disabled attribute is set for this element.
 boolean isMultipleSelectEnabled()
          Returns true if this select is using "multiple select".
protected  void onAllChildrenAddedToPage(boolean postponed)
          If we were given an invalid size attribute, normalize it.
 void removeOption(int index)
          Remove an option at the given index.
 void replaceOption(int index, HtmlOption newOption)
          Replace an option at the given index with a new option.
 void reset()
          Returns the value of this element to what it was at the time the page was loaded.
 void setAttributeNS(String namespaceURI, String qualifiedName, String attributeValue)
          Sets the value of the specified attribute.
 void setDefaultChecked(boolean defaultChecked)
          Sets the default checked state to use when this element gets reset, if applicable.
 void setDefaultValue(String defaultValue)
          Sets the default value to use when this element gets reset, if applicable.
 void setOptionSize(int newLength)
          Remove options by reducing the "length" property.
 Page setSelectedAttribute(HtmlOption selectedOption, boolean isSelected)
          Sets the "selected" state of the specified option.
 Page setSelectedAttribute(HtmlOption selectedOption, boolean isSelected, boolean invokeOnFocus)
          INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Sets the "selected" state of the specified option.
 Page setSelectedAttribute(String optionValue, boolean isSelected)
          Sets the "selected" state of the specified option.
 
Methods inherited from class com.gargoylesoftware.htmlunit.html.HtmlElement
addHtmlAttributeChangeListener, appendChildIfNoneExists, blur, checkChildHierarchy, click, click, click, dblClick, dblClick, doClickAction, doType, fireEvent, fireEvent, fireHtmlAttributeAdded, fireHtmlAttributeRemoved, fireHtmlAttributeReplaced, focus, getCanonicalXPath, getChildElements, getElementById, getElementsByAttribute, getEnclosingElement, getEnclosingForm, getEnclosingFormOrDie, getEventTargetElement, getHtmlElementsByTagName, getHtmlElementsByTagNames, getId, getLangAttribute, getNodeName, getOnClickAttribute, getOnDblClickAttribute, getOneHtmlElementByAttribute, getOnKeyDownAttribute, getOnKeyPressAttribute, getOnKeyUpAttribute, getOnMouseDownAttribute, getOnMouseMoveAttribute, getOnMouseOutAttribute, getOnMouseOverAttribute, getOnMouseUpAttribute, getTabIndex, getTextDirectionAttribute, getXmlLangAttribute, hasEventHandlers, hasHtmlElementWithId, isAttributeCaseSensitive, isStateUpdateFirst, isSubmittableByEnter, mouseDown, mouseDown, mouseMove, mouseMove, mouseOut, mouseOut, mouseOver, mouseOver, mouseUp, mouseUp, preventDefault, removeAttribute, removeChild, removeEventHandler, removeHtmlAttributeChangeListener, rightClick, rightClick, setEventHandler, setEventHandler, setId, toString, type, type, type, type
 
Methods inherited from class com.gargoylesoftware.htmlunit.html.DomElement
cloneNode, getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getAttributesMap, getElementsByTagName, getElementsByTagNameNS, getNodeType, getSchemaTypeInfo, getTagName, hasAttribute, hasAttributeNS, hasAttributes, isEmptyXmlTagExpanded, namespaces, printOpeningTagContentAsXml, printXml, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setIdAttribute, setIdAttributeNode, setIdAttributeNS
 
Methods inherited from class com.gargoylesoftware.htmlunit.html.DomNamespaceNode
getLocalName, getNamespaceURI, getPrefix, getQualifiedName, setPrefix
 
Methods inherited from class com.gargoylesoftware.htmlunit.html.DomNode
addDomChangeListener, asXml, compareDocumentPosition, fireNodeAdded, fireNodeDeleted, getAllHtmlChildElements, getAncestors, getBaseURI, getByXPath, getChildNodes, getChildren, getDescendants, getEndColumnNumber, getEndLineNumber, getFeature, getFirstByXPath, getFirstChild, getHtmlElementDescendants, getIndex, getLastChild, getNextSibling, getNodeValue, getOwnerDocument, getPage, getParentNode, getPreviousSibling, getReadyState, getScriptObject, getStartColumnNumber, getStartLineNumber, getTextContent, getUserData, hasChildNodes, insertBefore, insertBefore, isAncestorOf, isAncestorOfAny, isBlock, isDefaultNamespace, isDisplayed, isEqualNode, isSameNode, isSupported, isTrimmedText, lookupNamespaceURI, lookupPrefix, mayBeDisplayed, normalize, notifyIncorrectness, onAddedToPage, printChildrenAsXml, remove, removeAllChildren, removeChild, removeDomChangeListener, replace, replaceChild, setNextSibling, setNodeValue, setParentNode, setPreviousSibling, setReadyState, setScriptObject, 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
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, setNodeValue, setPrefix, setTextContent, setUserData
 

Field Detail

TAG_NAME

public static final String TAG_NAME
The HTML tag represented by this element.

See Also:
Constant Field Values
Method Detail

onAllChildrenAddedToPage

protected void onAllChildrenAddedToPage(boolean postponed)
If we were given an invalid size attribute, normalize it. Then set a default selected option if none was specified and the size is 1 or less and this isn't a multiple selection input.

Overrides:
onAllChildrenAddedToPage in class DomNode
Parameters:
postponed - whether to use PostponedAction or no

getSelectedOptions

public List<HtmlOption> getSelectedOptions()

Returns all of the currently selected options. The following special conditions can occur if the element is in single select mode:

Returns:
the currently selected options

getOptions

public List<HtmlOption> getOptions()
Returns all of the options in this select element.

Returns:
all of the options in this select element

getOption

public HtmlOption getOption(int index)
Returns the indexed option.

Parameters:
index - the index
Returns:
the option specified by the index

getOptionSize

public int getOptionSize()
Returns the number of options.

Returns:
the number of options

setOptionSize

public void setOptionSize(int newLength)
Remove options by reducing the "length" property. This has no effect if the length is set to the same or greater.

Parameters:
newLength - the new length property value

removeOption

public void removeOption(int index)
Remove an option at the given index.

Parameters:
index - the index of the option to remove

replaceOption

public void replaceOption(int index,
                          HtmlOption newOption)
Replace an option at the given index with a new option.

Parameters:
index - the index of the option to remove
newOption - the new option to replace to indexed option

appendOption

public void appendOption(HtmlOption newOption)
Add a new option at the end.

Parameters:
newOption - the new option to add

appendChild

public DomNode appendChild(Node node)

Specified by:
appendChild in interface Node
Overrides:
appendChild in class DomNode

setSelectedAttribute

public Page setSelectedAttribute(String optionValue,
                                 boolean isSelected)
Sets the "selected" state of the specified option. If this "select" element is single-select, then calling this method will deselect all other options. Only options that are actually in the document may be selected.

Parameters:
isSelected - true if the option is to become selected
optionValue - the value of the option that is to change
Returns:
the page that occupies this window after this change is made (may or may not be the same as the original page)

setSelectedAttribute

public Page setSelectedAttribute(HtmlOption selectedOption,
                                 boolean isSelected)
Sets the "selected" state of the specified option. If this "select" element is single-select, then calling this method will deselect all other options. Only options that are actually in the document may be selected.

Parameters:
isSelected - true if the option is to become selected
selectedOption - the value of the option that is to change
Returns:
the page that occupies this window after this change is made (may or may not be the same as the original page)

setSelectedAttribute

public Page setSelectedAttribute(HtmlOption selectedOption,
                                 boolean isSelected,
                                 boolean invokeOnFocus)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Sets the "selected" state of the specified option. If this "select" element is single-select, then calling this method will deselect all other options. Only options that are actually in the document may be selected.

Parameters:
isSelected - true if the option is to become selected
selectedOption - the value of the option that is to change
invokeOnFocus - whether to set focus or no.
Returns:
the page that occupies this window after this change is made (may or may not be the same as the original page)

getSubmitKeyValuePairs

public NameValuePair[] getSubmitKeyValuePairs()

Returns an array of NameValuePairs that are the values that will be sent back to the server whenever this element's containing form is submitted.

THIS METHOD IS INTENDED FOR THE USE OF THE FRAMEWORK ONLY AND SHOULD NOT BE USED BY CONSUMERS OF HTMLUNIT. USE AT YOUR OWN RISK.

Specified by:
getSubmitKeyValuePairs in interface SubmittableElement
Returns:
the values that will be sent back to the server whenever this element's containing form is submitted

reset

public void reset()
Returns the value of this element to what it was at the time the page was loaded.

Specified by:
reset in interface SubmittableElement

setDefaultValue

public void setDefaultValue(String defaultValue)
Sets the default value to use when this element gets reset, if applicable.

Specified by:
setDefaultValue in interface SubmittableElement
Parameters:
defaultValue - the default value to use when this element gets reset, if applicable
See Also:
SubmittableElement.setDefaultValue(String)

getDefaultValue

public String getDefaultValue()
Returns the default value to use when this element gets reset, if applicable.

Specified by:
getDefaultValue in interface SubmittableElement
Returns:
the default value to use when this element gets reset, if applicable
See Also:
SubmittableElement.setDefaultValue(String)

setDefaultChecked

public void setDefaultChecked(boolean defaultChecked)
Sets the default checked state to use when this element gets reset, if applicable. This implementation is empty; only checkboxes and radio buttons really care what the default checked value is.

Specified by:
setDefaultChecked in interface SubmittableElement
Parameters:
defaultChecked - the default checked state to use when this element gets reset, if applicable
See Also:
SubmittableElement.setDefaultChecked(boolean), HtmlRadioButtonInput.setDefaultChecked(boolean), HtmlCheckBoxInput.setDefaultChecked(boolean)

isDefaultChecked

public boolean isDefaultChecked()
Returns the default checked state to use when this element gets reset, if applicable. This implementation returns false; only checkboxes and radio buttons really care what the default checked value is.

Specified by:
isDefaultChecked in interface SubmittableElement
Returns:
the default checked state to use when this element gets reset, if applicable
See Also:
SubmittableElement.isDefaultChecked(), HtmlRadioButtonInput.isDefaultChecked(), HtmlCheckBoxInput.isDefaultChecked()

isMultipleSelectEnabled

public boolean isMultipleSelectEnabled()
Returns true if this select is using "multiple select".

Returns:
true if this select is using "multiple select"

getOptionByValue

public HtmlOption getOptionByValue(String value)
                            throws ElementNotFoundException
Returns the HtmlOption object that corresponds to the specified value.

Parameters:
value - the value to search by
Returns:
the HtmlOption object that corresponds to the specified value
Throws:
ElementNotFoundException - If a particular element could not be found in the DOM model

getOptionByText

public HtmlOption getOptionByText(String text)
                           throws ElementNotFoundException
Returns the HtmlOption object that has the specified text.

Parameters:
text - the text to search by
Returns:
the HtmlOption object that has the specified text
Throws:
ElementNotFoundException - If a particular element could not be found in the DOM model

asText

public String asText()
Returns a text representation of this element that represents what would be visible to the user if this page was shown in a web browser. If the user can only select one option at a time, this method returns the selected option. If the user can select multiple options, this method returns all options.

Overrides:
asText in class DomNode
Returns:
the element as text

getNameAttribute

public final String getNameAttribute()
Returns the value of the attribute "name". Refer to the HTML 4.01 documentation for details on the use of this attribute.

Returns:
the value of the attribute "name" or an empty string if that attribute isn't defined

getSizeAttribute

public final String getSizeAttribute()
Returns the value of the attribute "size". Refer to the HTML 4.01 documentation for details on the use of this attribute.

Returns:
the value of the attribute "size" or an empty string if that attribute isn't defined

getMultipleAttribute

public final String getMultipleAttribute()
Returns the value of the attribute "multiple". Refer to the HTML 4.01 documentation for details on the use of this attribute.

Returns:
the value of the attribute "multiple" or an empty string if that attribute isn't defined

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

isDisabled

public final boolean isDisabled()
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

getTabIndexAttribute

public final String getTabIndexAttribute()
Returns the value of the attribute "tabindex". Refer to the HTML 4.01 documentation for details on the use of this attribute.

Returns:
the value of the attribute "tabindex" or an empty string if that attribute isn't defined

getOnFocusAttribute

public final String getOnFocusAttribute()
Returns the value of the attribute "onfocus". Refer to the HTML 4.01 documentation for details on the use of this attribute.

Returns:
the value of the attribute "onfocus" or an empty string if that attribute isn't defined

getOnBlurAttribute

public final String getOnBlurAttribute()
Returns the value of the attribute "onblur". Refer to the HTML 4.01 documentation for details on the use of this attribute.

Returns:
the value of the attribute "onblur" or an empty string if that attribute isn't defined

getOnChangeAttribute

public final String getOnChangeAttribute()
Returns the value of the attribute "onchange". Refer to the HTML 4.01 documentation for details on the use of this attribute.

Returns:
the value of the attribute "onchange" or an empty string if that attribute isn't defined

setAttributeNS

public void setAttributeNS(String namespaceURI,
                           String qualifiedName,
                           String attributeValue)
Sets the value of the specified attribute. This method may be overridden by subclasses which are interested in specific attribute value changes, but such methods must invoke super.setAttributeValue(), and should consider the value of the cloning parameter when deciding whether or not to execute custom logic.

Specified by:
setAttributeNS in interface Element
Overrides:
setAttributeNS in class HtmlElement
Parameters:
namespaceURI - the URI that identifies an XML namespace
qualifiedName - the qualified name of the attribute
attributeValue - the value of the attribute

getOriginalName

public String getOriginalName()
Gets the first value of the name attribute of this field before any change.

Specified by:
getOriginalName in interface FormFieldWithNameHistory
Returns:
the original name (which is the same as the current one when no change has been made)

getPreviousNames

public Collection<String> getPreviousNames()
Get all the names this field had before the current one.

Specified by:
getPreviousNames in interface FormFieldWithNameHistory
Returns:
an empty collection if the name attribute has never been changed.


Copyright © 2002-2010 Gargoyle Software Inc.. All Rights Reserved.