/*
GNU LESSER GENERAL PUBLIC LICENSE
Copyright (C) 2006 The Lobo Project
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Contact info: lobochief@users.sourceforge.net
*/
/*
* Created on Jan 15, 2006
*/
package org.lobobrowser.html.domimpl;
import java.util.logging.Level;
import org.lobobrowser.html.FormInput;
import org.w3c.dom.html.HTMLInputElement;
public class HTMLInputElementImpl extends HTMLBaseInputElement implements HTMLInputElement {
public HTMLInputElementImpl(final String name) {
super(name);
}
private boolean defaultChecked;
public boolean getDefaultChecked() {
return this.defaultChecked;
}
public void setDefaultChecked(final boolean defaultChecked) {
this.defaultChecked = defaultChecked;
}
@Override
public boolean getChecked() {
final InputContext ic = this.inputContext;
if (ic == null) {
return this.getAttributeAsBoolean("checked");
} else {
return ic.getChecked();
}
}
@Override
public void setChecked(final boolean checked) {
final InputContext ic = this.inputContext;
if (ic != null) {
ic.setChecked(checked);
}
}
public int getMaxLength() {
final InputContext ic = this.inputContext;
return ic == null ? 0 : ic.getMaxLength();
}
public void setMaxLength(final int maxLength) {
final InputContext ic = this.inputContext;
if (ic != null) {
ic.setMaxLength(maxLength);
}
}
/* public int getSize() {
final InputContext ic = this.inputContext;
return ic == null ? 0 : ic.getControlSize();
public void setSize(final int size) {
final InputContext ic = this.inputContext;
if (ic != null) {
ic.setControlSize(size);
}
}
}*/
public String getSize() {
final InputContext ic = this.inputContext;
final int size = ic == null ? 0 : ic.getControlSize();
return String.valueOf(size);
}
public void setSize(final String size) {
final InputContext ic = this.inputContext;
if (ic != null) {
ic.setControlSize(Integer.parseInt(size));
}
}
public String getSrc() {
return this.getAttribute("src");
}
public void setSrc(final String src) {
this.setAttribute("src", src);
}
/**
* Gets input type in lowercase.
*/
public String getType() {
final String type = this.getAttribute("type");
return type == null ? null : type.toLowerCase();
}
public void setType(final String type) {
this.setAttribute("type", type);
}
public String getUseMap() {
return this.getAttribute("usemap");
}
public void setUseMap(final String useMap) {
this.setAttribute("usemap", useMap);
}
public void click() {
final InputContext ic = this.inputContext;
if (ic != null) {
ic.click();
}
}
public boolean isSubmittableWithEnterKey() {
final String type = this.getType();
return ((type == null) || "".equals(type) || "text".equals(type) || "password".equals(type));
}
public boolean isSubmittableWithPress() {
final String type = this.getType();
return "submit".equals(type) || "image".equals(type);
}
public boolean isSubmitInput() {
final String type = this.getType();
return "submit".equals(type);
}
public boolean isImageInput() {
final String type = this.getType();
return "image".equals(type);
}
public boolean isResetInput() {
final String type = this.getType();
return "reset".equals(type);
}
@Override
void resetInput() {
final InputContext ic = this.inputContext;
if (ic != null) {
ic.resetInput();
}
}
@Override
protected FormInput[] getFormInputs() {
final String type = this.getType();
final String name = this.getName();
if (name == null) {
return null;
}
if (type == null) {
return new FormInput[] { new FormInput(name, this.getValue()) };
} else {
if ("text".equals(type) || "password".equals(type) || "hidden".equals(type) || "url".equals(type) || "number".equals(type) || "search".equals(type) || "".equals(type)) {
return new FormInput[] { new FormInput(name, this.getValue()) };
} else if ("submit".equals(type)) {
// It's done as an "extra" form input
return null;
} else if ("radio".equals(type) || "checkbox".equals(type)) {
if (this.getChecked()) {
String value = this.getValue();
if ((value == null) || (value.length() == 0)) {
value = "on";
}
return new FormInput[] { new FormInput(name, value) };
} else {
return null;
}
} else if ("image".equals(type)) {
// It's done as an "extra" form input
return null;
} else if ("file".equals(type)) {
final java.io.File file = this.getFileValue();
if (file == null) {
if (logger.isLoggable(Level.INFO)) {
logger.info("getFormInputs(): File input named " + name + " has null file.");
}
return null;
} else {
return new FormInput[] { new FormInput(name, file) };
}
} else {
return null;
}
}
}
}