/*******************************************************************************
* 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 java.util.ArrayList;
import java.util.List;
import org.jsoup.nodes.Element;
import org.w3c.dom.Document;
import org.w3c.dom.html2.HTMLCollection;
import org.w3c.dom.html2.HTMLFormElement;
public class HTMLFormElementImpl extends HTMLElementImpl implements HTMLFormElement {
private HTMLCollection formElements;
HTMLFormElementImpl(Element jsoupElement, Document ownerDocument) {
super(jsoupElement, ownerDocument);
}
@Override
public HTMLCollection getElements() {
if(formElements != null)
return formElements;
final List<HTMLElementImpl> elementList = new ArrayList<HTMLElementImpl>();
for(Element e: jsoupElement.select("input, button, textarea, select")) {
addFormElementsToList(e, elementList);
}
formElements = new HTMLCollectionImpl(elementList);
return formElements;
}
private void addFormElementsToList(Element jsoupElement, List<HTMLElementImpl> formElements) {
String tag = jsoupElement.tagName().toUpperCase();
if("INPUT".equals(tag)) {
formElements.add(new HTMLInputElementImpl(jsoupElement, this, getOwnerDocument()));
return;
} else if("SELECT".equals(tag)) {
HTMLSelectElementImpl selectElement = new HTMLSelectElementImpl(jsoupElement, this, getOwnerDocument());
formElements.add(selectElement);
HTMLOptionsCollectionImpl options = selectElement.getOptions();
for(int i = 0; i < options.getLength(); i++) {
formElements.add(options.item(i));
}
return;
} else {
formElements.add(new HTMLElementImpl(jsoupElement, getOwnerDocument()));
return;
}
}
@Override
public int getLength() {
return getElements().getLength();
}
@Override
public String getName() {
return jsoupElement.attr("name");
}
@Override
public void setName(String name) {
}
@Override
public String getAcceptCharset() {
return jsoupElement.attr("accept");
}
@Override
public void setAcceptCharset(String acceptCharset) {
}
@Override
public String getAction() {
return jsoupElement.attr("action");
}
@Override
public void setAction(String action) {
}
@Override
public String getEnctype() {
return jsoupElement.attr("enctype");
}
@Override
public void setEnctype(String enctype) {
}
@Override
public String getMethod() {
return jsoupElement.attr("method");
}
@Override
public void setMethod(String method) {
}
@Override
public String getTarget() {
return jsoupElement.attr("target");
}
@Override
public void setTarget(String target) {
}
@Override
public void submit() {
}
@Override
public void reset() {
}
}