Java: generate toString() cleanup

GitOrigin-RevId: da87fecbd3d725a02f6a5b54fb5ec61f55550f48
This commit is contained in:
Bas Leijdekkers
2023-12-11 15:43:48 +00:00
committed by intellij-monorepo-bot
parent fd88b53a61
commit cf1b240751
3 changed files with 28 additions and 24 deletions
@@ -22,6 +22,7 @@ import com.intellij.codeInsight.hint.HintManager;
import com.intellij.ide.util.MemberChooser;
import com.intellij.java.JavaBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.diagnostic.Logger;
@@ -94,7 +95,7 @@ public class GenerateToStringActionHandlerImpl implements GenerateToStringAction
LOG.debug("Current project " + project.getName());
}
final PsiElementClassMember[] dialogMembers = buildMembersToShow(clazz);
final PsiElementClassMember<?>[] dialogMembers = buildMembersToShow(clazz);
final MemberChooserHeaderPanel header = new MemberChooserHeaderPanel(clazz);
LOG.debug("Displaying member chooser dialog");
@@ -163,19 +164,19 @@ public class GenerateToStringActionHandlerImpl implements GenerateToStringAction
: ContainerUtil.filter(dialogMembers, selectedElements::contains);
}
private static PsiElementClassMember[] getPreselection(@NotNull PsiClass clazz, PsiElementClassMember[] dialogMembers) {
private static PsiElementClassMember<?>[] getPreselection(@NotNull PsiClass clazz, PsiElementClassMember<?>[] dialogMembers) {
return Arrays.stream(dialogMembers)
.filter(member -> member.getElement().getContainingClass() == clazz)
.toArray(PsiElementClassMember[]::new);
}
public static void updateDialog(PsiClass clazz, MemberChooser<? super PsiElementClassMember> dialog) {
final PsiElementClassMember[] members = buildMembersToShow(clazz);
public static void updateDialog(PsiClass clazz, MemberChooser<? super PsiElementClassMember<?>> dialog) {
final PsiElementClassMember<?>[] members = buildMembersToShow(clazz);
dialog.resetElements(members);
dialog.selectElements(getPreselection(clazz, members));
}
public static PsiElementClassMember[] buildMembersToShow(PsiClass clazz) {
public static PsiElementClassMember<?>[] buildMembersToShow(PsiClass clazz) {
Config config = GenerateToStringContext.getConfig();
PsiField[] filteredFields = GenerateToStringUtils.filterAvailableFields(clazz, true, config.getFilterPattern());
if (LOG.isDebugEnabled()) LOG.debug("Number of fields after filtering: " + filteredFields.length);
@@ -213,10 +214,10 @@ public class GenerateToStringActionHandlerImpl implements GenerateToStringAction
}
public static class MemberChooserHeaderPanel extends JPanel {
private MemberChooser<PsiElementClassMember> chooser;
private MemberChooser<PsiElementClassMember<?>> chooser;
private final JComboBox<TemplateResource> comboBox;
public void setChooser(MemberChooser chooser) {
public void setChooser(MemberChooser<PsiElementClassMember<?>> chooser) {
this.chooser = chooser;
}
@@ -230,20 +231,22 @@ public class GenerateToStringActionHandlerImpl implements GenerateToStringAction
settingsButton.setMnemonic(KeyEvent.VK_S);
comboBox = new ComboBox<>(all);
Set<String> inaccessibleTemplates = new HashSet<>();
final Set<String> inaccessibleTemplates = new HashSet<>();
final JavaPsiFacade instance = JavaPsiFacade.getInstance(clazz.getProject());
final GlobalSearchScope resolveScope = clazz.getResolveScope();
ReadAction.nonBlocking(() -> {
for (TemplateResource template : templates) {
String className = template.getClassName();
if (className != null && instance.findClass(className, resolveScope) == null) {
inaccessibleTemplates.add(className);
for (TemplateResource template : templates) {
String className = template.getClassName();
if (className != null && instance.findClass(className, resolveScope) == null) {
inaccessibleTemplates.add(className);
}
}
}
if (!inaccessibleTemplates.isEmpty()) {
SwingUtilities.invokeLater(comboBox::repaint);
}
}).submit(AppExecutorUtil.getAppExecutorService());
return inaccessibleTemplates;
})
.finishOnUiThread(ModalityState.current(), ts -> {
if (!ts.isEmpty()) SwingUtilities.invokeLater(comboBox::repaint);
})
.submit(AppExecutorUtil.getAppExecutorService());;
final ListCellRenderer<TemplateResource> renderer =
SimpleListCellRenderer.create((label, value, index) -> {
label.setText(value.getName());
@@ -1,4 +1,4 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.java.generate;
import com.intellij.CommonBundle;
@@ -76,8 +76,8 @@ public final class GenerationUtil {
* @param filteredMethods methods to be included in the dialog
* @return the combined list
*/
public static PsiElementClassMember[] combineToClassMemberList(PsiField[] filteredFields, PsiMethod[] filteredMethods) {
PsiElementClassMember[] members = new PsiElementClassMember[filteredFields.length + filteredMethods.length];
public static PsiElementClassMember<?>[] combineToClassMemberList(PsiField[] filteredFields, PsiMethod[] filteredMethods) {
PsiElementClassMember<?>[] members = new PsiElementClassMember[filteredFields.length + filteredMethods.length];
// first add fields
for (int i = 0; i < filteredFields.length; i++) {
@@ -98,13 +98,13 @@ public final class GenerationUtil {
* @param classMemberList list of {@link PsiElementClassMember}
* @return a list of {PsiMember} objects.
*/
public static List<PsiMember> convertClassMembersToPsiMembers(@Nullable List<? extends PsiElementClassMember> classMemberList) {
public static List<PsiMember> convertClassMembersToPsiMembers(@Nullable List<? extends PsiElementClassMember<?>> classMemberList) {
if (classMemberList == null || classMemberList.isEmpty()) {
return Collections.emptyList();
}
List<PsiMember> psiMemberList = new ArrayList<>();
for (PsiElementClassMember classMember : classMemberList) {
for (PsiElementClassMember<?> classMember : classMemberList) {
psiMemberList.add(classMember.getElement());
}
@@ -18,6 +18,7 @@ package org.jetbrains.java.generate.view;
import com.intellij.CommonBundle;
import com.intellij.java.JavaBundle;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.ComboBox;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.LanguageTextField;
import com.intellij.util.ui.JBUI;
@@ -57,7 +58,7 @@ public class ConfigUI extends JPanel {
private final LanguageTextField filterFieldType;
private final LanguageTextField filterMethodName;
private final LanguageTextField filterMethodType;
private final JComboBox sortElementsComboBox = new JComboBox();
private final JComboBox<String> sortElementsComboBox = new ComboBox<>();
private final JCheckBox sortElements = new JCheckBox(JavaBundle.message("generate.tostring.sort.checkbox"));
/**
@@ -264,7 +265,7 @@ public class ConfigUI extends JPanel {
@Nullable
private static String emptyToNull(final String s) {
if (s != null && s.length() == 0) return null;
if (s != null && s.isEmpty()) return null;
return s;
}