}
public void valueChanged(ListSelectionEvent lse){
if (lse.getValueIsAdjusting()) return; //it's not a final event
SpreadSheetListSelectionModel listSelectionModel = (SpreadSheetListSelectionModel)lse.getSource();
SpreadSheetSelectionModel selectionModel=listSelectionModel.getSelectionModel();
CommonSpreadSheet spreadSheet=(CommonSpreadSheet)selectionModel.getTable();
CommonSpreadSheetModel model=(CommonSpreadSheetModel)spreadSheet.getModel();
int[] rows=spreadSheet.getSelectedRows();
List nodes=new ArrayList(rows.length);
Node currentNode = null;
int selectedRow = spreadSheet.getSelectedRow();
for (int i=0;i<rows.length;i++){
nodes.add(model.getNode(rows[i]).getNode());
if (selectedRow == rows[i]) // also set current row
currentNode = model.getNode(rows[i]).getNode();
//filter void nodes?
}
if (nodes.size()>0) spreadSheet.fireContentsChanged(spreadSheet,nodes,currentNode);
}