140 lines
4.5 KiB
Java
140 lines
4.5 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@ricochet.com>,
|
|
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
|
* Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*/
|
|
package com.silverwrist.venice.ui.dlg;
|
|
|
|
import java.io.IOException;
|
|
import java.util.*;
|
|
import org.apache.log4j.*;
|
|
import org.w3c.dom.*;
|
|
import com.silverwrist.util.*;
|
|
import com.silverwrist.venice.except.*;
|
|
import com.silverwrist.venice.ui.*;
|
|
|
|
public abstract class PickListField extends BaseDialogField
|
|
{
|
|
/*--------------------------------------------------------------------------------
|
|
* Static data members
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
private static Logger logger = Logger.getLogger(PickListField.class);
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Attributes
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
private List m_choices;
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Constructors
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
protected PickListField(String name, String caption, String caption2, boolean required, List choices)
|
|
{
|
|
super(false,name,caption,caption2,required);
|
|
m_choices = choices;
|
|
|
|
} // end constructor
|
|
|
|
protected PickListField(Element elt, List choices) throws ConfigException
|
|
{
|
|
super(false,elt,true,true);
|
|
m_choices = choices;
|
|
|
|
} // end constructor
|
|
|
|
protected PickListField(PickListField other)
|
|
{
|
|
super(other);
|
|
m_choices = other.m_choices;
|
|
|
|
} // end constructor
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Abstract functions which MUST be overriden
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
protected abstract String getChoiceName(Object o);
|
|
|
|
protected abstract String getChoiceValue(Object o);
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Overrides from class BaseDialogField
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
protected void renderField(RequestOutput out) throws IOException
|
|
{
|
|
out.write("<select class=\"content\" name=\"" + getName() + "\" size=\"1\"");
|
|
if (!isEnabled())
|
|
out.write(" disabled=\"disabled\"");
|
|
out.write(">\n");
|
|
String val = getStringValue();
|
|
boolean not_selected = true;
|
|
for (Iterator it=m_choices.iterator(); it.hasNext(); )
|
|
{ // loop through the list and render the choices
|
|
Object ch = it.next();
|
|
String ch_name = getChoiceName(ch);
|
|
out.write("<option value=\"" + ch_name + "\"");
|
|
if (ch_name.equals(val))
|
|
{ // found the selected element
|
|
out.write(" selected=\"selected\"");
|
|
not_selected = false;
|
|
|
|
} // end if
|
|
|
|
out.write(">" + StringUtil.encodeHTML(getChoiceValue(ch)) + "</option>\n");
|
|
|
|
} // end for
|
|
|
|
if (not_selected && isEnabled())
|
|
{ // aw, shit! there's no selected item!
|
|
logger.warn("PickListField \"" + getName() + "\" did not find a match for selected value \"" + val + "\"");
|
|
ArrayList tmp = new ArrayList(m_choices.size());
|
|
for (Iterator it=m_choices.iterator(); it.hasNext(); )
|
|
tmp.add(getChoiceName(it.next()));
|
|
logger.warn("Possible choices were: " + tmp);
|
|
|
|
} // end if
|
|
|
|
out.write("</select>\n"); // all done
|
|
|
|
} // end render
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* External operations
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public List getChoicesList()
|
|
{
|
|
return m_choices;
|
|
|
|
} // end getChoicesList
|
|
|
|
public void setChoicesList(List list)
|
|
{
|
|
m_choices = list;
|
|
|
|
} // end setChoicesList
|
|
|
|
} // end class PickListField
|