From 7438be23bf9f3f964c0e35aaaad661517ed71991 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Tue, 24 Sep 2024 16:20:27 +0200 Subject: [PATCH] Java: show template chooser even when only generating hashCode() method (IDEA-358888) GitOrigin-RevId: ea75062115e3f0bece21921b795b7ef92058960c --- .../generation/ui/GenerateEqualsWizard.java | 31 +++++++----- .../generation/ui/TemplateChooserStep.java | 48 +++++++++++-------- .../resources/messages/JavaBundle.properties | 4 +- 3 files changed, 50 insertions(+), 33 deletions(-) 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 c0edb37ee0bc..552a45fb3648 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 @@ -180,6 +180,15 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard myComboBox; private final EqualsHashCodeTemplatesManagerBase myTemplatesManager; + private final boolean myShowEqualsOptions; private @Nullable Set 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,26 +135,28 @@ 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)); - JLabel label = new JLabel(JavaBundle.message("generate.equals.hashcode.type.comparison.label")); - label.setBorder(JBUI.Borders.emptyTop(UIUtil.LARGE_VGAP)); - panel.add(label); - ContextHelpLabel contextHelp = ContextHelpLabel.create(JavaBundle.message("generate.equals.hashcode.comparison.table")); - contextHelp.setBorder(JBUI.Borders.empty(UIUtil.LARGE_VGAP, 2, 0, 0)); - panel.add(contextHelp); - JRadioButton instanceofButton = - new JRadioButton(JavaBundle.message("generate.equals.hashcode.instanceof.type.comparison"), useInstanceof); - instanceofButton.setBorder(JBUI.Borders.emptyLeft(16)); - JRadioButton getClassButton = - new JRadioButton(JavaBundle.message("generate.equals.hashcode.getclass.type.comparison"), !useInstanceof); - getClassButton.setBorder(JBUI.Borders.emptyLeft(16)); - ButtonGroup group = new ButtonGroup(); - group.add(instanceofButton); - group.add(getClassButton); - instanceofButton.addActionListener(e -> CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER = true); - getClassButton.addActionListener(e -> CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER = false); - stepPanel.add(panel); - stepPanel.add(instanceofButton); - stepPanel.add(getClassButton); + 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); + ContextHelpLabel contextHelp = ContextHelpLabel.create(JavaBundle.message("generate.equals.hashcode.comparison.table")); + contextHelp.setBorder(JBUI.Borders.empty(UIUtil.LARGE_VGAP, 2, 0, 0)); + panel.add(contextHelp); + JRadioButton instanceofButton = + new JRadioButton(JavaBundle.message("generate.equals.hashcode.instanceof.type.comparison"), useInstanceof); + instanceofButton.setBorder(JBUI.Borders.emptyLeft(16)); + JRadioButton getClassButton = + new JRadioButton(JavaBundle.message("generate.equals.hashcode.getclass.type.comparison"), !useInstanceof); + getClassButton.setBorder(JBUI.Borders.emptyLeft(16)); + ButtonGroup group = new ButtonGroup(); + group.add(instanceofButton); + group.add(getClassButton); + instanceofButton.addActionListener(e -> CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER = true); + getClassButton.addActionListener(e -> CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER = false); + stepPanel.add(panel); + stepPanel.add(instanceofButton); + stepPanel.add(getClassButton); + } final JCheckBox gettersCheckbox = createUseGettersInsteadOfFieldsCheckbox(); if (gettersCheckbox != null) { diff --git a/java/openapi/resources/messages/JavaBundle.properties b/java/openapi/resources/messages/JavaBundle.properties index 50ed2230b6ac..dd4a79c5b1aa 100644 --- a/java/openapi/resources/messages/JavaBundle.properties +++ b/java/openapi/resources/messages/JavaBundle.properties @@ -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