private boolean updateLookup() { ApplicationManager.getApplication().assertIsDispatchThread(); if (isOutdated()) return false; boolean justShown = false; if (!myLookup.isShown() && shouldShowLookup()) { if (hideAutopopupIfMeaningless()) { return false; } if (StringUtil.isEmpty(myLookup.getAdvertisementText()) && !isAutopopupCompletion()) { final String text = DefaultCompletionContributor.getDefaultAdvertisementText(myParameters); if (text != null) { myLookup.setAdvertisementText(text); } } if (!myLookup.showLookup()) { return false; } justShown = true; } myLookup.refreshUi(true); hideAutopopupIfMeaningless(); if (justShown) { myLookup.ensureSelectionVisible(); } return true; }
private boolean updateLookup() { ApplicationManager.getApplication().assertIsDispatchThread(); if (isOutdated() || !shouldShowLookup()) return false; boolean justShown = false; if (!myLookup.isShown()) { if (hideAutopopupIfMeaningless()) { return false; } if (Registry.is("dump.threads.on.empty.lookup") && myLookup.isCalculating() && myLookup.getItems().isEmpty()) { PerformanceWatcher.getInstance().dumpThreads(true); } if (StringUtil.isEmpty(myLookup.getAdvertisementText()) && !isAutopopupCompletion()) { final String text = DefaultCompletionContributor.getDefaultAdvertisementText(myParameters); if (text != null) { myLookup.setAdvertisementText(text); } } if (!myLookup.showLookup()) { return false; } justShown = true; } myLookup.refreshUi(true, justShown); hideAutopopupIfMeaningless(); if (justShown) { myLookup.ensureSelectionVisible(); } return true; }
public void scheduleRestart() { ApplicationManager.getApplication().assertIsDispatchThread(); cancel(); final CompletionProgressIndicator current = CompletionServiceImpl.getCompletionService().getCurrentCompletion(); if (this != current) { LOG.error(current + "!=" + this); } if (isAutopopupCompletion() && !myLookup.isShown()) { if (CompletionServiceImpl.getCompletionService().getCurrentCompletion() == this) { closeAndFinish(true); } AutoPopupController.getInstance(getProject()).scheduleAutoPopup(myEditor, null); return; } hideAutopopupIfMeaningless(); CompletionPhase oldPhase = CompletionServiceImpl.getCompletionPhase(); if (oldPhase instanceof CompletionPhase.CommittingDocuments) { ((CompletionPhase.CommittingDocuments) oldPhase).replaced = true; } final CompletionPhase.CommittingDocuments phase = new CompletionPhase.CommittingDocuments(this, myEditor); CompletionServiceImpl.setCompletionPhase(phase); final Project project = getProject(); ApplicationManager.getApplication() .invokeLater( new Runnable() { @Override public void run() { CompletionAutoPopupHandler.runLaterWithCommitted( project, myEditor.getDocument(), new Runnable() { @Override public void run() { if (phase.checkExpired()) return; CompletionAutoPopupHandler.invokeCompletion( myParameters.getCompletionType(), isAutopopupCompletion(), project, myEditor, myParameters.getInvocationCount(), true); } }); } }, project.getDisposed()); }
public CompletionProgressIndicator( final Editor editor, CompletionParameters parameters, CodeCompletionHandlerBase handler, Semaphore freezeSemaphore, final OffsetMap offsetMap, boolean hasModifiers) { myEditor = editor; myParameters = parameters; myHandler = handler; myFreezeSemaphore = freezeSemaphore; myOffsetMap = offsetMap; myLookup = (LookupImpl) parameters.getLookup(); myLookup.setArranger(new CompletionLookupArranger(parameters, this)); myLookup.addLookupListener(myLookupListener); myLookup.setCalculating(true); myLookupManagerListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getNewValue() != null) { LOG.error( "An attempt to change the lookup during completion, phase = " + CompletionServiceImpl.getCompletionPhase()); } } }; LookupManager.getInstance(getProject()).addPropertyChangeListener(myLookupManagerListener); myQueue = new MergingUpdateQueue( "completion lookup progress", 200, true, myEditor.getContentComponent()); myQueue.setPassThrough(false); ApplicationManager.getApplication().assertIsDispatchThread(); addMapToDispose(offsetMap); if (ApplicationManager.getApplication().isUnitTestMode()) { return; } if (!myLookup.isShown()) { scheduleAdvertising(); } if (hasModifiers) { trackModifiers(); } }
private void freezeTopItems(LookupImpl lookup, LinkedHashSet<LookupElement> model) { myFrozenItems.clear(); if (lookup.isShown()) { myFrozenItems.addAll(model); } }