diff options
Diffstat (limited to 'src/uk/org/ury/show/ShowChannel.java')
-rw-r--r-- | src/uk/org/ury/show/ShowChannel.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/uk/org/ury/show/ShowChannel.java b/src/uk/org/ury/show/ShowChannel.java new file mode 100644 index 0000000..6aa3ee8 --- /dev/null +++ b/src/uk/org/ury/show/ShowChannel.java @@ -0,0 +1,92 @@ +package uk.org.ury.show; + +import java.util.ArrayList; +import java.util.List; + + +/** + * A channel of ShowItems in a show. + * + * @author Matt Windsor + */ + +public class ShowChannel +{ + /* Items enqueued in channel. */ + private List<ShowItem> items; + + + /** + * Construct a new, empty channel. + */ + + public + ShowChannel () + { + items = new ArrayList<ShowItem> (); + } + + + /** + * Add 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); + } + + + /** + * Add 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); + } + + + /** + * Retrieve 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); + } +} |