package com.link_intersystems.gitdirstat.ui;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultListSelectionModel;
import javax.swing.ListSelectionModel;
import com.link_intersystems.gitdirstat.domain.Ref;
import com.link_intersystems.swing.ListAdapterListModel;
import com.link_intersystems.swing.ListModelSelection;
public class RefsListModel extends ListAdapterListModel<Ref> {
private static final long serialVersionUID = -1991729532536558847L;
private ListSelectionModel refsSelectionModel = new DefaultListSelectionModel();
private ListModelSelection<? extends Ref> refsListModelSelection = new ListModelSelection<Ref>(
this, refsSelectionModel);
@Override
public void setList(List<? extends Ref> list) {
List<Ref> oldList = new ArrayList<Ref>(getList());
super.setList(list);
if (oldList != null && !oldList.equals(list)) {
setAllRefSelected();
}
}
private void setAllRefSelected() {
int size = getSize();
refsSelectionModel.setValueIsAdjusting(true);
refsSelectionModel.clearSelection();
if (size > 0) {
refsSelectionModel.addSelectionInterval(0, size - 1);
}
refsSelectionModel.setValueIsAdjusting(false);
}
public ListSelectionModel getListSelectionModel() {
return refsSelectionModel;
}
public ListModelSelection<? extends Ref> getSelectionModel() {
return refsListModelSelection;
}
}