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    }