package com.revolsys.swing.list; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; import java.util.List; import javax.swing.AbstractListModel; import com.revolsys.util.Property; public class ExternalListModel<T> extends AbstractListModel implements Serializable, PropertyChangeListener { private static final long serialVersionUID = 1L; private final List<T> list; public ExternalListModel(final List<T> list) { this.list = list; Property.addListener(list, this); } @Override public T getElementAt(final int index) { if (index < this.list.size()) { return this.list.get(index); } else { return null; } } @Override public int getSize() { return this.list.size(); } @Override public void propertyChange(final PropertyChangeEvent event) { fireContentsChanged(this, 0, this.list.size()); } }