package com.idega.presentation.ui.contacts;
import java.util.Collection;
import javax.el.ValueExpression;
import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import com.idega.core.contact.data.ContactPurpose;
import com.idega.core.contact.data.ContactPurposeHome;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWBaseComponent;
import com.idega.presentation.IWContext;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.util.CoreConstants;
import com.idega.util.CoreUtil;
import com.idega.util.ListUtil;
import com.idega.util.StringUtil;
public class ContactPurposeSelector extends IWBaseComponent implements ValueHolder{
private String name = "default-cps-name";
private Object value;
private Converter converter;
private DropdownMenu dropdownMenu = null;
@Override
protected void initializeComponent(FacesContext context) {
super.initializeComponent(context);
IWContext iwc = IWContext.getIWContext(context);
IWBundle bundle = CoreUtil.getCoreBundle();
IWResourceBundle iwrb = bundle.getResourceBundle(iwc);
dropdownMenu = new DropdownMenu(name);
add(dropdownMenu);
dropdownMenu.addMenuElement(CoreConstants.UNDEFINED_VALUE, iwrb.getLocalizedString("select_purpose", "Select_purpose"));
ContactPurposeHome contactPurposeHome;
Collection <ContactPurpose> contactPurposes = null;
try {
contactPurposeHome = (ContactPurposeHome) IDOLookup.getHome(ContactPurpose.class);
contactPurposes = contactPurposeHome.getContactPurposes(-1);
} catch (Exception e) {
}
if(!ListUtil.isEmpty(contactPurposes)){
for(ContactPurpose contactPurpose : contactPurposes){
String label = iwrb.getLocalizedString(contactPurpose.getName(),contactPurpose.getName());
String value = String.valueOf(contactPurpose.getPrimaryKey());
dropdownMenu.addMenuElement(value, label);
}
}
dropdownMenu.setSelectedElement(getContactPurposeId());
}
@Override
protected void updateComponent(FacesContext context) {
super.updateComponent(context);
dropdownMenu.setSelectedElement(getContactPurposeId());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object getLocalValue() {
return value;
}
public Object getValue() {
if (value != null){
return value;
}
ValueExpression expression = getValueExpression("value");
if (expression != null){
return expression.getValue(getFacesContext().getELContext());
}
return null;
}
private String getContactPurposeId(){
Object value = getValue();
if(value == null){
return CoreConstants.UNDEFINED_VALUE;
}
if(value instanceof ContactPurpose){
Object primaryKey = ((ContactPurpose)value).getPrimaryKey();
String contactPurpose = String.valueOf(primaryKey);
if(StringUtil.isEmpty(contactPurpose)){
return CoreConstants.UNDEFINED_VALUE;
}
return contactPurpose;
}
return String.valueOf(value);
}
public void setValue(Object value) {
this.value = value;
}
public Converter getConverter() {
if (converter != null) {
return converter;
}
ValueExpression expression = getValueExpression("converter");
if (expression != null){
return (Converter) expression.getValue(getFacesContext().getELContext());
}
return null;
}
public void setConverter(Converter converter) {
this.converter = converter;
}
}