From 2a62984a5e768bf86885aa51ba5dbec44fb3299c Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 16 Aug 2017 14:01:05 +0200 Subject: [PATCH] generate equals/hashcode: preselct Objects.equals (IDEA-177603) change default selection if chosen default is not applicable --- .../EqualsHashCodeTemplatesManager.java | 5 +++ .../generation/ui/GenerateEqualsWizard.java | 16 +++++--- .../codeInsight/GenerateEquals15Test.java | 6 +-- .../generate/template/TemplatesManager.java | 37 ++++++++++++++----- 4 files changed, 45 insertions(+), 19 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/EqualsHashCodeTemplatesManager.java b/java/java-impl/src/com/intellij/codeInsight/generation/EqualsHashCodeTemplatesManager.java index 2772aecc35c6..6feeaed33284 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/EqualsHashCodeTemplatesManager.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/EqualsHashCodeTemplatesManager.java @@ -143,6 +143,11 @@ public class EqualsHashCodeTemplatesManager extends TemplatesManager { } } + @Override + protected String getInitialTemplateName() { + return toEqualsName(JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE); + } + public String getDefaultTemplateBaseName() { return getTemplateBaseName(getDefaultTemplate()); } diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java b/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java index 6cdbc962be11..db514ccf4b51 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java @@ -364,7 +364,7 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard comboBox = new ComboBox<>(); final ComponentWithBrowseButton comboBoxWithBrowseButton = new ComponentWithBrowseButton<>(comboBox, new MyEditTemplatesListener(psiClass, myPanel, comboBox)); templateChooserLabel.setLabelFor(comboBox); @@ -406,7 +406,7 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard comboBox, PsiClass psiClass) { final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(psiClass.getProject()); final GlobalSearchScope resolveScope = psiClass.getResolveScope(); @@ -431,16 +431,20 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard(ArrayUtil.toStringArray(names))); + String baseName = templatesManager.getDefaultTemplateBaseName(); + if (invalid.contains(baseName)) { //preselect default template but do not remember as default + baseName = EqualsHashCodeTemplatesManager.getTemplateBaseName(templatesManager.getAllTemplates().iterator().next()); + } + comboBox.setSelectedItem(baseName); } private static class MyEditTemplatesListener implements ActionListener { private final PsiClass myPsiClass; private final JComponent myParent; - private final ComboBox myComboBox; + private final ComboBox myComboBox; - public MyEditTemplatesListener(PsiClass psiClass, JComponent panel, ComboBox comboBox) { + public MyEditTemplatesListener(PsiClass psiClass, JComponent panel, ComboBox comboBox) { myPsiClass = psiClass; myParent = panel; myComboBox = comboBox; diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEquals15Test.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEquals15Test.java index efe42ff274c4..bb2898c4bdca 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEquals15Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEquals15Test.java @@ -37,11 +37,11 @@ public class GenerateEquals15Test extends GenerateEqualsTestCase { } public void testDifferentTypesAllNotNull() { - doTest(Functions.id(), Functions.id(), Functions.id(), true); + doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); } public void testDifferentTypesSuperEqualsAndHashCode() { - doTest(Functions.id(), Functions.id(), Functions.id(), true); + doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); } public void testDifferentTypesNoDouble() { @@ -49,7 +49,7 @@ public class GenerateEquals15Test extends GenerateEqualsTestCase { } public void testNameConflicts() { - doTest(Functions.id(), Functions.id(), Functions.id(), true); + doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); } public void testClassWithTypeParams() { diff --git a/plugins/generate-tostring/src/org/jetbrains/java/generate/template/TemplatesManager.java b/plugins/generate-tostring/src/org/jetbrains/java/generate/template/TemplatesManager.java index adb4701f6af6..cbeae51a07e1 100644 --- a/plugins/generate-tostring/src/org/jetbrains/java/generate/template/TemplatesManager.java +++ b/plugins/generate-tostring/src/org/jetbrains/java/generate/template/TemplatesManager.java @@ -19,24 +19,27 @@ */ package org.jetbrains.java.generate.template; -import com.intellij.openapi.components.*; +import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; -import com.intellij.psi.*; +import com.intellij.psi.CommonClassNames; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiType; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.util.Function; +import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.java.generate.element.FieldElement; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStreamReader; -import java.lang.reflect.Method; import java.util.*; public abstract class TemplatesManager implements PersistentStateComponent { @@ -93,15 +96,29 @@ public abstract class TemplatesManager implements PersistentStateComponent