mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 11:53:49 +07:00
Java: show template chooser even when only generating hashCode() method (IDEA-358888)
GitOrigin-RevId: ea75062115e3f0bece21921b795b7ef92058960c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
df62ea6d28
commit
7438be23bf
@@ -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,19 +252,17 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
|
||||
|
||||
@Override
|
||||
protected void addSteps() {
|
||||
if (myEqualsPanel != null) {
|
||||
addStep(new TemplateChooserStep(myClass, EqualsHashCodeTemplatesManager.getInstance()) {
|
||||
@Override
|
||||
protected void setErrorText(@NlsContexts.DialogMessage @Nullable String errorText, JComponent component) {
|
||||
GenerateEqualsWizard.this.setErrorText(errorText, component);
|
||||
}
|
||||
addStep(new TemplateChooserStep(myClass, EqualsHashCodeTemplatesManager.getInstance(), myEqualsPanel != null) {
|
||||
@Override
|
||||
protected void setErrorText(@NlsContexts.DialogMessage @Nullable String errorText, JComponent component) {
|
||||
GenerateEqualsWizard.this.setErrorText(errorText, component);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isDisposed() {
|
||||
return GenerateEqualsWizard.this.isDisposed();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
protected boolean isDisposed() {
|
||||
return GenerateEqualsWizard.this.isDisposed();
|
||||
}
|
||||
});
|
||||
super.addSteps();
|
||||
}
|
||||
|
||||
|
||||
@@ -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,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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user