[281872] Content assist failing in JSP files after upgrade to Galileo
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java
index affa812..80c7417 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java
@@ -329,6 +329,22 @@
return this.fContextInformationValidator;
}
+ public void install(ITextViewer viewer) {
+ if (fPreferenceStore != null) {
+ fPreferenceStore.addPropertyChangeListener(this);
+ }
+ if (fViewer != null) {
+ fViewer.removeTextInputListener(fTextInputListener);
+ }
+ fViewer = viewer;
+ if (fViewer != null) {
+ fViewer.addTextInputListener(fTextInputListener);
+ }
+ if (fAssistant != null) {
+ fAssistant.addCompletionListener(fCompletionListener);
+ }
+ }
+
/**
* <p>Extenders may override, but should always be sure to call the super implementation</p>
*
@@ -341,7 +357,6 @@
}
if(this.fPreferenceStore != null) {
this.fPreferenceStore.removePropertyChangeListener(this);
- this.fPreferenceStore = null;
}
if(this.fViewer != null) {
@@ -350,7 +365,6 @@
}
if (this.fAssistant != null) {
this.fAssistant.removeCompletionListener(fCompletionListener);
- this.fAssistant = null;
}
}
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java
index 49c0ae7..7e89b43 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java
@@ -35,6 +35,7 @@
import org.eclipse.jface.text.contentassist.IContextInformationPresenter;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.sse.ui.contentassist.StructuredContentAssistProcessor;
import org.eclipse.wst.sse.ui.internal.IReleasable;
import org.eclipse.wst.sse.ui.internal.Logger;
@@ -354,6 +355,15 @@
this.release();
}
+ public void install(ITextViewer viewer) {
+ for (Iterator it = fProcessors.iterator(); it.hasNext();) {
+ IContentAssistProcessor p = (IContentAssistProcessor) it.next();
+ if (p instanceof StructuredContentAssistProcessor) {
+ ((StructuredContentAssistProcessor) p).install(viewer);
+ }
+ }
+ }
+
/**
* @see org.eclipse.wst.sse.ui.internal.IReleasable#release()
*/
@@ -365,7 +375,6 @@
((IReleasable) p).release();
}
}
- fProcessors.clear();
}
private static class WrappedContextInformation implements IContextInformation, IContextInformationExtension {
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
index b10942c..8d124ce 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
@@ -15,6 +15,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.ContentAssistant;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.wst.sse.ui.internal.IReleasable;
@@ -33,6 +34,8 @@
*/
private boolean fIsInitalized;
+ private boolean fProcessorsReleased = false;
+
/**
* <p>Construct the assistant</p>
*/
@@ -92,7 +95,19 @@
}
return compoundContentAssistProcessor;
}
-
+
+ public void install(ITextViewer textViewer) {
+ if (fProcessorsReleased) {
+ if (this.fReleasableProcessors != null && !this.fReleasableProcessors.isEmpty()) {
+ for(int i = 0; i < this.fReleasableProcessors.size(); ++i) {
+ ((CompoundContentAssistProcessor)this.fReleasableProcessors.get(i)).install(textViewer);
+ }
+ }
+ fProcessorsReleased = false;
+ }
+ super.install(textViewer);
+ }
+
/**
* @see org.eclipse.jface.text.contentassist.ContentAssistant#uninstall()
*/
@@ -102,11 +117,8 @@
for(int i = 0; i < this.fReleasableProcessors.size(); ++i) {
((IReleasable)this.fReleasableProcessors.get(i)).release();
}
-
- this.fReleasableProcessors.clear();
}
- this.fReleasableProcessors = null;
-
+ fProcessorsReleased = true;
super.uninstall();
}
}
\ No newline at end of file