package com.google.gsoc.web.pages;
import java.util.ArrayList;
import java.util.List;
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import com.google.gsoc.encoder.PersonPrimaryKeyEncoder;
import com.google.gsoc.entity.Person;
import com.google.gsoc.model.PersonSelectModel;
public class MixinAutoCompleteSelectDemo {
private static final PersonPrimaryKeyEncoder PERSON_PRIMARY_KEY_ENCODER = new PersonPrimaryKeyEncoder();
@SuppressWarnings("unused")
@Property
@Persist("flash")
private String message;
@Property
@Persist
private Person person;
@Property
@Persist
private Person friend;
public void onActivate(String context) {
this.person = null;
this.friend = null;
}
@OnEvent(component = "form", value = EventConstants.SUCCESS)
public void submit() {
message = "Person: " + person.getName();
if(friend != null)
message += ", Friend: " + friend.getName();
}
public SelectModel getPersonSM() {
List<Person> list = new ArrayList<Person>();
if(person != null)
list.add(person);
return new PersonSelectModel(list);
}
public SelectModel getFriendSM() {
List<Person> list = new ArrayList<Person>();
if(friend != null)
list.add(friend);
return new PersonSelectModel(list);
}
SelectModel onProvideCompletionsFromPerson(String partial)
{
List<Person> list = CollectionFactory.newList();
for(Person p : Person.getPersons())
{
if(p.getName().toUpperCase().indexOf(partial.toUpperCase()) >= 0 )
list.add(p);
}
return new PersonSelectModel(list);
}
SelectModel onProvideCompletionsFromFriend(String partial)
{
List<Person> list = CollectionFactory.newList();
for(Person p : Person.getPersons())
{
if(p.getName().toUpperCase().indexOf(partial.toUpperCase()) >= 0 )
list.add(p);
}
return new PersonSelectModel(list);
}
public ValueEncoder<Person> getEncoder() {
return PERSON_PRIMARY_KEY_ENCODER;
}
}