package com.guit.client.dom.impl; import com.guit.client.dom.Element; import com.guit.client.dom.Input; import com.guit.client.dom.Textarea; import java.util.List; public class FormImpl extends ElementImpl implements com.guit.client.dom.Form { public FormImpl() { super("form"); } private com.google.gwt.dom.client.FormElement el() { return e.cast(); } @Override public java.lang.String name() { return el().getName(); } @Override public java.lang.String method() { return el().getMethod(); } @Override public void name(java.lang.String arg0) { el().setName(arg0); } @Override public void reset() { el().reset(); } @Override public void method(java.lang.String arg0) { el().setMethod(arg0); } @Override public java.util.ArrayList<com.guit.client.dom.Element> elements() { return nodesToElements(el().getElements()); } @Override public java.lang.String target() { return el().getTarget(); } @Override public void target(java.lang.String arg0) { el().setTarget(arg0); } @Override public java.lang.String acceptCharset() { return el().getAcceptCharset(); } @Override public java.lang.String action() { return el().getAction(); } @Override public java.lang.String enctype() { return el().getEnctype(); } @Override public void acceptCharset(java.lang.String arg0) { el().setAcceptCharset(arg0); } @Override public void action(java.lang.String arg0) { el().setAction(arg0); } @Override public void enctype(java.lang.String arg0) { el().setEnctype(arg0); } @Override public void submit() { el().submit(); } @Override public void setFieldValue(String name, String value) { Element el = getField(name); if (el.tag().equals("input")) { Input input = new InputImpl().from(el); if (el.attr("type").equals("checkbox")) { input.checked(value.equals("true") ? true : false); } else { input.text(value); } } else if (el.tag().equals("textarea")) { Textarea textarea = new TextareaImpl().from(el); textarea.value(value); } else { throw new RuntimeException("Field type " + el.attr("type") + " is not supported"); } } @Override public Element getField(String name) { List<Element> query = query("input[name='" + name + "']"); if (query.size() == 0) { query = query("textarea[name='" + name + "']"); if (query.size() == 0) { throw new RuntimeException("Field does not exists"); } } return query.get(0); } @Override public String getFieldValue(String name) { Element el = getField(name); if (el.tag().equals("input")) { Input input = new InputImpl().from(el); if (el.attr("type").equals("checkbox")) { return input.checked() ? "true" : "false"; } else { return input.text(); } } else if (el.tag().equals("textarea")) { Textarea textarea = new TextareaImpl().from(el); return textarea.value(); } else { throw new RuntimeException("Field type " + el.attr("type") + " is not supported"); } } }