/******************************************************************************* * Copyright (c) 2011 Subgraph. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Subgraph - initial API and implementation ******************************************************************************/ package com.subgraph.vega.internal.html.dom; import org.jsoup.nodes.Element; import org.w3c.dom.Document; import org.w3c.dom.html2.HTMLFormElement; import org.w3c.dom.html2.HTMLOptionElement; public class HTMLOptionElementImpl extends HTMLElementImpl implements HTMLOptionElement { private final HTMLSelectElementImpl select; private final HTMLFormElement form; private final int index; HTMLOptionElementImpl(Element jsoupElement, HTMLSelectElementImpl select, int index, Document ownerDocument) { super(jsoupElement, ownerDocument); this.select = select; this.form = select.getForm(); this.index = index; } HTMLOptionElementImpl(Element jsoupElement, Document ownerDocument) { super(jsoupElement, ownerDocument); Element formElement = HTMLElementImpl.findEnclosingFormElement(jsoupElement); this.form = new HTMLFormElementImpl(formElement, ownerDocument); Element selectElement = HTMLElementImpl.findEnclosingSelectElement(jsoupElement); this.select = new HTMLSelectElementImpl(selectElement, form, ownerDocument); this.index = calculateIndex(jsoupElement); } private int calculateIndex(Element jsoupElement) { Element e = jsoupElement; int index = 0; while(e.previousElementSibling() != null) { e = e.previousElementSibling(); index += 1; } return index; } @Override public HTMLFormElement getForm() { return form; } @Override public boolean getDefaultSelected() { return hasAttribute("selected"); } @Override public void setDefaultSelected(boolean defaultSelected) { } @Override public String getText() { return getTextContent(); } @Override public int getIndex() { return index; } @Override public boolean getDisabled() { return hasAttribute("disabled"); } @Override public void setDisabled(boolean disabled) { } @Override public String getLabel() { return getAttribute("label"); } @Override public void setLabel(String label) { } @Override public boolean getSelected() { return hasAttribute("selected") || select.getSelectedIndex() == index; } @Override public void setSelected(boolean selected) { } @Override public String getValue() { return getAttribute("value"); } @Override public void setValue(String value) { } }