diff options
Diffstat (limited to 'org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java')
-rw-r--r-- | org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java | 81 |
1 files changed, 53 insertions, 28 deletions
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java index 405b41c7078..4ff60959401 100644 --- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java +++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java @@ -10,10 +10,13 @@ *******************************************************************************/ package org.eclipse.jface.text.tests.contentassist; +import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.function.Predicate; @@ -35,12 +38,14 @@ import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IInformationControlCreator; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.contentassist.ContentAssistant; import org.eclipse.jface.text.contentassist.ContextInformationValidator; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.jface.text.contentassist.ICompletionProposalExtension; import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2; +import org.eclipse.jface.text.contentassist.ICompletionProposalExtension3; import org.eclipse.jface.text.contentassist.IContentAssistProcessor; import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.jface.text.contentassist.IContextInformationValidator; @@ -203,7 +208,7 @@ public class FilteringAsyncContentAssistTests { IDocument document = viewer.getDocument(); ca.addContentAssistProcessor(new ImmediateContentAssistProcessor("xx"), IDocument.DEFAULT_CONTENT_TYPE); - ca.addContentAssistProcessor(new DelayedContentAssistProcessor("yy", 3000, false), + ca.addContentAssistProcessor(new DelayedContentAssistProcessor(singletonList("yy"), 3000, false), IDocument.DEFAULT_CONTENT_TYPE); ca.install(viewer); @@ -247,7 +252,7 @@ public class FilteringAsyncContentAssistTests { public void testCA_WithFirstDelayedThenImmediateProposals() throws Exception { IDocument document = viewer.getDocument(); - ca.addContentAssistProcessor(new LongInitialContentAssistProcessor("abc", 500, true), + ca.addContentAssistProcessor(new LongInitialContentAssistProcessor(singletonList("abc"), 500, true), IDocument.DEFAULT_CONTENT_TYPE); ca.install(viewer); @@ -287,7 +292,7 @@ public class FilteringAsyncContentAssistTests { IDocument document = viewer.getDocument(); ca.addContentAssistProcessor(new ImmediateContentAssistProcessor("xxxx"), IDocument.DEFAULT_CONTENT_TYPE); - ca.addContentAssistProcessor(new DelayedContentAssistProcessor("yyyy", 5000, false), + ca.addContentAssistProcessor(new DelayedContentAssistProcessor(singletonList("yyyy"), 5000, false), IDocument.DEFAULT_CONTENT_TYPE); ca.install(viewer); @@ -354,37 +359,38 @@ public class FilteringAsyncContentAssistTests { } - private class ImmediateContentAssistProcessor implements IContentAssistProcessor { + static class ImmediateContentAssistProcessor implements IContentAssistProcessor { - final private String template; + final private List<String> templates; final private boolean incomplete; - ImmediateContentAssistProcessor(String template) { - this(template, false); + ImmediateContentAssistProcessor(String... templates) { + this(Arrays.asList(templates), false); } - ImmediateContentAssistProcessor(String template, boolean incomplete) { - this.template = template; + ImmediateContentAssistProcessor(List<String> templates, boolean incomplete) { + this.templates= templates; this.incomplete = incomplete; } @Override public ICompletionProposal[] computeCompletionProposals(ITextViewer textViewer, int offset) { + List<ICompletionProposal> proposals= new ArrayList<>(); try { IDocument document= textViewer.getDocument(); - if (document != null && (document.getLength() == 0 || isSubstringFoundOrderedInString(document.get(0, offset), template))) { - if (incomplete) { - return new ICompletionProposal[] { - new IncompleteCompletionProposal(template, offset, 0, offset, template) }; - } else { - CompletionProposal proposal = new CompletionProposal(template, offset, 0, offset, template); - return new ICompletionProposal[] { proposal }; + for (String template : templates) { + if (document != null && (document.getLength() == 0 || isSubstringFoundOrderedInString(document.get(0, offset), template))) { + if (incomplete) { + proposals.add(new IncompleteCompletionProposal(template, offset, 0, offset, template)); + } else { + proposals.add(new CompletionProposal(template, offset, 0, offset, template)); + } } } } catch (BadLocationException e) { throw new IllegalStateException("Error computing proposals"); } - return new ICompletionProposal[0]; + return proposals.toArray(new ICompletionProposal[0]); } @Override @@ -414,12 +420,12 @@ public class FilteringAsyncContentAssistTests { } - private class DelayedContentAssistProcessor extends ImmediateContentAssistProcessor { + static class DelayedContentAssistProcessor extends ImmediateContentAssistProcessor { protected long delay; - DelayedContentAssistProcessor(String template, long delay, boolean incomplete) { - super(template, incomplete); + DelayedContentAssistProcessor(List<String> templates, long delay, boolean incomplete) { + super(templates, incomplete); this.delay = delay; } @@ -432,14 +438,14 @@ public class FilteringAsyncContentAssistTests { throw new IllegalStateException("Cannot generate delayed content assist proposals!"); } } - return super.computeCompletionProposals(viewer, offset); + return super.computeCompletionProposals(textViewer, offset); } } private class LongInitialContentAssistProcessor extends DelayedContentAssistProcessor { - LongInitialContentAssistProcessor(String template, long delay, boolean incomplete) { - super(template, delay, incomplete); + LongInitialContentAssistProcessor(List<String> templates, long delay, boolean incomplete) { + super(templates, delay, incomplete); } @Override @@ -454,8 +460,8 @@ public class FilteringAsyncContentAssistTests { final CountDownLatch blocked= new CountDownLatch(1); - BlockingProcessor(String template) { - super(template, false); + BlockingProcessor(String... templates) { + super(Arrays.asList(templates), false); } @Override @@ -484,7 +490,7 @@ public class FilteringAsyncContentAssistTests { } @SuppressWarnings("unchecked") - private static List<ICompletionProposal> getFilteredProposals(ContentAssistant ca) throws Exception { + static List<ICompletionProposal> getFilteredProposals(ContentAssistant ca) throws Exception { Field f = ContentAssistant.class.getDeclaredField("fProposalPopup"); f.setAccessible(true); Object caPopup = f.get(ca); @@ -566,8 +572,8 @@ public class FilteringAsyncContentAssistTests { } } - private static class CompletionProposal extends IncompleteCompletionProposal - implements ICompletionProposalExtension, ICompletionProposalExtension2 { + static class CompletionProposal extends IncompleteCompletionProposal + implements ICompletionProposalExtension, ICompletionProposalExtension2, ICompletionProposalExtension3 { public CompletionProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, String displayString) { @@ -624,6 +630,25 @@ public class FilteringAsyncContentAssistTests { return 0; } + @Override + public int getPrefixCompletionStart(IDocument document, int completionOffset) { + return 0; + } + + @Override + public CharSequence getPrefixCompletionText(IDocument document, int completionOffset) { + return getDisplayString(); + } + + @Override + public IInformationControlCreator getInformationControlCreator() { + return null; + } + + @Override + public String toString() { + return getDisplayString(); + } } @SuppressWarnings("boxing") |