001 package nl.cwi.sen1.gui.plugin.data;
002
003 import java.util.Collection;
004 import java.util.Iterator;
005 import java.util.List;
006
007 import javax.swing.AbstractListModel;
008
009 public class ListModel<E> extends AbstractListModel {
010 private List<E> list;
011
012 public ListModel(List<E> list) {
013 this.list = list;
014 }
015
016 public void setList(List<E> list) {
017 this.list = list;
018 }
019
020 public Object getElementAt(int index) {
021 if (index >= 0 && index < list.size()) {
022 return list.get(index);
023 }
024 return null;
025 }
026
027 public int getSize() {
028 return list.size();
029 }
030
031 public void elementAdded() {
032 fireIntervalAdded(list, list.size() - 1, list.size());
033 }
034
035 public void add(E o) {
036 list.add(list.size(), o);
037 elementAdded();
038 }
039
040 public void remove(Object o) {
041 list.remove(o);
042 }
043
044 public void removeAll(Collection<?> c) {
045 list.removeAll(c);
046 }
047
048 public void addAll(Collection<? extends E> c) {
049 Iterator<? extends E> iter = c.iterator();
050
051 while (iter.hasNext()) {
052 list.add(list.size(), iter.next());
053 }
054
055 fireIntervalAdded(list, list.size() - c.size(), list.size());
056 }
057
058 public String toString() {
059 return list.toString();
060 }
061
062 public Iterator<E> iterator() {
063 return list.iterator();
064 }
065
066 public boolean contains(Object o) {
067 return list.contains(o);
068 }
069 }