Java: show template chooser even when only generating hashCode() method (IDEA-358888)

GitOrigin-RevId: ea75062115e3f0bece21921b795b7ef92058960c
This commit is contained in:
Bas Leijdekkers
2024-09-24 16:20:27 +02:00
committed by intellij-monorepo-bot
parent df62ea6d28
commit 7438be23bf
3 changed files with 50 additions and 33 deletions

View File

@@ -180,6 +180,15 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
public GenerateEqualsWizard(Project project, @NotNull PsiClass aClass, boolean needEquals, boolean needHashCode) {
super(project, new JavaGenerateEqualsWizardBuilder(aClass, needEquals, needHashCode));
if (needEquals && needHashCode) {
setTitle(JavaBundle.message("generate.equals.hashcode.wizard.title"));
}
else if (needEquals) {
setTitle(JavaBundle.message("generate.equals.wizard.title"));
}
else if (needHashCode) {
setTitle(JavaBundle.message("generate.hashcode.wizard.title"));
}
}
public PsiField[] getEqualsFields() {
@@ -243,8 +252,7 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
@Override
protected void addSteps() {
if (myEqualsPanel != null) {
addStep(new TemplateChooserStep(myClass, EqualsHashCodeTemplatesManager.getInstance()) {
addStep(new TemplateChooserStep(myClass, EqualsHashCodeTemplatesManager.getInstance(), myEqualsPanel != null) {
@Override
protected void setErrorText(@NlsContexts.DialogMessage @Nullable String errorText, JComponent component) {
GenerateEqualsWizard.this.setErrorText(errorText, component);
@@ -255,7 +263,6 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
return GenerateEqualsWizard.this.isDisposed();
}
});
}
super.addSteps();
}

View File

@@ -40,9 +40,15 @@ public abstract class TemplateChooserStep extends StepAdapter {
private final JComponent myPanel;
private final ComboBox<String> myComboBox;
private final EqualsHashCodeTemplatesManagerBase myTemplatesManager;
private final boolean myShowEqualsOptions;
private @Nullable Set<String> myInvalidTemplates = null;
protected TemplateChooserStep(PsiElement contextElement, EqualsHashCodeTemplatesManagerBase templatesManager) {
this(contextElement, templatesManager, true);
}
protected TemplateChooserStep(PsiElement contextElement, EqualsHashCodeTemplatesManagerBase templatesManager, boolean showEqualsOptions) {
myShowEqualsOptions = showEqualsOptions;
myPanel = new JPanel(new VerticalFlowLayout());
final JPanel templateChooserPanel = new JPanel(new BorderLayout());
final JLabel templateChooserLabel = new JLabel(JavaBundle.message("generate.equals.hashcode.template"));
@@ -129,6 +135,7 @@ public abstract class TemplateChooserStep extends StepAdapter {
boolean useInstanceof = CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER;
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
if (myShowEqualsOptions) {
JLabel label = new JLabel(JavaBundle.message("generate.equals.hashcode.type.comparison.label"));
label.setBorder(JBUI.Borders.emptyTop(UIUtil.LARGE_VGAP));
panel.add(label);
@@ -149,6 +156,7 @@ public abstract class TemplateChooserStep extends StepAdapter {
stepPanel.add(panel);
stepPanel.add(instanceofButton);
stepPanel.add(getClassButton);
}
final JCheckBox gettersCheckbox = createUseGettersInsteadOfFieldsCheckbox();
if (gettersCheckbox != null) {

View File

@@ -294,8 +294,10 @@ generate.equals.hashcode.internal.error=Internal error
generate.equals.hashcode.non.null.fields.chooser.title=Select all non-null &fields
generate.equals.hashcode.template=&Template:
generate.equals.hashcode.use.getters=Use &getters when available
generate.equals.hashcode.warning.hashcode.for.arrays.is.not.supported=hashCode () for arrays is not supported
generate.equals.hashcode.warning.hashcode.for.arrays.is.not.supported=hashCode() for arrays is not supported
generate.equals.hashcode.wizard.title=Generate equals() and hashCode()
generate.equals.wizard.title=Generate equals()
generate.hashcode.wizard.title=Generate hashCode()
generate.equals.template.title=Equals Template:
generate.equals.warning.equals.for.nested.arrays.not.supported=equals() for nested arrays is not supported
generate.equals.warning.generated.equals.could.be.incorrect=Generated equals() for Object[] can be incorrect