void (boolean selectReplacedText, boolean isExplicitCall) { if (isExplicitCall) { myAutopopup = true; } if (!getField().isFocusOwner()) return; LookupFile preselected = null; if (myList != null && myCurrentCompletion != null) { int index = myList.getSelectedIndex(); if (index >= 0 && index < myList.getModel().getSize()) { preselected = myList.getSelectedValue(); } } LookupFile _preselected = preselected; myUiUpdater.queue(new Update("textField.suggestCompletion") { @Override public void run() { String completionBase = getCompletionBase(); if (completionBase == null) return; LookupFile file = myFinder.find(completionBase); if (file != null && file.exists() && !file.isDirectory()) { return; // we've entered a complete path already, no need to autopopup completion again (IDEA-78996) } boolean showAdText = completionBase.length() != myPathTextField.getText().length(); EmptyProgressIndicator indicator = new EmptyProgressIndicator(stateForComponent(myPathTextField)); ApplicationManager.getApplication().executeOnPooledThread(() -> { CompletionResult result = ProgressManager.getInstance().runProcess( () -> FileTextFieldUtil.processCompletion(completionBase, myFinder, myFilter, myMacroMap, _preselected), indicator); SwingUtilities.invokeLater(() -> { if (completionBase.equals(getCompletionBase())) { selectCompletionRemoveText(result, selectReplacedText); showCompletionPopup(result, isExplicitCall, showAdText); } }); }); } }); }