/** * Creates and returns a completion proposal popup for the given content assistant. * * @param contentAssistant the content assistant * @param controller the additional info controller, or <code>null</code> * @return the completion proposal popup */ CompletionProposalPopup createCompletionProposalPopup(ContentAssistant contentAssistant, AdditionalInfoController controller) { if (fContentAssistSubjectControl != null) return new CompletionProposalPopup(contentAssistant, fContentAssistSubjectControl, controller); return new CompletionProposalPopup(contentAssistant, fViewer, controller); }
if (Helper.okToUse(fProposalShell) && fFilteredProposals != null) { if (fLastCompletionOffset == fFilterOffset) { handleRepeatedInvocation(); } else { fLastCompletionOffset= fFilterOffset; completeCommonPrefix(); fFilterOffset= fInvocationOffset; fLastCompletionOffset= fFilterOffset; fFilteredProposals= computeProposals(fInvocationOffset); if (count == 0 && hideWhenNoProposals(false)) return; if (count == 1 && canAutoInsert(fFilteredProposals.get(0))) { insertProposal(fFilteredProposals.get(0), (char) 0, 0, fInvocationOffset); hide(); } else { ensureDocumentListenerInstalled(); if (count > 0 && completeCommonPrefix()) hide(); else { fComputedProposals= fFilteredProposals; createProposalSelector(); setProposals(fComputedProposals, false); displayProposals(); return getErrorMessage();
/** * Enables or disables showing of the caption line. See also {@link #setMessage(String)}. * * @param show <code>true</code> if the status line is visible * @since 3.2 */ public void setStatusLineVisible(boolean show) { if (!isActive() || show == (fMessageText != null)) return; // nothing to do if (show) { createMessageText(); } else { fMessageText.dispose(); fMessageText= null; } fProposalShell.layout(); }
/** * If content assist is set up to handle cycling, then the proposals are recomputed. Otherwise, * nothing happens. * * @since 3.2 */ void handleRepeatedInvocation() { if (fContentAssistant.isRepeatedInvocationMode()) { fComputedProposals= computeProposals(fFilterOffset); setProposals(fComputedProposals, false); } }
filterProposals(); return true; hide(); return true; selectProposal(newSelection, (e.stateMask & SWT.CTRL) != 0); case 0x1B: // Esc e.doit= false; hide(); break; case '\r': // Enter e.doit= false; insertSelectedProposalWithMask(e.stateMask); break; ICompletionProposal p= getSelectedProposal(); if (p instanceof ICompletionProposalExtension) { ICompletionProposalExtension t= (ICompletionProposalExtension) p; char[] triggers= t.getTriggerCharacters(); if (contains(triggers, key)) { e.doit= false; hide(); insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);
if (canAutoInsert(fFilteredProposals.get(0))) { insertProposal(fFilteredProposals.get(0), (char) 0, 0, fFilterOffset); hide(); return true; boolean hasMixedProposals= hasMixedProposals(); for (int i= 0; i < fFilteredProposals.size(); i++) { ICompletionProposal proposal= fFilteredProposals.get(i); rightCasePostfix= new StringBuilder(newPostfix.toString()); else truncatePostfix(rightCasePostfix, newPostfix, false); } else if (i == 0 || isWrongCaseMatch) { String insertionStrLowerCase= insertion.toString().toLowerCase(); if (isPrefixCompatible(wrongCasePrefix, wrongCasePrefixStart, newPrefix, start, document, hasMixedProposals)) { isWrongCaseMatch= true; if (insertionStrLowerCase.isEmpty()) { wrongCasePostfix= new StringBuilder(newPostfix.toString()); else truncatePostfix(wrongCasePostfix, newPostfix, hasMixedProposals); wrongCase.add(proposal); } else { if (canAutoInsert(proposal) && rightCasePostfix.length() > 0) { insertProposal(proposal, (char) 0, 0, fInvocationOffset); hide(); return true;
createMessageText(); Color background= getBackgroundColor(control); if (background == null) { background= JFaceColors.getInformationViewerBackgroundColor(Display.getDefault()); Color foreground= getForegroundColor(control); if (foreground == null) { foreground= JFaceColors.getInformationViewerBackgroundColor(Display.getDefault()); addCommandSupport(fProposalTable);
if (Helper.okToUse(fProposalShell) && fFilteredProposals != null) { if (fLastCompletionOffset == fFilterOffset) { handleRepeatedInvocation(); } else { fLastCompletionOffset= fFilterOffset; completeCommonPrefix(); return getErrorMessage();
protected void install() { fLayoutManager= new LayoutManager(); fInternalListener= new InternalListener(); AdditionalInfoController controller= null; if (fInformationControlCreator != null) controller= new AdditionalInfoController(fInformationControlCreator, OpenStrategy.getPostSelectionDelay()); fContextInfoPopup= fContentAssistSubjectControlAdapter.createContextInfoPopup(this); fProposalPopup= fContentAssistSubjectControlAdapter.createCompletionProposalPopup(this, controller, fAsynchronous); fProposalPopup.setSorter(fSorter); registerHandler(SELECT_NEXT_PROPOSAL_COMMAND_ID, fProposalPopup.createProposalSelectionHandler(CompletionProposalPopup.ProposalSelectionHandler.SELECT_NEXT)); registerHandler(SELECT_PREVIOUS_PROPOSAL_COMMAND_ID, fProposalPopup.createProposalSelectionHandler(CompletionProposalPopup.ProposalSelectionHandler.SELECT_PREVIOUS)); if (Helper.okToUse(fContentAssistSubjectControlAdapter.getControl())) { fContentAssistSubjectControlShell= fContentAssistSubjectControlAdapter.getControl().getShell(); fCASCSTraverseListener= e -> { if (e.detail == SWT.TRAVERSE_ESCAPE && isProposalPopupActive()) e.doit= false; }; fContentAssistSubjectControlShell.addTraverseListener(fCASCSTraverseListener); } manageAutoActivation(fIsAutoActivated); }
fInvocationOffset= offset; fContentAssistant.fireSessionRestartEvent(); fComputedProposals= computeProposals(fInvocationOffset); return fComputedProposals; fInvocationOffset= offset; fContentAssistant.fireSessionRestartEvent(); fComputedProposals= computeProposals(fInvocationOffset); return fComputedProposals;
@Override public void documentChanged(DocumentEvent event) { if (!fInserting) filterProposals(); } };
filterProposals(); return true; hide(); return true; selectProposal(newSelection, (e.stateMask & SWT.CTRL) != 0); case 0x1B: // Esc e.doit= false; hide(); break; case '\r': // Enter e.doit= false; insertSelectedProposalWithMask(e.stateMask); break; ICompletionProposal p= getSelectedProposal(); if (p instanceof ICompletionProposalExtension) { ICompletionProposalExtension t= (ICompletionProposalExtension) p; char[] triggers= t.getTriggerCharacters(); if (contains(triggers, key)) { e.doit= false; hide(); insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);
if (canAutoInsert(fFilteredProposals[0])) { insertProposal(fFilteredProposals[0], (char) 0, 0, fFilterOffset); hide(); return true; boolean hasMixedProposals= hasMixedProposals(); for (int i= 0; i < fFilteredProposals.length; i++) { ICompletionProposal proposal= fFilteredProposals[i]; rightCasePostfix= new StringBuffer(newPostfix.toString()); else truncatePostfix(rightCasePostfix, newPostfix, false); } else if (i == 0 || isWrongCaseMatch) { String insertionStrLowerCase= insertion.toString().toLowerCase(); if (isPrefixCompatible(wrongCasePrefix, wrongCasePrefixStart, newPrefix, start, document, hasMixedProposals)) { isWrongCaseMatch= true; if (insertionStrLowerCase.isEmpty()) { wrongCasePostfix= new StringBuffer(newPostfix.toString()); else truncatePostfix(wrongCasePostfix, newPostfix, hasMixedProposals); wrongCase.add(proposal); } else { if (canAutoInsert(proposal) && rightCasePostfix.length() > 0) { insertProposal(proposal, (char) 0, 0, fInvocationOffset); hide(); return true;
createMessageText(); Color c= getBackgroundColor(control); fProposalTable.setBackground(c); c= getForegroundColor(control); fProposalTable.setForeground(c); addCommandSupport(fProposalTable);
/** * If content assist is set up to handle cycling, then the proposals are recomputed. Otherwise, * nothing happens. * * @since 3.2 */ private void handleRepeatedInvocation() { if (fContentAssistant.isRepeatedInvocationMode()) { fComputedProposals= computeProposals(fFilterOffset); setProposals(fComputedProposals, false); } }
protected void install() { fLayoutManager= new LayoutManager(); fInternalListener= new InternalListener(); AdditionalInfoController controller= null; if (fInformationControlCreator != null) controller= new AdditionalInfoController(fInformationControlCreator, OpenStrategy.getPostSelectionDelay()); fContextInfoPopup= fContentAssistSubjectControlAdapter.createContextInfoPopup(this); fProposalPopup= fContentAssistSubjectControlAdapter.createCompletionProposalPopup(this, controller); fProposalPopup.setSorter(fSorter); registerHandler(SELECT_NEXT_PROPOSAL_COMMAND_ID, fProposalPopup.createProposalSelectionHandler(CompletionProposalPopup.ProposalSelectionHandler.SELECT_NEXT)); registerHandler(SELECT_PREVIOUS_PROPOSAL_COMMAND_ID, fProposalPopup.createProposalSelectionHandler(CompletionProposalPopup.ProposalSelectionHandler.SELECT_PREVIOUS)); if (Helper.okToUse(fContentAssistSubjectControlAdapter.getControl())) { fContentAssistSubjectControlShell= fContentAssistSubjectControlAdapter.getControl().getShell(); fCASCSTraverseListener= new TraverseListener() { @Override public void keyTraversed(TraverseEvent e) { if (e.detail == SWT.TRAVERSE_ESCAPE && isProposalPopupActive()) e.doit= false; } }; fContentAssistSubjectControlShell.addTraverseListener(fCASCSTraverseListener); } manageAutoActivation(fIsAutoActivated); }
fInvocationOffset= offset; fContentAssistant.fireSessionRestartEvent(); fComputedProposals= computeProposals(fInvocationOffset); return fComputedProposals; fInvocationOffset= offset; fContentAssistant.fireSessionRestartEvent(); fComputedProposals= computeProposals(fInvocationOffset); return fComputedProposals;
fFilterOffset= fInvocationOffset; fLastCompletionOffset= fFilterOffset; fComputedProposals= computeProposals(fInvocationOffset); if (count == 0 && hideWhenNoProposals(autoActivated)) return; if (count == 1 && !autoActivated && canAutoInsert(fComputedProposals.get(0))) { insertProposal(fComputedProposals.get(0), (char) 0, 0, fInvocationOffset); hide(); } else { createProposalSelector(); setProposals(fComputedProposals, false); displayProposals(); handleRepeatedInvocation(); return getErrorMessage();