/* * ShowChannel.java * ------------------ * * Part of the URY Presentation Suite * * V0.00 2011/03/21 * * (C) 2011 URY Computing */ package uk.org.ury.common.show; import java.util.ArrayList; import java.util.List; import javax.swing.AbstractListModel; import uk.org.ury.common.show.item.ShowItem; /** * A channel of ShowItems in a show. * * @author Matt Windsor */ public class ShowChannel extends AbstractListModel { /** * */ private static final long serialVersionUID = -4651104185166068150L; /* Items enqueued in channel. */ private List items; /** * Constructs a new, empty channel. */ public ShowChannel() { items = new ArrayList(); } /** * Adds a new item to the channel. * * @param index * The position at which to add the item. * * @param item * The new item to add. * * @throws IllegalArgumentException * if the item is null, the index is negative or the index is * out of bounds. */ public void add(int index, ShowItem item) { if (item == null) throw new IllegalArgumentException("Item is null."); if (index < 0 || index >= items.size()) throw new IllegalArgumentException("Index " + index + " out of bounds."); items.add(index, item); fireIntervalAdded(this, index, index); } /** * Adds a new item to the end of the channel. * * @param item * The new item to add. */ public void add(ShowItem item) { if (item == null) throw new IllegalArgumentException("Item is null."); items.add(item); fireIntervalAdded(this, items.size() - 1, items.size() - 1); } /** * Retrieves an item from the channel. * * @param index * The index of the item to retrieve from the channel. * * @return the item at the given index in the list. * * @throws IllegalArgumentException * if the index is negative or overflowing. */ public ShowItem get(int index) { if (index < 0 || index >= items.size()) throw new IllegalArgumentException("Index " + index + " out of bounds."); return items.get(index); } /** * List model retrieval wrapper for get. * * @param index * The index of the item to retrieve from the channel. * * @return the item at the given index in the list. */ @Override public Object getElementAt(int index) { return get(index); } /** * @return the size of the list. */ @Override public int getSize() { return items.size(); } }