5781 prevent listener from responding to events it should not respond to

This commit is contained in:
William Schaefer 2019-11-26 17:22:13 -05:00
parent e60d96f341
commit ca73ad4430

View File

@ -75,6 +75,7 @@ public class ResultsPanel extends javax.swing.JPanel {
private PageWorker pageWorker; private PageWorker pageWorker;
private final List<SwingWorker<Void, Void>> thumbnailWorkers = new ArrayList<>(); private final List<SwingWorker<Void, Void>> thumbnailWorkers = new ArrayList<>();
private final DefaultListModel<AbstractFile> instancesListModel = new DefaultListModel<>(); private final DefaultListModel<AbstractFile> instancesListModel = new DefaultListModel<>();
private ListSelectionListener listener = null;
/** /**
* Creates new form ResultsPanel. * Creates new form ResultsPanel.
@ -88,11 +89,15 @@ public class ResultsPanel extends javax.swing.JPanel {
videoThumbnailViewer.addListSelectionListener((e) -> { videoThumbnailViewer.addListSelectionListener((e) -> {
if (!e.getValueIsAdjusting()) { if (!e.getValueIsAdjusting()) {
populateInstancesList(); populateInstancesList();
} else {
instancesList.clearSelection();
} }
}); });
imageThumbnailViewer.addListSelectionListener((e) -> { imageThumbnailViewer.addListSelectionListener((e) -> {
if (!e.getValueIsAdjusting()) { if (!e.getValueIsAdjusting()) {
populateInstancesList(); populateInstancesList();
} else {
instancesList.clearSelection();
} }
}); });
//Add the context menu when right clicking //Add the context menu when right clicking
@ -127,7 +132,9 @@ public class ResultsPanel extends javax.swing.JPanel {
* *
* @param listener The ListSelectionListener to add to the instances list. * @param listener The ListSelectionListener to add to the instances list.
*/ */
void addListSelectionListener(ListSelectionListener listener) { void addListSelectionListener(ListSelectionListener newListener) {
instancesList.removeListSelectionListener(listener);
listener = newListener;
instancesList.addListSelectionListener(listener); instancesList.addListSelectionListener(listener);
} }
@ -136,10 +143,12 @@ public class ResultsPanel extends javax.swing.JPanel {
*/ */
synchronized void populateInstancesList() { synchronized void populateInstancesList() {
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
instancesList.removeListSelectionListener(listener);
instancesListModel.removeAllElements(); instancesListModel.removeAllElements();
for (AbstractFile file : getInstancesForSelected()) { for (AbstractFile file : getInstancesForSelected()) {
instancesListModel.addElement(file); instancesListModel.addElement(file);
} }
instancesList.addListSelectionListener(listener);
if (!instancesListModel.isEmpty()) { if (!instancesListModel.isEmpty()) {
instancesList.setSelectedIndex(0); instancesList.setSelectedIndex(0);
} }