2002-01-07 02:05:37 +00:00

141 lines
4.0 KiB
Java

/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.ui.dlg;
import java.io.IOException;
import org.w3c.dom.*;
import com.silverwrist.util.*;
import com.silverwrist.venice.except.*;
import com.silverwrist.venice.ui.*;
public class CheckBoxField extends BaseDialogField
{
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
private static final String YES = "Y";
private static final String NO = "";
public static final String TAGNAME = "checkbox";
/*--------------------------------------------------------------------------------
* Constructors
*--------------------------------------------------------------------------------
*/
public CheckBoxField(String name, String caption, String caption2)
{
super(true,name,caption,caption2,false);
} // end constructor
public CheckBoxField(Element elt) throws ConfigException
{
super(true,elt,true,false);
} // end constructor
protected CheckBoxField(CheckBoxField other)
{
super(other);
} // end constructor
/*--------------------------------------------------------------------------------
* Overrides from class BaseDialogField
*--------------------------------------------------------------------------------
*/
protected void renderField(RequestOutput out) throws IOException
{
out.write("<INPUT TYPE=CHECKBOX NAME=\"" + getName() + "\" VALUE=\"" + YES + "\"");
if (!isEnabled())
out.write(" DISABLED");
if (YES.equals(getStringValue()))
out.write(" CHECKED");
out.write(">");
} // end renderField
/*--------------------------------------------------------------------------------
* Implementations from interface DialogField
*--------------------------------------------------------------------------------
*/
public Object getValue()
{
return YES.equals(super.getValue().toString()) ? Boolean.TRUE : Boolean.FALSE;
} // end getValue
public void setValue(Object o)
{
boolean state = false;
if (o!=null)
{ // determine what kind of object it is
if (o instanceof Boolean)
{ // it's a Boolean - map it accordingly
Boolean b = (Boolean)o;
state = b.booleanValue();
} // end if
else if (o instanceof Number)
{ // it's a number - use false==0, true==nonzero
Number n = (Number)o;
state = (n.intValue()!=0);
} // end else if
else
{ // it's something else - parse a string equivalent
String s = o.toString().trim().toLowerCase();
try
{ // decode it into a number and set state that way
int tmp = Integer.parseInt(s);
state = (tmp!=0);
} // end try
catch (NumberFormatException nfe)
{ // try some string equivalents
state = (s.equals("true") || s.equals("on") || s.equals("y") || s.equals("yes"));
} // end catch
} // end else
} // end if
super.setValue(state ? YES : NO);
} // end setValue
public void setValueFrom(RequestInput ri)
{
this.setValue(ri.getParameter(getName()));
} // end setValueFrom
public DialogField duplicate()
{
return new CheckBoxField(this);
} // end duplicate
} // end class CheckBoxField