Author: snjeza
Date: 2008-04-11 14:39:08 -0400 (Fri, 11 Apr 2008)
New Revision: 7506
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPTextEditor.java
Log:
JBIDE-2046 The JSPTextEditor.getPageContext() method is called in a non-UI thread
sometimes
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPTextEditor.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPTextEditor.java 2008-04-11
17:54:13 UTC (rev 7505)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPTextEditor.java 2008-04-11
18:39:08 UTC (rev 7506)
@@ -196,20 +196,32 @@
// Fix for JBIDE-788
public IVisualContext getPageContext() {
- if (pageContext == null) {
- pageContext = new SourceEditorPageContext();
+ if (pageContext == null) {
+ pageContext = new SourceEditorPageContext();
+ }
+ // JBIDE-2046
+ Runnable runnable = new Runnable() {
+ public void run() {
+ IDocument document = getTextViewer().getDocument();
+ int offset = JSPTextEditor.this.getTextViewer().getTextWidget()
+ .getCaretOffset();
+ IndexedRegion treeNode = ContentAssistUtils.getNodeAt(
+ JSPTextEditor.this.getTextViewer(), offset);
+ Node node = (Node) treeNode;
+ pageContext.setReferenceNode(node);
+ pageContext.setDocument(document);
+ }
+ };
+ Display display = Display.getCurrent();
+ if (display != null && (Thread.currentThread() == display.getThread())) {
+ // we are in the UI thread
+ runnable.run();
+ } else {
+ Display.getDefault().syncExec(runnable);
+ }
+ return pageContext;
}
- IDocument document = getTextViewer().getDocument();
- int offset = this.getTextViewer().getTextWidget().getCaretOffset();
- IndexedRegion treeNode = ContentAssistUtils.getNodeAt(this
- .getTextViewer(), offset);
- Node node = (Node) treeNode;
- pageContext.setReferenceNode(node);
- pageContext.setDocument(document);
- return pageContext;
- }
-
protected void initializeDrop(ITextViewer textViewer) {
Composite c = textViewer.getTextWidget();
Show replies by date