diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java index 823e024fff01..34c56b4fa1cc 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelper.java @@ -15,9 +15,12 @@ */ package com.intellij.psi.impl; +import com.intellij.lang.ASTNode; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiImportList; +import com.intellij.psi.PsiImportStatementBase; /** * @author yole @@ -26,6 +29,8 @@ public abstract class JavaPsiImplementationHelper { public static JavaPsiImplementationHelper getInstance(Project project) { return ServiceManager.getService(project, JavaPsiImplementationHelper.class); } - + public abstract PsiClass getOriginalClass(PsiClass psiClass); + + public abstract ASTNode getDefaultImportAnchor(PsiImportList list, PsiImportStatementBase statement); } diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java index 93b24c1d3cc7..0d072449cae7 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java @@ -15,15 +15,17 @@ */ package com.intellij.psi.impl; +import com.intellij.lang.ASTNode; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.OrderEntry; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiFile; +import com.intellij.psi.*; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CodeStyleSettingsManager; +import com.intellij.psi.impl.source.codeStyle.ImportHelper; import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; @@ -73,4 +75,11 @@ public class JavaPsiImplementationHelperImpl extends JavaPsiImplementationHelper return original != null ? original : psiClass; } + + @Override + public ASTNode getDefaultImportAnchor(PsiImportList list, PsiImportStatementBase statement) { + CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(list.getProject()); + ImportHelper importHelper = new ImportHelper(settings); + return importHelper.getDefaultAnchor(list, statement); + } } diff --git a/java/java-impl/src/com/intellij/psi/impl/source/tree/java/ImportListElement.java b/java/java-impl/src/com/intellij/psi/impl/source/tree/java/ImportListElement.java index 728b82588bdd..188e577cfcfe 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/tree/java/ImportListElement.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/tree/java/ImportListElement.java @@ -18,10 +18,8 @@ package com.intellij.psi.impl.source.tree.java; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiImportList; import com.intellij.psi.PsiImportStatementBase; -import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CodeStyleSettingsManager; +import com.intellij.psi.impl.JavaPsiImplementationHelper; import com.intellij.psi.impl.source.SourceTreeToPsiMap; -import com.intellij.psi.impl.source.codeStyle.ImportHelper; import com.intellij.psi.impl.source.tree.CompositeElement; import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.impl.source.tree.TreeElement; @@ -34,17 +32,15 @@ public class ImportListElement extends CompositeElement{ public TreeElement addInternal(TreeElement first, ASTNode last, ASTNode anchor, Boolean before){ if (before == null){ if (first == last && (first.getElementType() == JavaElementType.IMPORT_STATEMENT || first.getElementType() == JavaElementType.IMPORT_STATIC_STATEMENT)){ - anchor = getDefaultAnchor((PsiImportList)SourceTreeToPsiMap.treeElementToPsi(this), - (PsiImportStatementBase)SourceTreeToPsiMap.treeElementToPsi(first)); + final PsiImportList list = (PsiImportList)SourceTreeToPsiMap.treeElementToPsi(this); + final PsiImportStatementBase statement = (PsiImportStatementBase)SourceTreeToPsiMap.treeElementToPsi(first); + final JavaPsiImplementationHelper instance = JavaPsiImplementationHelper.getInstance(list.getProject()); + if (instance != null) { + anchor = instance.getDefaultImportAnchor(list, statement); + } before = Boolean.TRUE; } } return super.addInternal(first, last, anchor, before); } - - public static ASTNode getDefaultAnchor(PsiImportList list, PsiImportStatementBase statement) { - CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(list.getProject()); - ImportHelper importHelper = new ImportHelper(settings); - return importHelper.getDefaultAnchor(list, statement); - } }