import javax.swing.ListModel;
import javax.swing.event.ListDataListener;

public class ReducedListAdapter implements ListModel {
  
  public ReducedListAdapter(ListModel listModel, int maxSize) {
    this.maxSize=maxSize;
    this.listModel= listModel;
  }

  public int getSize() {
    return Math.min(maxSize,this.listModel.getSize());
  }

  public Object getElementAt(int index) {
    return listModel.getElementAt(index);
  }

  // BAD: need to don't notify if index<maxSize
  public void addListDataListener(ListDataListener l) {
    listModel.addListDataListener(l);
  }

  // BAD: need to don't notify if index<maxSize
  public void removeListDataListener(ListDataListener l) {
    listModel.removeListDataListener(l);
  }
  
  private final int maxSize;
  private final ListModel listModel;
}