package com.nvarghese.beowulf.common.cobra.html.domimpl;
import org.w3c.dom.html2.HTMLElement;
import org.w3c.dom.html2.HTMLFormElement;
import org.w3c.dom.html2.HTMLOptionElement;
import org.w3c.dom.html2.HTMLSelectElement;
public class HTMLOptionElementImpl extends HTMLElementImpl implements HTMLOptionElement {
public HTMLOptionElementImpl(String name) {
super(name, true);
}
public boolean getDefaultSelected() {
return this.getAttributeAsBoolean("selected");
}
public boolean getDisabled() {
return false;
}
public HTMLFormElement getForm() {
Object parentElement = this.getParentNode();
HTMLFormElement parentFormElement = null;
while (true) {
if (parentElement instanceof HTMLFormElement) {
parentFormElement = (HTMLFormElement) parentElement;
break;
} else if (parentElement instanceof HTMLElement) {
break;
} else {
parentElement = ((HTMLElementImpl) parentElement).getParentNode();
}
}
return parentFormElement;
}
public int getIndex() {
Object parent = this.getParentNode();
if (parent instanceof HTMLSelectElement) {
HTMLOptionsCollectionImpl options = (HTMLOptionsCollectionImpl) ((HTMLSelectElement) parent).getOptions();
return options.indexOf(this);
} else {
return -1;
}
}
public String getLabel() {
return this.getAttribute("label");
}
public boolean getSelected() {
return this.selected;
}
public String getText() {
return this.getRawInnerText(false);
}
public void setText(String value) {
this.setTextContent(value);
}
public String getValue() {
return this.getAttribute("value");
}
public void setDefaultSelected(boolean defaultSelected) {
this.setAttribute("selected", defaultSelected ? "selected" : null);
}
public void setDisabled(boolean disabled) {
// TODO Unsupported
}
public void setLabel(String label) {
this.setAttribute("label", label);
}
private boolean selected;
void setSelectedImpl(boolean selected) {
this.selected = selected;
}
public void setSelected(boolean selected) {
boolean changed = selected != this.selected;
this.selected = selected;
// Changing the option state changes the selected index.
Object parent = this.getParentNode();
if (parent instanceof HTMLSelectElementImpl) {
HTMLSelectElementImpl parentSelect = ((HTMLSelectElementImpl) parent);
if (changed || parentSelect.getSelectedIndex() == -1) {
if (selected) {
parentSelect.setSelectedIndexImpl(this.getIndex());
parentSelect.setValue(this.getValue());
} else {
int currentIndex = parentSelect.getSelectedIndex();
if (currentIndex != -1 && currentIndex == this.getIndex()) {
parentSelect.setSelectedIndexImpl(-1);
}
}
}
}
}
public void setValue(String value) {
this.setAttribute("value", value);
}
public String toString() {
return "HTMLOptionElementImpl[text=" + this.getText() + ",selected=" + this.getSelected() + "]";
}
}