FileDocCategorySizeDatePackage
HTMLOptionElementImpl.javaAPI DocJava SE 5 API8174Fri Aug 26 14:55:28 BST 2005com.sun.org.apache.html.internal.dom

HTMLOptionElementImpl

public class HTMLOptionElementImpl extends HTMLElementImpl implements HTMLOptionElement
version
$Revision: 1.6 $ $Date: 2003/05/08 20:13:09 $
author
Assaf Arkin
see
org.w3c.dom.html.HTMLOptionElement
see
com.sun.org.apache.xerces.internal.dom.ElementImpl

Fields Summary
Constructors Summary
public HTMLOptionElementImpl(HTMLDocumentImpl owner, String name)
Constructor requires owner document.

param
owner The owner HTML document

        super( owner, name );
    
Methods Summary
public booleangetDefaultSelected()

        // ! NOT FULLY IMPLEMENTED !
        return getBinary( "default-selected" );
    
public booleangetDisabled()

        return getBinary( "disabled" );
    
public intgetIndex()

        Node        parent;
        NodeList    options;
        int            i;
        
        // Locate the parent SELECT. Note that this OPTION might be inside a
        // OPTGROUP inside the SELECT. Or it might not have a parent SELECT.
        // Everything is possible. If no parent is found, return -1.
        parent = getParentNode();
        while ( parent != null && ! ( parent instanceof HTMLSelectElement ) )
            parent = parent.getParentNode();
        if ( parent != null )
        {
            // Use getElementsByTagName() which creates a snapshot of all the
            // OPTION elements under the SELECT. Access to the returned NodeList
            // is very fast and the snapshot solves many synchronization problems.
            options = ( (HTMLElement) parent ).getElementsByTagName( "OPTION" );
            for ( i = 0 ; i < options.getLength() ; ++i )
                if ( options.item( i ) == this )
                    return i;
        }
        return -1;
    
public java.lang.StringgetLabel()

        return capitalize( getAttribute( "label" ) );
    
public booleangetSelected()

        return getBinary( "selected" );
    
public java.lang.StringgetText()

        Node    child;
        String    text;
        
        // Find the Text nodes contained within this element and return their
        // concatenated value. Required to go around comments, entities, etc.
        child = getFirstChild();
        text = "";
        while ( child != null )
        {
            if ( child instanceof Text )
                text = text + ( (Text) child ).getData();
            child = child.getNextSibling();
        }
        return text;
    
public java.lang.StringgetValue()

        return getAttribute( "value" );
    
public voidsetDefaultSelected(boolean defaultSelected)

        // ! NOT FULLY IMPLEMENTED !
        setAttribute( "default-selected", defaultSelected );
    
public voidsetDisabled(boolean disabled)

        setAttribute( "disabled", disabled );
    
public voidsetIndex(int index)

        Node        parent;
        NodeList    options;
        Node        item;
        
        // Locate the parent SELECT. Note that this OPTION might be inside a
        // OPTGROUP inside the SELECT. Or it might not have a parent SELECT.
        // Everything is possible. If no parent is found, just return.
        parent = getParentNode();
        while ( parent != null && ! ( parent instanceof HTMLSelectElement ) )
            parent = parent.getParentNode();
        if ( parent != null )
        {
            // Use getElementsByTagName() which creates a snapshot of all the
            // OPTION elements under the SELECT. Access to the returned NodeList
            // is very fast and the snapshot solves many synchronization problems.
            // Make sure this OPTION is not replacing itself.
            options = ( (HTMLElement) parent ).getElementsByTagName( "OPTION" );
            if ( options.item( index ) != this )
            {
                // Remove this OPTION from its parent. Place this OPTION right
                // before indexed OPTION underneath it's direct parent (might
                // be an OPTGROUP).
                getParentNode().removeChild( this );
                item = options.item( index );
                item.getParentNode().insertBefore( this, item );
            }
        }
    
public voidsetLabel(java.lang.String label)

        setAttribute( "label", label );
    
public voidsetSelected(boolean selected)

        setAttribute( "selected", selected );
    
public voidsetText(java.lang.String text)

        Node    child;
        Node    next;
        
        // Delete all the nodes and replace them with a single Text node.
        // This is the only approach that can handle comments and other nodes.
        child = getFirstChild();
        while ( child != null )
        {
            next = child.getNextSibling();
            removeChild( child );
            child = next;
        }
        insertBefore( getOwnerDocument().createTextNode( text ), getFirstChild() );
    
public voidsetValue(java.lang.String value)

        setAttribute( "value", value );