void () { if (!myUpdating.get()) myUpdating.set(true); JBLoadingPanel loadingPanel = getLoadingPanel(); if (!loadingPanel.isLoading()) { loadingPanel.startLoading(); if (myUpdater == null) { startAndSetUpdater(new Updater(loadingPanel, 100)); } } Application app = ApplicationManager.getApplication(); app.executeOnPooledThread(() -> { if (myDisposed) return; myTree.updateVisibility(mySettings); ArrayList<DirDiffElementImpl> elements = new ArrayList<>(); fillElements(myTree, elements); Runnable uiThread = () -> { if (myDisposed) return; clear(); myElements.addAll(elements); myUpdating.set(false); fireTableDataChanged(); this.text.set(""); if (loadingPanel.isLoading()) { loadingPanel.stopLoading(); } if (mySelectionConfig == null) { selectFirstRow(); } else { mySelectionConfig.restore(); } myPanel.update(true); }; if (myProject == null || myProject.isDefault()) { SwingUtilities.invokeLater(uiThread); } else { app.invokeLater(uiThread, ModalityState.any()); } }); }