#275270 applied
diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ContentAssistProcessor.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ContentAssistProcessor.java
index 56647ef..b0e8d8a 100644
--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ContentAssistProcessor.java
+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/text/completion/ContentAssistProcessor.java
@@ -39,6 +39,7 @@
import org.eclipse.jface.text.contentassist.ContentAssistEvent;
import org.eclipse.jface.text.contentassist.ContentAssistant;
import org.eclipse.jface.text.contentassist.ICompletionListener;
+import org.eclipse.jface.text.contentassist.ICompletionListenerExtension;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContentAssistant;
@@ -121,6 +122,100 @@
private String fErrorMessage;
+ class CompletionListener implements ICompletionListener,
+ ICompletionListenerExtension {
+
+ public void assistSessionStarted(ContentAssistEvent event) {
+
+ if (event.processor != ContentAssistProcessor.this) {
+ final IContentAssistant assistant = event.assistant;
+ if (assistant instanceof IScriptContentAssistExtension) {
+ final IScriptContentAssistExtension extension = (IScriptContentAssistExtension) assistant;
+ if (!extension.provide(event.processor))
+ return;
+ } else {
+ return;
+ }
+ }
+
+ fIterationGesture = getIterationGesture();
+ KeySequence binding = getIterationBinding();
+
+ // this may show the warning dialog if all categories are
+ // disabled
+ fCategoryIteration = getCategoryIteration();
+ for (CompletionProposalCategory cat : fCategories) {
+ cat.sessionStarted();
+ }
+
+ fRepetition = 0;
+ if (event.assistant instanceof IContentAssistantExtension2) {
+ IContentAssistantExtension2 extension = (IContentAssistantExtension2) event.assistant;
+
+ if (fCategoryIteration.size() == 1) {
+ extension.setRepeatedInvocationMode(false);
+ extension.setShowEmptyList(false);
+ } else {
+ extension.setRepeatedInvocationMode(true);
+ extension.setStatusLineVisible(true);
+ extension.setStatusMessage(createIterationMessage());
+ extension.setShowEmptyList(true);
+ if (extension instanceof IContentAssistantExtension3) {
+ IContentAssistantExtension3 ext3 = (IContentAssistantExtension3) extension;
+ ((ContentAssistant) ext3)
+ .setRepeatedInvocationTrigger(binding);
+ }
+ }
+ }
+ }
+
+ /*
+ * @see ICompletionListener#assistSessionEnded(ContentAssistEvent)
+ */
+ public void assistSessionEnded(ContentAssistEvent event) {
+
+ if (event.processor != ContentAssistProcessor.this) {
+ final IContentAssistant assistant = event.assistant;
+ if (assistant instanceof IScriptContentAssistExtension) {
+ final IScriptContentAssistExtension extension = (IScriptContentAssistExtension) assistant;
+ if (!extension.provide(event.processor))
+ return;
+ } else {
+ return;
+ }
+ }
+
+ for (CompletionProposalCategory cat : fCategories) {
+ cat.sessionEnded();
+ }
+
+ fCategoryIteration = null;
+ fRepetition = -1;
+ fIterationGesture = null;
+ if (event.assistant instanceof IContentAssistantExtension2) {
+ IContentAssistantExtension2 extension = (IContentAssistantExtension2) event.assistant;
+ extension.setShowEmptyList(false);
+ extension.setRepeatedInvocationMode(false);
+ extension.setStatusLineVisible(false);
+ if (extension instanceof IContentAssistantExtension3) {
+ IContentAssistantExtension3 ext3 = (IContentAssistantExtension3) extension;
+ ((ContentAssistant) ext3)
+ .setRepeatedInvocationTrigger(KeySequence
+ .getInstance());
+ }
+ }
+ }
+
+ public void selectionChanged(ICompletionProposal proposal,
+ boolean smartToggle) {
+ }
+
+ public void assistSessionRestarted(ContentAssistEvent event) {
+ fRepetition = 0;
+ }
+
+ }
+
public ContentAssistProcessor(ContentAssistant assistant, String partition) {
Assert.isNotNull(partition);
Assert.isNotNull(assistant);
@@ -129,97 +224,7 @@
fCategories = CompletionProposalComputerRegistry.getDefault()
.getProposalCategories();
fAssistant = assistant;
- fAssistant.addCompletionListener(new ICompletionListener() {
-
- public void assistSessionStarted(ContentAssistEvent event) {
-
- if (event.processor != ContentAssistProcessor.this) {
- final IContentAssistant assistant = event.assistant;
- if (assistant instanceof IScriptContentAssistExtension) {
- final IScriptContentAssistExtension extension = (IScriptContentAssistExtension) assistant;
- if (!extension.provide(event.processor))
- return;
- } else {
- return;
- }
- }
-
- fIterationGesture = getIterationGesture();
- KeySequence binding = getIterationBinding();
-
- // this may show the warning dialog if all categories are
- // disabled
- fCategoryIteration = getCategoryIteration();
- for (CompletionProposalCategory cat : fCategories) {
- cat.sessionStarted();
- }
-
- fRepetition = 0;
- if (event.assistant instanceof IContentAssistantExtension2) {
- IContentAssistantExtension2 extension = (IContentAssistantExtension2) event.assistant;
-
- if (fCategoryIteration.size() == 1) {
- extension.setRepeatedInvocationMode(false);
- extension.setShowEmptyList(false);
- } else {
- extension.setRepeatedInvocationMode(true);
- extension.setStatusLineVisible(true);
- extension.setStatusMessage(createIterationMessage());
- extension.setShowEmptyList(true);
- if (extension instanceof IContentAssistantExtension3) {
- IContentAssistantExtension3 ext3 = (IContentAssistantExtension3) extension;
- ((ContentAssistant) ext3)
- .setRepeatedInvocationTrigger(binding);
- }
- }
-
- }
- }
-
- /*
- * @seeorg.eclipse.jface.text.contentassist.ICompletionListener#
- * assistSessionEnded
- * (org.eclipse.jface.text.contentassist.ContentAssistEvent)
- */
- public void assistSessionEnded(ContentAssistEvent event) {
-
- if (event.processor != ContentAssistProcessor.this) {
- final IContentAssistant assistant = event.assistant;
- if (assistant instanceof IScriptContentAssistExtension) {
- final IScriptContentAssistExtension extension = (IScriptContentAssistExtension) assistant;
- if (!extension.provide(event.processor))
- return;
- } else {
- return;
- }
- }
-
- for (CompletionProposalCategory cat : fCategories) {
- cat.sessionEnded();
- }
-
- fCategoryIteration = null;
- fRepetition = -1;
- fIterationGesture = null;
- if (event.assistant instanceof IContentAssistantExtension2) {
- IContentAssistantExtension2 extension = (IContentAssistantExtension2) event.assistant;
- extension.setShowEmptyList(false);
- extension.setRepeatedInvocationMode(false);
- extension.setStatusLineVisible(false);
- if (extension instanceof IContentAssistantExtension3) {
- IContentAssistantExtension3 ext3 = (IContentAssistantExtension3) extension;
- ((ContentAssistant) ext3)
- .setRepeatedInvocationTrigger(KeySequence
- .getInstance());
- }
- }
- }
-
- public void selectionChanged(ICompletionProposal proposal,
- boolean smartToggle) {
- }
-
- });
+ fAssistant.addCompletionListener(new CompletionListener());
}
public final ICompletionProposal[] computeCompletionProposals(