//idega 2000 - Tryggvi Larusson /* *Copyright 2000 idega.is All Rights Reserved. */ package com.idega.presentation.ui; import javax.faces.context.FacesContext; import com.idega.presentation.IWContext; /** * @author <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a> * @version 1.2 */ public class CheckBox extends GenericInput { private boolean _mustBeChecked = false; private boolean _enableWhenChecked = false; private boolean _enableWhenUnchecked = false; private boolean _disableWhenUnchecked = false; private boolean _disableWhenChecked = false; private boolean _checkWhenCheckedUncheckWhenUnchecked = false; private String _errorMessage; public Object saveState(FacesContext ctx) { Object values[] = new Object[3]; values[0] = super.saveState(ctx); values[1] = Boolean.valueOf(this._mustBeChecked); values[2] = this._errorMessage; return values; } public void restoreState(FacesContext ctx, Object state) { Object values[] = (Object[]) state; super.restoreState(ctx, values[0]); this._mustBeChecked = ((Boolean) values[1]).booleanValue(); this._errorMessage = (String) values[2]; } /** * Constructs a new <code>CheckBox</code> with name set as "untitled" and * value as "unspecified". */ public CheckBox() { this("untitled"); } /** * Constructs a new <code>CheckBox</code> with the given name and value as * "unspecified". */ public CheckBox(String name) { this(name, "unspecified"); } /** * Constructs a new <code>CheckBox</code> with the given name and value. */ public CheckBox(String name, String value) { super(); setName(name); setContent(value); setChecked(false); setInputType(INPUT_TYPE_CHECKBOX); } /** * Sets whether the checkbox is checked or not. * * @param ifChecked */ public void setChecked(boolean ifChecked) { if (ifChecked) { setMarkupAttributeWithoutValue("checked"); } else { removeMarkupAttribute("checked"); } } public void main(IWContext iwc) { if (isEnclosedByForm()) { if (this._mustBeChecked) { StringBuffer buffer = new StringBuffer(); buffer.append("function isChecked(inputs,message) {").append( "\n\t"); buffer.append("if (inputs.length > 1) {").append("\n\t\t"); buffer.append("for(var i=0;i<inputs.length;i++) {").append( "\n\t\t\t"); buffer.append("if (inputs[i].checked == true)").append( "\n\t\t\t\t"); buffer.append("return true;").append("\n\t\t"); buffer.append("}").append("\n\t"); buffer.append("}").append("\n\t"); buffer.append("else {").append("\n\t\t"); buffer.append("if (inputs.checked == true)").append("\n\t\t\t"); buffer.append("return true;").append("\n\t"); buffer.append("}").append("\n\t"); buffer.append("alert(message);").append("\n"); buffer.append("return false;").append("\n}"); this.setOnSubmitFunction("isChecked", buffer.toString(), this._errorMessage); } if (this._enableWhenChecked) { getScript() .addFunction( "enableWhenChecked", "function enableWhenChecked (check, input) {\n\t if (check.checked == true) input.disabled = false; \n}"); } if (this._disableWhenUnchecked) { getScript() .addFunction( "disableWhenUnchecked", "function disableWhenUnchecked (check, input) {\n\t if (check.checked == false) input.disabled = true; \n}"); } if (this._checkWhenCheckedUncheckWhenUnchecked) { // getScript().addFunction("toggleOnChange", "function // toggleOnChange (check, input) {\n\t if (check.checked == // false) {input.checked = false;} \n\t else if (check.checked // == true) { input.checked = true;} \n}"); getScript() .addFunction( "toggleOnChange", "function toggleOnChange (check, inputs) {\n if (inputs.length > 1) {\n \tfor(var i=0;i<inputs.length;i++)\n \t\tinputs[i].checked = check.checked;\n \t}\n else\n \tinputs.checked = check.checked;\n}"); } if (this._disableWhenChecked) { getScript() .addFunction( "disableWhenChecked", "function disableWhenChecked (check, input) {\n\t if (check.checked == true) input.disabled = true; \n}"); } if (this._enableWhenUnchecked) { getScript() .addFunction( "enableWhenUnchecked", "function enableWhenUnchecked (check, input) {\n\t if (check.checked == false) input.disabled = false; \n}"); } } } public void setMustBeChecked(String errorMessage) { this._mustBeChecked = true; this._errorMessage = errorMessage; } public void setToEnableWhenChecked(InterfaceObject object) { this._enableWhenChecked = true; setOnAction(ACTION_ON_CLICK, "enableWhenChecked(this, findObj('" + object.getName() + "'))"); } public void setToDisableWhenUnchecked(InterfaceObject object) { this._disableWhenUnchecked = true; setOnAction(ACTION_ON_CLICK, "disableWhenUnchecked(this, findObj('" + object.getName() + "'))"); } public void setToDisableWhenChecked(InterfaceObject object) { this._disableWhenChecked = true; setOnAction(ACTION_ON_CLICK, "disableWhenChecked(this, findObj('" + object.getName() + "'))"); } public void setToEnableWhenUnchecked(InterfaceObject object) { this._enableWhenUnchecked = true; setOnAction(ACTION_ON_CLICK, "enableWhenUnchecked(this, findObj('" + object.getName() + "'))"); } public void setToCheckWhenCheckedAndUncheckWhenUnchecked( InterfaceObject object) { setToCheckWhenCheckedAndUncheckWhenUnchecked(object.getName()); } public void setToCheckWhenCheckedAndUncheckWhenUnchecked(String objectName) { this._checkWhenCheckedUncheckWhenUnchecked = true; setOnAction(ACTION_ON_CLICK, "toggleOnChange(this, findObj('" + objectName + "'))"); } /** * @see com.idega.presentation.ui.InterfaceObject#handleKeepStatus(IWContext) */ public void handleKeepStatus(IWContext iwc) { if (iwc.isParameterSet(this.getName())) { String[] values = iwc.getParameterValues(getName()); for (int i = 0; i < values.length; i++) { String value = values[i]; if (value.equals(getValueAsString())) { setChecked(true); } } } } public void printWML(IWContext main) { print("<option value=\"" + getValueAsString() + "\">" + getContent() + "</option>"); } }