The Adapter interface:
public interface NameAdaptable<T> {
public String getName(T obj);
}
The IPropertySelectionModel impl class:
public class PropertySelectionModel<T> implements IPropertySelectionModel {
private final NameAdaptable<T> nameAdapter;
private final List<T> items;
public PropertySelectionModel(NameAdaptable<T>
nameAdaptable,Collection<T> items){
this.nameAdapter = nameAdaptable;
this.items= new ArrayList<T>(items.size());
this.items.addAll(items);
}
public int getOptionCount() {
return items.size();
}
public Object getOption(int index) {
return getItem(index);
}
public String getLabel(int index) {
T item = getItem(index);
return nameAdapter.getName(item);
}
public String getValue(int index) {
return String.valueOf(index);
}
public Object translateValue(String value) {
return getOption(Integer.parseInt(value));
}
public T getFirstItem(){
return getItem(0);
}
private T getItem(int index){
if(index>items.size()) index = items.size();
return items.get(index);
}
}
Try User it:
Collection<Pojo> pojos= service.getPojos(...);
return new PropertySelectionModel<Pojo>(new
NameAdaptable<Pojo>(){...},pojos);
Any ideas?