add static import: use existing import name (IDEA-174647)

This commit is contained in:
Anna Kozlova
2017-06-20 11:32:03 +03:00
parent 18f18cb834
commit b6482f44a1
4 changed files with 14 additions and 4 deletions
@@ -25,6 +25,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.codeStyle.ImportHelper;
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl;
@@ -171,8 +172,16 @@ public class AddSingleMemberStaticImportAction extends BaseElementAtCaretIntenti
if (availability.resolved instanceof PsiClass) {
setText(CodeInsightBundle.message("intention.add.single.member.import.text", availability.qName));
} else {
if (!(element.getContainingFile() instanceof PsiJavaFile)) return false;
setText(CodeInsightBundle.message("intention.add.single.member.static.import.text", availability.qName));
PsiFile file = element.getContainingFile();
if (!(file instanceof PsiJavaFile)) return false;
PsiImportStatementBase existingImport =
findExistingImport(file, availability.resolved.getContainingClass(), StringUtil.getShortName(availability.qName));
if (existingImport != null && !existingImport.isOnDemand()) {
setText(CodeInsightBundle.message("intention.use.single.member.static.import.text" , availability.qName));
}
else {
setText(CodeInsightBundle.message("intention.add.single.member.static.import.text", availability.qName));
}
}
}
return availability != null;
@@ -1,4 +1,4 @@
// "Add static import for 'java.lang.Math.abs'" "true"
// "Use static import for 'java.lang.Math.abs'" "true"
package test;
import static java.lang.Math.abs;
@@ -1,4 +1,4 @@
// "Add static import for 'java.lang.Math.abs'" "true"
// "Use static import for 'java.lang.Math.abs'" "true"
package test;
import static java.lang.Math.abs;
@@ -191,6 +191,7 @@ intention.add.on.demand.static.import.family=Add On Demand Static Import
intention.add.on.demand.static.import.text=Add on demand static import for ''{0}''
intention.add.single.member.static.import.family=Add Single-Member Static Import
intention.add.single.member.static.import.text=Add static import for ''{0}''
intention.use.single.member.static.import.text=Use static import for ''{0}''
intention.add.single.member.import.text=Add import for ''{0}''
intention.add.explicit.type.arguments.family=Add explicit type arguments
intention.replace.concatenation.with.formatted.output.family=Replace Concatenation with Formatted Output