package fr.lteconsulting.hexa.client.form.fieldtypes;
import java.util.HashMap;
import java.util.Map.Entry;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.ui.Widget;
import fr.lteconsulting.hexa.client.ui.widget.ListBoxEx;
public class ListFieldType extends FieldTypeBase
{
HashMap<Integer, String> items = new HashMap<Integer, String>();
public void addItem( int id, String text )
{
items.put( id, text );
}
@Override
public Widget getWidget()
{
ListBoxEx lb = new ListBoxEx();
for( Entry<Integer, String> e : items.entrySet() )
lb.addItem( e.getValue(), e.getKey() );
lb.setSelected( 0 );
return lb;
}
@Override
public void setValue( Widget w, JSONValue value )
{
((ListBoxEx) w).setSelected( (int) value.isNumber().doubleValue() );
}
@Override
public JSONValue getValue( Widget widget )
{
return new JSONNumber( ((ListBoxEx) widget).getSelected() );
}
@Override
protected void installRealHandler( Widget widget )
{
((ListBoxEx) widget).setCallback( new ListBoxEx.Callback()
{
public void onListBoxExChange( ListBoxEx listBoxEx, Object cookie )
{
signalChange( listBoxEx );
}
}, null );
}
}