/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.server.headlessclient.dataui;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import com.servoy.j2db.dataprocessing.IValueList;
import com.servoy.j2db.util.model.ComboModelListModelWrapper;
/**
* A {@link IChoiceRenderer} implementation for getting id and display values of a form components with {@link ComboModelListModelWrapper} valuelist.
*
* @author jcompagner
*/
public final class WebChoiceRenderer implements IChoiceRenderer
{
private final ComboModelListModelWrapper list;
private final FormComponent component;
/**
* @param component can be null if no converter is used by the component using this renderer.
* @param list
*/
public WebChoiceRenderer(FormComponent component, ComboModelListModelWrapper list)
{
this.list = list;
this.component = component;
}
public String getIdValue(Object object, int index)
{
Object o = list.getRealElementAt(index);
if (o == null) return "";
return o.toString();
}
public Object getDisplayValue(Object object)
{
int index = list.realValueIndexOf(object);
if (index == -1) return "";
Object display = list.getElementAt(index);
if (display == null) return "";
// if component != null then it's converter will convert this to String
return (component == null && !IValueList.SEPARATOR.equals(display)) ? display.toString() : display;
}
}