001 package org.tynamo.util;
002
003 import org.apache.tapestry5.OptionGroupModel;
004 import org.apache.tapestry5.OptionModel;
005 import org.apache.tapestry5.internal.OptionModelImpl;
006 import org.apache.tapestry5.ioc.services.PropertyAccess;
007 import org.apache.tapestry5.util.AbstractSelectModel;
008
009 import java.util.ArrayList;
010 import java.util.List;
011 import java.util.Collections;
012
013 public class GenericSelectionModel<T> extends AbstractSelectModel
014 {
015
016 private final String labelField;
017
018 private final List<T> list;
019
020 private final PropertyAccess adapter;
021
022 public GenericSelectionModel(List<T> list)
023 {
024 this.labelField = null;
025 this.list = list;
026 this.adapter = null;
027 }
028
029 public GenericSelectionModel(List<T> list, String labelField, PropertyAccess adapter)
030 {
031 this.labelField = labelField;
032 this.list = list;
033 this.adapter = adapter;
034 }
035
036 public List<OptionGroupModel> getOptionGroups()
037 {
038 return Collections.EMPTY_LIST;
039 }
040
041 public List<OptionModel> getOptions()
042 {
043 List<OptionModel> optionModelList = new ArrayList<OptionModel>();
044 for (T obj : list)
045 {
046 if (labelField == null)
047 {
048 optionModelList.add(new OptionModelImpl(obj.toString(), obj));
049 } else
050 {
051 optionModelList.add(new OptionModelImpl(adapter.get(obj, labelField).toString(), obj));
052 }
053 }
054 return optionModelList;
055 }
056 }