use of org.cytoscape.app.internal.event.AppsChangedListener in project cytoscape-impl by cytoscape.
the class CurrentlyInstalledAppsPanel method setupAppListener.
/**
* Registers a listener to the {@link AppManager} to listen for app change events in order to rebuild the table
*/
private void setupAppListener() {
appListener = new AppsChangedListener() {
@Override
public void appsChanged(AppsChangedEvent event) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Set<App> selectedApps = getSelectedApps();
// Clear table
DefaultTableModel tableModel = (DefaultTableModel) appsAvailableTable.getModel();
for (int rowIndex = tableModel.getRowCount() - 1; rowIndex >= 0; rowIndex--) {
tableModel.removeRow(rowIndex);
}
// Re-populate table
populateTable();
// Update labels
updateLabels();
// Re-select previously selected apps
for (int rowIndex = 0; rowIndex < tableModel.getRowCount(); rowIndex++) {
if (selectedApps.contains(tableModel.getValueAt(rowIndex, 0))) {
appsAvailableTable.addRowSelectionInterval(rowIndex, rowIndex);
}
}
}
});
}
};
appManager.addAppListener(appListener);
}
Aggregations