@Override public void run() { fInvocationOffset= fContentAssistSubjectControlAdapter.getSelectedRange().x; fFilterOffset= fInvocationOffset; fLastCompletionOffset= fFilterOffset; fComputedProposals= computeProposals(fInvocationOffset); int count= (fComputedProposals == null ? 0 : fComputedProposals.length); if (count == 0 && hideWhenNoProposals(autoActivated)) return; if (count == 1 && !autoActivated && canAutoInsert(fComputedProposals[0])) { insertProposal(fComputedProposals[0], (char) 0, 0, fInvocationOffset); hide(); } else { createProposalSelector(); setProposals(fComputedProposals, false); displayProposals(); } } });
/** * Fires a session end event to all registered {@link ICompletionListener}s. * * @since 3.2 */ void fireSessionEndEvent() { if (fContentAssistSubjectControlAdapter != null) { IContentAssistProcessor processor= getProcessor(fContentAssistSubjectControlAdapter, fContentAssistSubjectControlAdapter.getSelectedRange().x); ContentAssistEvent event= new ContentAssistEvent(this, processor); for (ICompletionListener listener : fCompletionListeners) { listener.assistSessionEnded(event); } } }
/** * Causes the context information of the context selected in the context selector * to be displayed in the context information popup. */ private void insertSelectedContext() { int i= fContextSelectorTable.getSelectionIndex(); if (i < 0 || i >= fContextSelectorInput.length) return; int offset= fContentAssistSubjectControlAdapter.getSelectedRange().x; internalShowContextInfo(createContextFrame(fContextSelectorInput[i], offset)); }
/** * Causes the context information of the context selected in the context selector * to be displayed in the context information popup. */ private void insertSelectedContext() { int i= fContextSelectorTable.getSelectionIndex(); if (i < 0 || i >= fContextSelectorInput.length) return; int offset= fContentAssistSubjectControlAdapter.getSelectedRange().x; internalShowContextInfo(createContextFrame(fContextSelectorInput[i], offset)); }
/** * Fires a session end event to all registered {@link ICompletionListener}s. * * @since 3.2 */ void fireSessionEndEvent() { if (fContentAssistSubjectControlAdapter != null) { Set<IContentAssistProcessor> processors= getProcessors(fContentAssistSubjectControlAdapter, fContentAssistSubjectControlAdapter.getSelectedRange().x); if (processors != null) { processors.forEach(processor -> { ContentAssistEvent event= new ContentAssistEvent(this, processor); for (ICompletionListener listener : fCompletionListeners) { listener.assistSessionEnded(event); } }); } } }
/** * Fires a session restart event to all registered {@link ICompletionListener}s. * * @since 3.4 */ void fireSessionRestartEvent() { if (fContentAssistSubjectControlAdapter != null) { Set<IContentAssistProcessor> processors= getProcessors(fContentAssistSubjectControlAdapter, fContentAssistSubjectControlAdapter.getSelectedRange().x); if (processors != null) { processors.forEach(processor -> { ContentAssistEvent event= new ContentAssistEvent(this, processor); for (ICompletionListener listener : fCompletionListeners) { if (listener instanceof ICompletionListenerExtension) ((ICompletionListenerExtension)listener).assistSessionRestarted(event); } }); } } }
@Override public void run() { fInvocationOffset= fContentAssistSubjectControlAdapter.getSelectedRange().x; fFilterOffset= fInvocationOffset; fLastCompletionOffset= fFilterOffset; fFilteredProposals= computeProposals(fInvocationOffset); int count= (fFilteredProposals == null ? 0 : fFilteredProposals.length); if (count == 0 && hideWhenNoProposals(false)) return; if (count == 1 && canAutoInsert(fFilteredProposals[0])) { insertProposal(fFilteredProposals[0], (char) 0, 0, fInvocationOffset); hide(); } else { ensureDocumentListenerInstalled(); if (count > 0 && completeCommonPrefix()) hide(); else { fComputedProposals= fFilteredProposals; createProposalSelector(); setProposals(fComputedProposals, false); displayProposals(); } } } });
/** * Takes the selected proposal and applies it. * * @param stateMask the state mask * @since 3.2 */ private void insertSelectedProposalWithMask(int stateMask) { ICompletionProposal p= getSelectedProposal(); hide(); if (p != null) insertProposal(p, (char) 0, stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x); }
/** * Takes the selected proposal and applies it. * * @param stateMask the state mask * @since 3.2 */ private void insertSelectedProposalWithMask(int stateMask) { ICompletionProposal p= getSelectedProposal(); hide(); if (p != null) insertProposal(p, (char) 0, stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x); }
@Override public void run() { // only do this if no other frames have been added in between if (!fContextFrameStack.isEmpty() && fFrame == fContextFrameStack.peek()) { int offset= fContentAssistSubjectControlAdapter.getSelectedRange().x; // iterate all contexts on the stack while (Helper.okToUse(fContextInfoPopup) && !fContextFrameStack.isEmpty()) { ContextFrame top= fContextFrameStack.peek(); if (top.fValidator == null || !top.fValidator.isContextInformationValid(offset)) { hideContextInfoPopup(); // loop variant: reduces the number of contexts on the stack } else if (top.fPresenter != null && top.fPresenter.updatePresentation(offset, fTextPresentation)) { int widgetOffset= fContentAssistSubjectControlAdapter.getWidgetSelectionRange().x; TextPresentation.applyTextPresentation(fTextPresentation, fContextInfoText); resize(widgetOffset); break; } else break; } } } });
@Override public void run() { // only do this if no other frames have been added in between if (!fContextFrameStack.isEmpty() && fFrame == fContextFrameStack.peek()) { int offset= fContentAssistSubjectControlAdapter.getSelectedRange().x; // iterate all contexts on the stack while (Helper.okToUse(fContextInfoPopup) && !fContextFrameStack.isEmpty()) { ContextFrame top= fContextFrameStack.peek(); if (top.fValidator == null || !top.fValidator.isContextInformationValid(offset)) { hideContextInfoPopup(); // loop variant: reduces the number of contexts on the stack } else if (top.fPresenter != null && top.fPresenter.updatePresentation(offset, fTextPresentation)) { int widgetOffset= fContentAssistSubjectControlAdapter.getWidgetSelectionRange().x; TextPresentation.applyTextPresentation(fTextPresentation, fContextInfoText); resize(widgetOffset); break; } else break; } } } });
/** * Fires a session restart event to all registered {@link ICompletionListener}s. * * @since 3.4 */ void fireSessionRestartEvent() { if (fContentAssistSubjectControlAdapter != null) { IContentAssistProcessor processor= getProcessor(fContentAssistSubjectControlAdapter, fContentAssistSubjectControlAdapter.getSelectedRange().x); ContentAssistEvent event= new ContentAssistEvent(this, processor); for (ICompletionListener listener : fCompletionListeners) { if (listener instanceof ICompletionListenerExtension) ((ICompletionListenerExtension)listener).assistSessionRestarted(event); } } }
/** * Fires a session begin event to all registered {@link ICompletionListener}s. * * @param isAutoActivated <code>true</code> if this session was triggered by auto activation * @since 3.2 */ void fireSessionBeginEvent(boolean isAutoActivated) { if (fContentAssistSubjectControlAdapter != null && !isProposalPopupActive()) { Set<IContentAssistProcessor> processors= getProcessors(fContentAssistSubjectControlAdapter, fContentAssistSubjectControlAdapter.getSelectedRange().x); if (processors != null) { processors.forEach(processor -> { ContentAssistEvent event= new ContentAssistEvent(this, processor, isAutoActivated); for (ICompletionListener listener : fCompletionListeners) { listener.assistSessionStarted(event); } }); } } }
@Override public void run() { if (!fIsFilterPending) return; fIsFilterPending= false; if (!Helper.okToUse(fContentAssistSubjectControlAdapter.getControl())) return; int offset= fContentAssistSubjectControlAdapter.getSelectedRange().x; ICompletionProposal[] proposals= null; try { if (offset > -1) { DocumentEvent event= TextUtilities.mergeProcessedDocumentEvents(fDocumentEvents); proposals= computeFilteredProposals(offset, event); } } catch (BadLocationException x) { } finally { fDocumentEvents.clear(); } fFilterOffset= offset; if (proposals != null && proposals.length > 0) setProposals(proposals, fIsFilteredSubset); else hide(); } };
/** * Fires a session begin event to all registered {@link ICompletionListener}s. * * @param isAutoActivated <code>true</code> if this session was triggered by auto activation * @since 3.2 */ void fireSessionBeginEvent(boolean isAutoActivated) { if (fContentAssistSubjectControlAdapter != null && !isProposalPopupActive()) { IContentAssistProcessor processor= getProcessor(fContentAssistSubjectControlAdapter, fContentAssistSubjectControlAdapter.getSelectedRange().x); ContentAssistEvent event= new ContentAssistEvent(this, processor, isAutoActivated); for (ICompletionListener listener : fCompletionListeners) { listener.assistSessionStarted(event); } } }
int pos= fContentAssistSubjectControlAdapter.getSelectedRange().x; char[] activation;
int pos= fContentAssistSubjectControlAdapter.getSelectedRange().x; char[] activation;
fInvocationOffset= fContentAssistSubjectControlAdapter.getSelectedRange().x; fFilterOffset= fInvocationOffset; fLastCompletionOffset= fFilterOffset;
/** * This methods differs from its super as it will show the list of proposals that * gets augmented as the {@link IContentAssistProcessor#computeCompletionProposals(ITextViewer, int)} * complete. All computations operation happen in a non-UI Thread so they're not blocking UI. */ @Override public String showProposals(boolean autoActivated) { if (fKeyListener == null) fKeyListener= new ProposalSelectionListener(); final Control control= fContentAssistSubjectControlAdapter.getControl(); if (!Helper.okToUse(fProposalShell) && control != null && !control.isDisposed()) { // add the listener before computing the proposals so we don't move the caret // when the user types fast. fContentAssistSubjectControlAdapter.addKeyListener(fKeyListener); fInvocationOffset= fContentAssistSubjectControlAdapter.getSelectedRange().x; fFilterOffset= fInvocationOffset; fLastCompletionOffset= fFilterOffset; // start invocation of processors as Futures, and make them populate the proposals upon completion fFutures= buildCompletionFuturesOrJobs(fInvocationOffset); runFutures(fInvocationOffset, null, true, autoActivated, true); } else { fLastCompletionOffset= fFilterOffset; handleRepeatedInvocation(); } return getErrorMessage(); }
@Override public String incrementalComplete() { cancelFutures(); if (Helper.okToUse(fProposalShell) && fFilteredProposals != null) { return super.incrementalComplete(); } final Control control= fContentAssistSubjectControlAdapter.getControl(); if (fKeyListener == null) fKeyListener= new ProposalSelectionListener(); if (!Helper.okToUse(fProposalShell) && !control.isDisposed()) fContentAssistSubjectControlAdapter.addKeyListener(fKeyListener); fInvocationOffset= fContentAssistSubjectControlAdapter.getSelectedRange().x; fFilterOffset= fInvocationOffset; fLastCompletionOffset= fFilterOffset; fFutures= buildCompletionFuturesOrJobs(fInvocationOffset); fFilteredProposals= runFutures(fInvocationOffset, (List<ICompletionProposal> proposals) -> { ensureDocumentListenerInstalled(); if (proposals.size() > 0 && completeCommonPrefix()) { hide(); } else { fFilteredProposals= proposals; setProposals(proposals, false); displayProposals(); } }, true, false, true); return getErrorMessage(); }