cleanup
authorpeter <peter@jetbrains.com>
Wed, 1 Feb 2012 20:47:09 +0000 (21:47 +0100)
committerpeter <peter@jetbrains.com>
Wed, 1 Feb 2012 20:58:59 +0000 (21:58 +0100)
java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java
java/java-impl/src/com/intellij/codeInsight/completion/DefaultInsertHandler.java
java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java
java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java

index 450c16174c22cfa7dd99017923961f928275824f..672536501f6aeeca428b2bd9b10020a906803ba1 100644 (file)
@@ -79,7 +79,7 @@ class ConstructorInsertHandler implements InsertHandler<LookupElementDecorator<L
     }
 
     if (item.getDelegate() instanceof JavaPsiClassReferenceElement) {
-      DefaultInsertHandler.addImportForItem(context, delegate);
+      PsiTypeLookupItem.addImportForItem(context, psiClass);
     }
 
     insertParentheses(context, delegate, psiClass, !inAnonymous && isAbstract);
index 0f36ce3ec8fcc448cfd302fe26bdb99d3577d15e..13193a8c1ca455ad823b2daf2b3cd481ec8c02e8 100644 (file)
@@ -22,18 +22,16 @@ import com.intellij.codeInsight.TailTypes;
 import com.intellij.codeInsight.lookup.Lookup;
 import com.intellij.codeInsight.lookup.LookupElement;
 import com.intellij.codeInsight.lookup.LookupItem;
-import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.project.Project;
-import com.intellij.psi.*;
+import com.intellij.psi.PsiDocumentManager;
+import com.intellij.psi.PsiFile;
 import com.intellij.psi.codeStyle.CodeStyleSettings;
 import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
-import com.intellij.psi.impl.source.PostprocessReformattingAspect;
 import org.jetbrains.annotations.NotNull;
 
 public class DefaultInsertHandler extends TemplateInsertHandler implements Cloneable {
-  private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.completion.DefaultInsertHandler");
 
   public static final DefaultInsertHandler NO_TAIL_HANDLER = new DefaultInsertHandler(){
     @Override
@@ -54,8 +52,6 @@ public class DefaultInsertHandler extends TemplateInsertHandler implements Clone
     final Document document = editor.getDocument();
     PsiDocumentManager.getInstance(project).commitDocument(document);
 
-    final PsiFile file = context.getFile();
-
     TailType tailType = getTailType(completionChar, item);
 
     InsertHandlerState state = new InsertHandlerState(context.getSelectionEndOffset(), context.getSelectionEndOffset());
@@ -73,8 +69,6 @@ public class DefaultInsertHandler extends TemplateInsertHandler implements Clone
     state.caretOffset = processTail(tailType, state.caretOffset, state.tailOffset, editor);
     editor.getSelectionModel().removeSelection();
 
-    addImportForItem(context, item);
-
     if (tailType == TailType.DOT || context.getCompletionChar() == '.') {
       AutoPopupController.getInstance(project).autoPopupMemberLookup(editor, null);
     }
@@ -181,50 +175,6 @@ public class DefaultInsertHandler extends TemplateInsertHandler implements Clone
     JavaCompletionUtil.initOffsets(file, file.getProject(), offsetMap);
   }
 
-  public static void addImportForItem(InsertionContext context, LookupElement item) {
-    PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments();
-
-    PsiFile file = context.getFile();
-    Object o = item.getObject();
-    if (o instanceof PsiClass){
-      PsiClass aClass = (PsiClass)o;
-      if (aClass.getQualifiedName() == null) return;
-      final String lookupString = item.getLookupString();
-      int length = lookupString.length();
-      final int i = lookupString.indexOf('<');
-      if (i >= 0) length = i;
-      addImportForClass(aClass, context, length);
-      JavaCompletionUtil.shortenReference(file, context.getStartOffset());
-    }
-    else if (o instanceof PsiType){
-      PsiType type = ((PsiType)o).getDeepComponentType();
-      if (type instanceof PsiClassType) {
-        PsiClass refClass = ((PsiClassType) type).resolve();
-        if (refClass != null){
-          int length = refClass.getName().length();
-          addImportForClass(refClass, context, length);
-        }
-      }
-    }
-    else if (o instanceof PsiMethod){
-      PsiMethod method = (PsiMethod)o;
-      if (method.isConstructor()){
-        PsiClass aClass = method.getContainingClass();
-        if (aClass != null){
-          int length = method.getName().length();
-          addImportForClass(aClass, context, length);
-        }
-      }
-    }
-  }
-
-  private static void addImportForClass(PsiClass aClass, InsertionContext context, int nameLength) {
-    context.setTailOffset(JavaCompletionUtil.insertClassReference(aClass, context.getFile(), context.getStartOffset(),
-                                                                  context.getStartOffset() + nameLength));
-    PostprocessReformattingAspect.getInstance(context.getProject()).doPostponedFormatting();
-  }
-
-
   public static class InsertHandlerState{
     int tailOffset;
     int caretOffset;
index 08ebb822cc10f0f94eda4286e4ac8b8b47b85dd2..0cb4dbe86e39a286d899ad00f41fb64e33bbe4fd 100644 (file)
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.AutoPopupController;
 import com.intellij.codeInsight.ExpectedTypeInfo;
 import com.intellij.codeInsight.ExpectedTypesProvider;
 import com.intellij.codeInsight.lookup.LookupElement;
+import com.intellij.codeInsight.lookup.PsiTypeLookupItem;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.editor.Editor;
@@ -89,7 +90,7 @@ class JavaClassNameInsertHandler implements InsertHandler<JavaPsiClassReferenceE
       context.setAddCompletionChar(false);
     }
 
-    DefaultInsertHandler.addImportForItem(context, item);
+    PsiTypeLookupItem.addImportForItem(context, psiClass);
 
     if (shouldInsertParentheses(psiClass, file.findElementAt(context.getTailOffset() - 1))) {
       if (ConstructorInsertHandler.insertParentheses(context, item, psiClass, false)) {
index 47fca85f1d6ad3d0e4bae4486eed0380ca00fbac..9373ca35675136cec2ced563c6638ad6e46a6136 100644 (file)
@@ -21,6 +21,7 @@ import com.intellij.openapi.editor.ScrollType;
 import com.intellij.openapi.util.ClassConditionKey;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
+import com.intellij.psi.impl.source.PostprocessReformattingAspect;
 import com.intellij.psi.impl.source.PsiClassReferenceType;
 import com.intellij.psi.util.PsiUtil;
 import org.jetbrains.annotations.NonNls;
@@ -72,7 +73,9 @@ public class PsiTypeLookupItem extends LookupItem {
   public void handleInsert(InsertionContext context) {
     PsiElement position = context.getFile().findElementAt(context.getStartOffset());
     assert position != null;
-    DefaultInsertHandler.addImportForItem(context, this);
+    if (getObject() instanceof PsiClass) {
+      addImportForItem(context, (PsiClass)getObject());
+    }
     context.getDocument().insertString(context.getTailOffset(), calcGenerics(position));
     JavaCompletionUtil.shortenReference(context.getFile(), context.getStartOffset());
 
@@ -223,4 +226,13 @@ public class PsiTypeLookupItem extends LookupItem {
       }
     }
   }
+
+  public static void addImportForItem(InsertionContext context, PsiClass aClass) {
+    if (aClass.getQualifiedName() == null) return;
+    PsiFile file = context.getFile();
+    int newTail = JavaCompletionUtil.insertClassReference(aClass, file, context.getStartOffset(), context.getTailOffset());
+    context.setTailOffset(newTail);
+    PostprocessReformattingAspect.getInstance(context.getProject()).doPostponedFormatting();
+    JavaCompletionUtil.shortenReference(file, context.getStartOffset());
+  }
 }