mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
generate equals/hashcode: preselct Objects.equals (IDEA-177603)
change default selection if chosen default is not applicable
This commit is contained in:
+5
@@ -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());
|
||||
}
|
||||
|
||||
+10
-6
@@ -364,7 +364,7 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
|
||||
templateChooserPanel.add(templateChooserLabel, BorderLayout.WEST);
|
||||
|
||||
|
||||
final ComboBox comboBox = new ComboBox();
|
||||
final ComboBox<String> comboBox = new ComboBox<>();
|
||||
final ComponentWithBrowseButton<ComboBox> comboBoxWithBrowseButton =
|
||||
new ComponentWithBrowseButton<>(comboBox, new MyEditTemplatesListener(psiClass, myPanel, comboBox));
|
||||
templateChooserLabel.setLabelFor(comboBox);
|
||||
@@ -406,7 +406,7 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
|
||||
}
|
||||
|
||||
private static void setupCombobox(EqualsHashCodeTemplatesManager templatesManager,
|
||||
ComboBox comboBox,
|
||||
ComboBox<String> comboBox,
|
||||
PsiClass psiClass) {
|
||||
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(psiClass.getProject());
|
||||
final GlobalSearchScope resolveScope = psiClass.getResolveScope();
|
||||
@@ -431,16 +431,20 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
|
||||
}
|
||||
}
|
||||
});
|
||||
comboBox.setModel(new DefaultComboBoxModel(ArrayUtil.toStringArray(names)));
|
||||
comboBox.setSelectedItem(templatesManager.getDefaultTemplateBaseName());
|
||||
comboBox.setModel(new DefaultComboBoxModel<>(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<String> myComboBox;
|
||||
|
||||
public MyEditTemplatesListener(PsiClass psiClass, JComponent panel, ComboBox comboBox) {
|
||||
public MyEditTemplatesListener(PsiClass psiClass, JComponent panel, ComboBox<String> comboBox) {
|
||||
myPsiClass = psiClass;
|
||||
myParent = panel;
|
||||
myComboBox = comboBox;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
+27
-10
@@ -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<TemplatesState> {
|
||||
@@ -93,15 +96,29 @@ public abstract class TemplatesManager implements PersistentStateComponent<Templ
|
||||
}
|
||||
|
||||
public TemplateResource getDefaultTemplate() {
|
||||
for (TemplateResource template : getAllTemplates()) {
|
||||
if (Comparing.equal(template.getFileName(), myState.defaultTempalteName)) {
|
||||
return template;
|
||||
}
|
||||
}
|
||||
TemplateResource resource = findTemplateByName(myState.defaultTempalteName);
|
||||
if (resource != null) return resource;
|
||||
|
||||
return getAllTemplates().iterator().next();
|
||||
String initialTemplateName = getInitialTemplateName();
|
||||
resource = initialTemplateName != null ? findTemplateByName(initialTemplateName) : null;
|
||||
return ObjectUtils.notNull(resource, getAllTemplates().iterator().next());
|
||||
}
|
||||
|
||||
protected String getInitialTemplateName () {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public TemplateResource findTemplateByName(String templateName) {
|
||||
for (TemplateResource template : getAllTemplates()) {
|
||||
if (Comparing.equal(template.getFileName(), templateName)) {
|
||||
return template;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public void setDefaultTemplate(TemplateResource res) {
|
||||
myState.defaultTempalteName = res.getFileName();
|
||||
|
||||
Reference in New Issue
Block a user