package org.jboss.seam.ui.component;
import javax.faces.component.UISelectItem;
import javax.faces.model.SelectItem;
/**
* JSF component class
*
*/
public abstract class UIEnumItem extends UISelectItem
{
public abstract String getEnumValue();
public abstract void setEnumValue(String enumValue);
public abstract void setLabel(String label);
public abstract String getLabel();
@Override
public Object getItemValue()
{
return getEnumValue();
}
@Override
public void setItemValue(Object itemValue)
{
setEnumValue(itemValue == null ? null : itemValue.toString());
}
@Override
public String getItemLabel()
{
return getLabel();
}
@Override
public void setItemLabel(String itemLabel)
{
setLabel(itemLabel);
}
@Override
public Object getValue()
{
Class c = getParent().getValueExpression("value").getType(getFacesContext().getELContext());
String enumValue = getEnumValue();
String label = getLabel();
Object value = Enum.valueOf(c, enumValue);
return new SelectItem(value, label == null ? enumValue : label);
}
}