package com.link_intersystems.swing;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.DefaultListSelectionModel;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
public class InvertSelectionAction extends AbstractAction {
private static final long serialVersionUID = -3842791426045430962L;
private ListSelectionModel listSelectionModel;
private ListModel listModel;
public InvertSelectionAction(ListSelectionModel listSelectionModel,
ListModel listModel) {
this.listSelectionModel = listSelectionModel;
this.listModel = listModel;
}
@Override
public void actionPerformed(ActionEvent e) {
int size = listModel.getSize();
listSelectionModel.setValueIsAdjusting(true);
ListSelectionModelMemento listSelectionModelMemento = new ListSelectionModelMemento();
listSelectionModelMemento.save(listSelectionModel);
DefaultListSelectionModel oldSelection = new DefaultListSelectionModel();
listSelectionModelMemento.restore(oldSelection);
listSelectionModel.clearSelection();
for (int i = 0; i < size; i++) {
if (!oldSelection.isSelectedIndex(i)) {
listSelectionModel.addSelectionInterval(i, i);
}
}
listSelectionModel.setValueIsAdjusting(false);
}
}