6781 fix use of invoke later

This commit is contained in:
William Schaefer 2020-11-18 18:57:34 -05:00
parent 4950e0e165
commit 59df1bb378
7 changed files with 87 additions and 109 deletions

View File

@ -63,10 +63,9 @@ class ArtifactsWorker extends SwingWorker<List<BlackboardArtifact>, Void> {
@Override @Override
protected void done() { protected void done() {
List<BlackboardArtifact> listOfArtifacts = new ArrayList<>();
if (!isCancelled()) { if (!isCancelled()) {
try { try {
listOfArtifacts.addAll(get()); DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.ArtifactSearchResultEvent(artifactType, get()));
} catch (InterruptedException | ExecutionException ex) { } catch (InterruptedException | ExecutionException ex) {
logger.log(Level.SEVERE, "Exception while trying to get list of artifacts for Domain details for artifact type: " logger.log(Level.SEVERE, "Exception while trying to get list of artifacts for Domain details for artifact type: "
+ artifactType.getDisplayName() + " and domain: " + domain, ex); + artifactType.getDisplayName() + " and domain: " + domain, ex);
@ -74,7 +73,5 @@ class ArtifactsWorker extends SwingWorker<List<BlackboardArtifact>, Void> {
//Worker was cancelled after previously finishing its background work, exception ignored to cut down on non-helpful logging //Worker was cancelled after previously finishing its background work, exception ignored to cut down on non-helpful logging
} }
} }
DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.ArtifactSearchResultEvent(artifactType, listOfArtifacts));
} }
} }

View File

@ -118,10 +118,7 @@ final class DiscoveryDialog extends javax.swing.JDialog {
@Override @Override
public void itemStateChanged(ItemEvent event) { public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) { if (event.getStateChange() == ItemEvent.SELECTED) {
SwingUtilities.invokeLater(() -> {
getSelectedFilterPanel().setLastGroupingAttributeType(groupByCombobox.getItemAt(groupByCombobox.getSelectedIndex())); getSelectedFilterPanel().setLastGroupingAttributeType(groupByCombobox.getItemAt(groupByCombobox.getSelectedIndex()));
});
} }
} }
}); });
@ -129,9 +126,7 @@ final class DiscoveryDialog extends javax.swing.JDialog {
@Override @Override
public void itemStateChanged(ItemEvent event) { public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) { if (event.getStateChange() == ItemEvent.SELECTED) {
SwingUtilities.invokeLater(() -> {
getSelectedFilterPanel().setLastSortingMethod(orderByCombobox.getItemAt(orderByCombobox.getSelectedIndex())); getSelectedFilterPanel().setLastSortingMethod(orderByCombobox.getItemAt(orderByCombobox.getSelectedIndex()));
});
} }
} }
}); });
@ -139,9 +134,7 @@ final class DiscoveryDialog extends javax.swing.JDialog {
@Override @Override
public void itemStateChanged(ItemEvent event) { public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) { if (event.getStateChange() == ItemEvent.SELECTED) {
SwingUtilities.invokeLater(() -> {
getSelectedFilterPanel().setLastGroupSortingAlg(groupSortingComboBox.getItemAt(groupSortingComboBox.getSelectedIndex())); getSelectedFilterPanel().setLastGroupSortingAlg(groupSortingComboBox.getItemAt(groupSortingComboBox.getSelectedIndex()));
});
} }
} }
}); });

View File

@ -125,25 +125,25 @@ final class DomainArtifactsTabPanel extends JPanel {
*/ */
@Subscribe @Subscribe
void handleArtifactSearchResultEvent(DiscoveryEventUtils.ArtifactSearchResultEvent artifactresultEvent) { void handleArtifactSearchResultEvent(DiscoveryEventUtils.ArtifactSearchResultEvent artifactresultEvent) {
SwingUtilities.invokeLater(() -> {
if (artifactType == artifactresultEvent.getArtifactType()) { if (artifactType == artifactresultEvent.getArtifactType()) {
SwingUtilities.invokeLater(() -> {
listPanel.removeListSelectionListener(listener); listPanel.removeListSelectionListener(listener);
listPanel.addArtifacts(artifactresultEvent.getListOfArtifacts()); listPanel.addArtifacts(artifactresultEvent.getListOfArtifacts());
status = ArtifactRetrievalStatus.POPULATED;
setEnabled(!listPanel.isEmpty());
listPanel.addSelectionListener(listener); listPanel.addSelectionListener(listener);
listPanel.selectFirst(); listPanel.selectFirst();
revalidate();
repaint();
try { try {
DiscoveryEventUtils.getDiscoveryEventBus().unregister(this); DiscoveryEventUtils.getDiscoveryEventBus().unregister(this);
} catch (IllegalArgumentException notRegistered) { } catch (IllegalArgumentException notRegistered) {
logger.log(Level.INFO, "Attempting to unregister tab which was not registered"); logger.log(Level.INFO, "Attempting to unregister tab which was not registered");
// attempting to remove a tab that was never registered // attempting to remove a tab that was never registered
} }
status = ArtifactRetrievalStatus.POPULATED;
setEnabled(!listPanel.isEmpty());
validate();
repaint();
}
}); });
} }
}
/** /**
* Get the type of Artifact the panel exists for. * Get the type of Artifact the panel exists for.

View File

@ -96,8 +96,8 @@ final class DomainDetailsPanel extends JPanel {
* Run the worker which retrieves the list of artifacts for the domain to * Run the worker which retrieves the list of artifacts for the domain to
* populate the details area. * populate the details area.
*/ */
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
private void runDomainWorker() { private void runDomainWorker() {
SwingUtilities.invokeLater(() -> {
Component selectedComponent = jTabbedPane1.getSelectedComponent(); Component selectedComponent = jTabbedPane1.getSelectedComponent();
if (selectedComponent instanceof DomainArtifactsTabPanel) { if (selectedComponent instanceof DomainArtifactsTabPanel) {
if (detailsWorker != null && !detailsWorker.isDone()) { if (detailsWorker != null && !detailsWorker.isDone()) {
@ -105,13 +105,12 @@ final class DomainDetailsPanel extends JPanel {
} }
DomainArtifactsTabPanel selectedTab = (DomainArtifactsTabPanel) selectedComponent; DomainArtifactsTabPanel selectedTab = (DomainArtifactsTabPanel) selectedComponent;
if (selectedTab.getStatus() == DomainArtifactsTabPanel.ArtifactRetrievalStatus.UNPOPULATED) { if (selectedTab.getStatus() == DomainArtifactsTabPanel.ArtifactRetrievalStatus.UNPOPULATED) {
selectedTab.setStatus(DomainArtifactsTabPanel.ArtifactRetrievalStatus.POPULATING);
DiscoveryEventUtils.getDiscoveryEventBus().register(selectedTab); DiscoveryEventUtils.getDiscoveryEventBus().register(selectedTab);
selectedTab.setStatus(DomainArtifactsTabPanel.ArtifactRetrievalStatus.POPULATING);
detailsWorker = new ArtifactsWorker(selectedTab.getArtifactType(), domain); detailsWorker = new ArtifactsWorker(selectedTab.getArtifactType(), domain);
detailsWorker.execute(); detailsWorker.execute();
} }
} }
});
} }
/** /**
@ -122,8 +121,8 @@ final class DomainDetailsPanel extends JPanel {
*/ */
@Subscribe @Subscribe
void handlePopulateDomainTabsEvent(DiscoveryEventUtils.PopulateDomainTabsEvent populateEvent) { void handlePopulateDomainTabsEvent(DiscoveryEventUtils.PopulateDomainTabsEvent populateEvent) {
SwingUtilities.invokeLater(() -> {
domain = populateEvent.getDomain(); domain = populateEvent.getDomain();
SwingUtilities.invokeLater(() -> {
resetTabsStatus(); resetTabsStatus();
selectTab(); selectTab();
runDomainWorker(); runDomainWorker();

View File

@ -70,7 +70,6 @@ final class FileDetailsPanel extends javax.swing.JPanel {
@Override @Override
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) { if (SwingUtilities.isRightMouseButton(e)) {
SwingUtilities.invokeLater(() -> {
instancesList.setSelectedIndex(instancesList.locationToIndex(e.getPoint())); instancesList.setSelectedIndex(instancesList.locationToIndex(e.getPoint()));
Set<AbstractFile> files = new HashSet<>(); Set<AbstractFile> files = new HashSet<>();
files.add(instancesList.getSelectedValue()); files.add(instancesList.getSelectedValue());
@ -83,7 +82,6 @@ final class FileDetailsPanel extends javax.swing.JPanel {
menu.add(DeleteFileContentTagAction.getInstance().getMenuForFiles(files)); menu.add(DeleteFileContentTagAction.getInstance().getMenuForFiles(files));
menu.add(AddContentToHashDbAction.getInstance().getMenuForFiles(files)); menu.add(AddContentToHashDbAction.getInstance().getMenuForFiles(files));
menu.show(instancesList, e.getPoint().x, e.getPoint().y); menu.show(instancesList, e.getPoint().x, e.getPoint().y);
});
} }
} }
}); });
@ -91,14 +89,12 @@ final class FileDetailsPanel extends javax.swing.JPanel {
@Override @Override
public void valueChanged(ListSelectionEvent e) { public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) { if (!e.getValueIsAdjusting()) {
SwingUtilities.invokeLater(() -> {
AbstractFile file = getSelectedFile(); AbstractFile file = getSelectedFile();
if (file != null) { if (file != null) {
dataContentPanel.setNode(new TableFilterNode(new FileNode(file), false)); dataContentPanel.setNode(new TableFilterNode(new FileNode(file), false));
} else { } else {
dataContentPanel.setNode(null); dataContentPanel.setNode(null);
} }
});
} }
} }
}; };
@ -127,8 +123,8 @@ final class FileDetailsPanel extends javax.swing.JPanel {
*/ */
@Subscribe @Subscribe
void handlePopulateInstancesListEvent(DiscoveryEventUtils.PopulateInstancesListEvent populateEvent) { void handlePopulateInstancesListEvent(DiscoveryEventUtils.PopulateInstancesListEvent populateEvent) {
SwingUtilities.invokeLater(() -> {
List<AbstractFile> files = populateEvent.getInstances(); List<AbstractFile> files = populateEvent.getInstances();
SwingUtilities.invokeLater(() -> {
if (files.isEmpty()) { if (files.isEmpty()) {
//if there are no files currently remove the current items without removing listener to cause content viewer to reset //if there are no files currently remove the current items without removing listener to cause content viewer to reset
instancesListModel.removeAllElements(); instancesListModel.removeAllElements();

View File

@ -69,10 +69,8 @@ final class GroupListPanel extends javax.swing.JPanel {
*/ */
@Subscribe @Subscribe
void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) { void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) {
SwingUtilities.invokeLater(() -> {
type = searchStartedEvent.getType(); type = searchStartedEvent.getType();
groupKeyList.setListData(new GroupKey[0]); groupKeyList.setListData(new GroupKey[0]);
});
} }
@Messages({"GroupsListPanel.noFileResults.message.text=No files were found for the selected filters.\n\n" @Messages({"GroupsListPanel.noFileResults.message.text=No files were found for the selected filters.\n\n"
@ -94,7 +92,6 @@ final class GroupListPanel extends javax.swing.JPanel {
*/ */
@Subscribe @Subscribe
void handleSearchCompleteEvent(DiscoveryEventUtils.SearchCompleteEvent searchCompleteEvent) { void handleSearchCompleteEvent(DiscoveryEventUtils.SearchCompleteEvent searchCompleteEvent) {
SwingUtilities.invokeLater(() -> {
groupMap = searchCompleteEvent.getGroupMap(); groupMap = searchCompleteEvent.getGroupMap();
searchfilters = searchCompleteEvent.getFilters(); searchfilters = searchCompleteEvent.getFilters();
groupingAttribute = searchCompleteEvent.getGroupingAttr(); groupingAttribute = searchCompleteEvent.getGroupingAttr();
@ -117,7 +114,6 @@ final class GroupListPanel extends javax.swing.JPanel {
} }
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}); });
});
} }
/** /**

View File

@ -182,12 +182,12 @@ final class ResultsPanel extends javax.swing.JPanel {
*/ */
@Subscribe @Subscribe
void handlePageRetrievedEvent(DiscoveryEventUtils.PageRetrievedEvent pageRetrievedEvent) { void handlePageRetrievedEvent(DiscoveryEventUtils.PageRetrievedEvent pageRetrievedEvent) {
SwingUtilities.invokeLater(() -> {
//send populateMesage //send populateMesage
if (pageRetrievedEvent.getType() != DOMAIN) { if (pageRetrievedEvent.getType() != DOMAIN) {
DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.PopulateInstancesListEvent(getInstancesForSelected())); DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.PopulateInstancesListEvent(getInstancesForSelected()));
} }
currentPage = pageRetrievedEvent.getPageNumber(); currentPage = pageRetrievedEvent.getPageNumber();
SwingUtilities.invokeLater(() -> {
updateControls(); updateControls();
resetResultViewer(); resetResultViewer();
if (null != pageRetrievedEvent.getType()) { if (null != pageRetrievedEvent.getType()) {
@ -214,20 +214,17 @@ final class ResultsPanel extends javax.swing.JPanel {
} }
resultsViewerPanel.revalidate(); resultsViewerPanel.revalidate();
resultsViewerPanel.repaint(); resultsViewerPanel.repaint();
} });
);
} }
@Subscribe @Subscribe
void handleCancelBackgroundTasksEvent(DiscoveryEventUtils.CancelBackgroundTasksEvent cancelEvent) { void handleCancelBackgroundTasksEvent(DiscoveryEventUtils.CancelBackgroundTasksEvent cancelEvent) {
SwingUtilities.invokeLater(() -> {
for (SwingWorker<Void, Void> thumbWorker : resultContentWorkers) { for (SwingWorker<Void, Void> thumbWorker : resultContentWorkers) {
if (!thumbWorker.isDone()) { if (!thumbWorker.isDone()) {
thumbWorker.cancel(true); thumbWorker.cancel(true);
} }
} }
resultContentWorkers.clear(); resultContentWorkers.clear();
});
} }
/** /**
@ -336,7 +333,6 @@ final class ResultsPanel extends javax.swing.JPanel {
*/ */
@Subscribe @Subscribe
void handleGroupSelectedEvent(DiscoveryEventUtils.GroupSelectedEvent groupSelectedEvent) { void handleGroupSelectedEvent(DiscoveryEventUtils.GroupSelectedEvent groupSelectedEvent) {
SwingUtilities.invokeLater(() -> {
searchFilters = groupSelectedEvent.getFilters(); searchFilters = groupSelectedEvent.getFilters();
groupingAttribute = groupSelectedEvent.getGroupingAttr(); groupingAttribute = groupSelectedEvent.getGroupingAttr();
groupSort = groupSelectedEvent.getGroupSort(); groupSort = groupSelectedEvent.getGroupSort();
@ -344,6 +340,7 @@ final class ResultsPanel extends javax.swing.JPanel {
selectedGroupKey = groupSelectedEvent.getGroupKey(); selectedGroupKey = groupSelectedEvent.getGroupKey();
resultType = groupSelectedEvent.getResultType(); resultType = groupSelectedEvent.getResultType();
groupSize = groupSelectedEvent.getGroupSize(); groupSize = groupSelectedEvent.getGroupSize();
SwingUtilities.invokeLater(() -> {
resetResultViewer(); resetResultViewer();
setPage(0); setPage(0);
}); });
@ -357,9 +354,9 @@ final class ResultsPanel extends javax.swing.JPanel {
*/ */
@Subscribe @Subscribe
void handleNoResultsEvent(DiscoveryEventUtils.NoResultsEvent noResultsEvent) { void handleNoResultsEvent(DiscoveryEventUtils.NoResultsEvent noResultsEvent) {
SwingUtilities.invokeLater(() -> {
groupSize = 0; groupSize = 0;
currentPage = 0; currentPage = 0;
SwingUtilities.invokeLater(() -> {
updateControls(); updateControls();
videoThumbnailViewer.clearViewer(); videoThumbnailViewer.clearViewer();
imageThumbnailViewer.clearViewer(); imageThumbnailViewer.clearViewer();