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.PhoneType; import com.idega.core.contact.data.PhoneTypeHome; 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 PhoneTypeSelector extends IWBaseComponent implements ValueHolder/*javax.faces.component.UIOutput*/{ private String name = "default-pts-name"; private Object value; private Converter converter; private DropdownMenu dropdownMenu; @Override public Object saveState(FacesContext facesContext) { Object[] values = new Object[4]; values[0] = super.saveState(facesContext); values[1] = name; values[2] = value; values[3] = converter; return values; } @Override public void restoreState(FacesContext facesContext, Object state) { // TODO Auto-generated method stub Object[] values = (Object[])state; super.restoreState(facesContext,values[0]); name = (java.lang.String) values[1]; value = (java.lang.String) values[2]; converter = (javax.faces.convert.Converter) values[3]; } public PhoneTypeSelector(){} @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("-1", iwrb.getLocalizedString("select_phone_type", "Select phone type")); PhoneTypeHome phoneTypeHome; Collection <PhoneType> phoneTypes = null; try { phoneTypeHome = (PhoneTypeHome) IDOLookup.getHome(PhoneType.class); phoneTypes = phoneTypeHome.getPhoneTypes(-1); } catch (Exception e) { } if(!ListUtil.isEmpty(phoneTypes)){ for(PhoneType phoneType : phoneTypes){ String label = iwrb.getLocalizedString(phoneType.getName(),phoneType.getName()); String value = String.valueOf(phoneType.getPrimaryKey()); dropdownMenu.addMenuElement(value, label); } } dropdownMenu.setSelectedElement(getPhoneTypeId()); } @Override protected void updateComponent(FacesContext context) { super.updateComponent(context); dropdownMenu.setSelectedElement(getPhoneTypeId()); } private String getPhoneTypeId(){ Object value = getValue(); if(value == null){ return CoreConstants.UNDEFINED_VALUE; } if(value instanceof PhoneType){ Object primaryKey = ((PhoneType)value).getPrimaryKey(); String phoneTypeId = String.valueOf(primaryKey); if(StringUtil.isEmpty(phoneTypeId)){ return CoreConstants.UNDEFINED_VALUE; } return phoneTypeId; } return String.valueOf(value); } 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; } 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; } }