OrderList is used to sort a collection via Drag and Drop based reordering, transition effects, pojo support, country support and more.
<h:form>
<p:growl id="msgs" showDetail="true" skipDetailIfEqualsSummary="true"/>
<div class="card">
<h5>Basic</h5>
<p:orderList value="#{orderListView.cities}" var="city" controlsLocation="none" itemLabel="#{city}" itemValue="#{city}" />
</div>
<div class="card">
<h5>Advanced</h5>
<p:orderList value="#{orderListView.countries}" var="country" itemValue="#{country}"
converter="#{countryConverter}" controlsLocation="left" responsive="true">
<p:ajax event="select" listener="#{orderListView.onSelect}" update="msgs"/>
<p:ajax event="unselect" listener="#{orderListView.onUnselect}" update="msgs"/>
<p:ajax event="reorder" listener="#{orderListView.onReorder}" update="msgs"/>
<f:facet name="caption">Available</f:facet>
<p:column style="width:40px">
<span class="flag flag-#{country.code}" style="width: 30px; height: 20px"/>
</p:column>
<p:column>
<h:outputText value="#{country.name}"/>
</p:column>
</p:orderList>
</div>
</h:form>
@Named
@RequestScoped
public class OrderListView {
@Inject
private CountryService service;
private List<String> cities;
private List<Country> countries;
@PostConstruct
public void init() {
//Cities
cities = new ArrayList<>();
cities.add("San Francisco");
cities.add("London");
cities.add("Paris");
cities.add("Istanbul");
cities.add("Berlin");
cities.add("Barcelona");
cities.add("Rome");
//Countrys
countries = service.getCountries().subList(0,10);
}
public CountryService getService() {
return service;
}
public void setService(CountryService service) {
this.service = service;
}
public List<String> getCities() {
return cities;
}
public void setCities(List<String> cities) {
this.cities = cities;
}
public List<Country> getCountries() {
return countries;
}
public void setCountries(List<Country> countries) {
this.countries = countries;
}
public void onSelect(SelectEvent<Country> event) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Item Selected", event.getObject().getName()));
}
public void onUnselect(UnselectEvent<Country> event) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Item Unselected", event.getObject().getName()));
}
public void onReorder() {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "List Reordered", null));
}
}
@Named
@ApplicationScoped
public class CountryService {
private List<Country> countries;
@PostConstruct
public void init() {
countries = new ArrayList<>();
String[] locales = Locale.getISOCountries();
for (int i = 0; i < locales.length; i++) {
Locale country = new Locale("", locales[i]);
countries.add(new Country(i, country.getDisplayCountry(), country.getCountry().toLowerCase()));
}
Collections.sort(countries, (Country c1, Country c2) -> c1.getName().compareTo(c2.getName()));
}
public List<Country> getCountries() {
return new ArrayList<>(countries);
}
}