From 6ef1ea87d995d2ca53560059f107ca5dd43bb19b Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Mon, 18 Oct 2010 17:22:52 +0400 Subject: [PATCH] Debugging GSP pages. --- .../intellij/debugger/engine/ContextUtil.java | 18 +++++++++++++++++- .../debugger/GroovyCodeFragmentFactory.java | 8 ++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java b/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java index e29971ff4bfc..b064e78763b0 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/ContextUtil.java @@ -28,6 +28,7 @@ import com.intellij.openapi.util.Key; import com.intellij.psi.*; import com.intellij.util.IncorrectOperationException; import com.intellij.util.StringBuilderSpinAllocator; +import com.intellij.util.containers.ContainerUtil; import com.sun.jdi.Location; import org.jetbrains.annotations.Nullable; @@ -164,7 +165,22 @@ public class ContextUtil { } PsiElement element; - final PsiElement rootElement = JspPsiUtil.isInJspFile(psiFile) ? (JspPsiUtil.getJspFile(psiFile)).getJavaClass() : psiFile; + + PsiElement rootElement = psiFile; + + List allFiles = psiFile.getViewProvider().getAllFiles(); + if (allFiles.size() > 1) { // jsp & gsp + PsiClassOwner owner = ContainerUtil.findInstance(allFiles, PsiClassOwner.class); + if (owner != null) { + PsiClass[] classes = owner.getClasses(); + if (classes.length == 1 && classes[0] instanceof SyntheticElement) { + rootElement = classes[0]; + } + } + } + + //final PsiElement rootElement = JspPsiUtil.isInJspFile(psiFile) ? (JspPsiUtil.getJspFile(psiFile)).getJavaClass() : psiFile; + while(true) { final CharSequence charsSequence = document.getCharsSequence(); for (; startOffset < charsSequence.length(); startOffset++) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyCodeFragmentFactory.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyCodeFragmentFactory.java index b1795da02b37..b8935c3f66e1 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyCodeFragmentFactory.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyCodeFragmentFactory.java @@ -89,7 +89,7 @@ public class GroovyCodeFragmentFactory implements CodeFragmentFactory { PsiClass contextClass = PsiUtil.getContextClass(context); boolean isStatic = isStaticContext(context); - StringBuffer javaText = new StringBuffer(); + StringBuilder javaText = new StringBuilder(); javaText.append("groovy.lang.MetaClass |mc;\n"); javaText.append("java.lang.Class |clazz;\n"); @@ -256,11 +256,7 @@ public class GroovyCodeFragmentFactory implements CodeFragmentFactory { } public boolean isContextAccepted(PsiElement context) { - return context != null && context.getLanguage().equals(GroovyFileType.GROOVY_FILE_TYPE.getLanguage()); - } - - public String getDisplayName() { - return "Groovy"; + return context != null && context.getLanguage().equals(GroovyFileType.GROOVY_LANGUAGE); } public LanguageFileType getFileType() {