/*
* 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 com.nvarghese.beowulf.common.cobra.html.domimpl;
import java.util.logging.Level;
import org.w3c.dom.html2.HTMLInputElement;
import com.nvarghese.beowulf.common.cobra.html.FormInput;
public class HTMLInputElementImpl extends HTMLBaseInputElement implements HTMLInputElement {
public HTMLInputElementImpl(String name) {
super(name);
}
private boolean defaultChecked;
public boolean getDefaultChecked() {
return this.defaultChecked;
}
public void setDefaultChecked(boolean defaultChecked) {
this.defaultChecked = defaultChecked;
}
public boolean getChecked() {
InputContext ic = this.inputContext;
if (ic == null) {
return this.getAttributeAsBoolean("checked");
} else {
return ic.getChecked();
}
}
public void setChecked(boolean checked) {
InputContext ic = this.inputContext;
if (ic != null) {
ic.setChecked(checked);
}
}
public int getMaxLength() {
InputContext ic = this.inputContext;
return ic == null ? 0 : ic.getMaxLength();
}
public void setMaxLength(int maxLength) {
InputContext ic = this.inputContext;
if (ic != null) {
ic.setMaxLength(maxLength);
}
}
public int getSize() {
InputContext ic = this.inputContext;
return ic == null ? 0 : ic.getControlSize();
}
public void setSize(int size) {
InputContext ic = this.inputContext;
if (ic != null) {
ic.setControlSize(size);
}
}
public String getSrc() {
return this.getAttribute("src");
}
public void setSrc(String src) {
this.setAttribute("src", src);
}
/**
* Gets input type in lowercase.
*/
public String getType() {
String type = this.getAttribute("type");
return type == null ? null : type.toLowerCase();
}
public void setType(String type) {
this.setAttribute("type", type);
}
public String getUseMap() {
return this.getAttribute("usemap");
}
public void setUseMap(String useMap) {
this.setAttribute("usemap", useMap);
}
public void click() {
InputContext ic = this.inputContext;
if (ic != null) {
ic.click();
}
}
public boolean isSubmittableWithEnterKey() {
String type = this.getType();
return (type == null || "".equals(type) || "text".equals(type) || "password".equals(type));
}
public boolean isSubmittableWithPress() {
String type = this.getType();
return "submit".equals(type) || "image".equals(type);
}
public boolean isSubmitInput() {
String type = this.getType();
return "submit".equals(type);
}
public boolean isImageInput() {
String type = this.getType();
return "image".equals(type);
}
public boolean isResetInput() {
String type = this.getType();
return "reset".equals(type);
}
void resetInput() {
InputContext ic = this.inputContext;
if (ic != null) {
ic.resetInput();
}
}
protected FormInput[] getFormInputs() {
String type = this.getType();
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) || "".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)) {
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;
}
}
}
}