/* * Copyright 2012 Igor Vaynberg * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with * the License. You may obtain a copy of the License in the LICENSE file, or at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ package com.vaynberg.wicket.select2; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; /** * Response that will be sent to Select2 after it queries for matching choices. * * @author igor * * @param <T> * type of choice object */ public class Response<T> implements Iterable<T> { private List<T> results = new ArrayList<T>(); private Boolean hasMore; public Response() { } /** * @return modifiable results collection */ public List<T> getResults() { return results; } /** * Sets the results collection. Collection can also be incrementally built using {@link #add(Object)} and * {@link #addAll(Collection)} methods. * * @param results * @return {@code this} for chaining */ public Response<T> setResults(List<T> results) { this.results = results; return this; } /** * @return the {@code mode} flag used to tell Select2 whether or not there are more results available. */ public Boolean getHasMore() { return hasMore; } /** * Sets the {@code more} flag used to tell Select2 whether or not there are more results available. * * @param more * more flag * @return {@code this} for chaining */ public Response<T> setHasMore(Boolean more) { this.hasMore = more; return this; } /** * Adds choices to the collection * * @param choice * @return {@code this} for chaining */ public Response<T> addAll(Collection<? extends T> choice) { results.addAll(choice); return this; } /** * Adds a choice to the collection * * @param choice * @return {@code this} for chaining */ public <Z extends T> Response<T> add(Z choice) { results.add(choice); return this; } @Override public Iterator<T> iterator() { return results.iterator(); } /** * @return number of choices added */ public int size() { return results.size(); } }