package com.hearthsim.gui;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class SortedListModel<E extends Comparable> extends AbstractListModel<E> {
private static final long serialVersionUID = 1L;
ArrayList<E> model; //can't use SortedSet... we need to support duplicates
public SortedListModel() {
model = new ArrayList<>();
}
@Override
public int getSize() {
return model.size();
}
@SuppressWarnings("unchecked")
@Override
public E getElementAt(int index) {
return (E) model.toArray()[index];
}
public void addElement(E element) {
if (model.add(element)) {
Collections.sort(model);
fireContentsChanged(this, 0, getSize());
}
}
public void clear() {
model.clear();
fireContentsChanged(this, 0, getSize());
}
public boolean contains(E element) {
return model.contains(element);
}
public Iterator<E> iterator() {
return model.iterator();
}
public boolean removeElement(E element) {
boolean removed = model.remove(element);
if (removed) {
fireContentsChanged(this, 0, getSize());
}
return removed;
}
public void remove(int index) {
model.remove(index);
fireContentsChanged(this, 0, getSize());
}
}