Skip to content

Commit bcba078

Browse files
committed
Move getMaxMessageId off EDT in MessageBrowser.runSearch
getMaxMessageId is a blocking HTTP call that was executed on the Swing EDT, freezing the UI while waiting for the server response. Moved it into SwingWorker.doInBackground(); all subsequent UI updates run in done() back on the EDT. Signed-off-by: Nico Piel <nico.piel@hotmail.de>
1 parent 5423492 commit bcba078

1 file changed

Lines changed: 38 additions & 25 deletions

File tree

client/src/com/mirth/connect/client/ui/browsers/message/MessageBrowser.java

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -654,39 +654,52 @@ protected boolean generateMessageFilter() {
654654
advancedSearchPopup.applySelectionsToFilter(messageFilter);
655655
selectedMetaDataIds = messageFilter.getIncludedMetaDataIds();
656656

657-
if (messageFilter.getMaxMessageId() == null) {
658-
try {
659-
Long maxMessageId = parent.mirthClient.getMaxMessageId(channelId);
660-
messageFilter.setMaxMessageId(maxMessageId);
661-
} catch (ClientException e) {
662-
parent.alertThrowable(parent, e);
663-
return false;
664-
}
665-
}
666-
667657
return true;
668658
}
669659

670660
protected void runSearch() {
671-
if (generateMessageFilter()) {
672-
updateFilterButtonFont(Font.PLAIN);
661+
if (!generateMessageFilter()) {
662+
return;
663+
}
673664

674-
try {
675-
configurePaginatedMessageList();
676-
} catch (NumberFormatException e) {
677-
parent.alertError(parent, "Invalid page size.");
678-
return;
679-
} catch (Exception e) {
680-
parent.alertError(parent, "Error configuring paginated message list: " + e.getMessage());
665+
new SwingWorker<Long, Void>() {
666+
@Override
667+
protected Long doInBackground() throws Exception {
668+
if (messageFilter.getMaxMessageId() == null) {
669+
return parent.mirthClient.getMaxMessageId(channelId);
670+
}
671+
return messageFilter.getMaxMessageId();
681672
}
682673

683-
countButton.setVisible(true);
684-
clearCache();
685-
loadPageNumber(1);
674+
@Override
675+
protected void done() {
676+
try {
677+
messageFilter.setMaxMessageId(get());
678+
} catch (Exception e) {
679+
parent.alertThrowable(parent, e);
680+
return;
681+
}
686682

687-
updateSearchCriteriaPane();
688-
auditSearch();
689-
}
683+
updateFilterButtonFont(Font.PLAIN);
684+
685+
try {
686+
configurePaginatedMessageList();
687+
} catch (NumberFormatException e) {
688+
parent.alertError(parent, "Invalid page size.");
689+
return;
690+
} catch (Exception e) {
691+
parent.alertError(parent, "Error configuring paginated message list: " + e.getMessage());
692+
return;
693+
}
694+
695+
countButton.setVisible(true);
696+
clearCache();
697+
loadPageNumber(1);
698+
699+
updateSearchCriteriaPane();
700+
auditSearch();
701+
}
702+
}.execute();
690703
}
691704

692705
protected void configurePaginatedMessageList() throws Exception {

0 commit comments

Comments
 (0)