From cf1b2407512c778bea30b67bfa4f9d1ad3fdeca4 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 11 Dec 2023 13:07:55 +0100 Subject: [PATCH] Java: generate toString() cleanup GitOrigin-RevId: da87fecbd3d725a02f6a5b54fb5ec61f55550f48 --- .../GenerateToStringActionHandlerImpl.java | 37 ++++++++++--------- .../java/generate/GenerationUtil.java | 10 ++--- .../java/generate/view/ConfigUI.java | 5 ++- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java b/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java index 1718ca3edb02..05e160246488 100644 --- a/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java +++ b/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java @@ -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 dialog) { - final PsiElementClassMember[] members = buildMembersToShow(clazz); + public static void updateDialog(PsiClass clazz, MemberChooser> 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 chooser; + private MemberChooser> chooser; private final JComboBox comboBox; - public void setChooser(MemberChooser chooser) { + public void setChooser(MemberChooser> chooser) { this.chooser = chooser; } @@ -230,20 +231,22 @@ public class GenerateToStringActionHandlerImpl implements GenerateToStringAction settingsButton.setMnemonic(KeyEvent.VK_S); comboBox = new ComboBox<>(all); - Set inaccessibleTemplates = new HashSet<>(); + final Set 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 renderer = SimpleListCellRenderer.create((label, value, index) -> { label.setText(value.getName()); diff --git a/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerationUtil.java b/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerationUtil.java index 642d328b16a9..a906e824b41f 100644 --- a/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerationUtil.java +++ b/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerationUtil.java @@ -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 convertClassMembersToPsiMembers(@Nullable List classMemberList) { + public static List convertClassMembersToPsiMembers(@Nullable List> classMemberList) { if (classMemberList == null || classMemberList.isEmpty()) { return Collections.emptyList(); } List psiMemberList = new ArrayList<>(); - for (PsiElementClassMember classMember : classMemberList) { + for (PsiElementClassMember classMember : classMemberList) { psiMemberList.add(classMember.getElement()); } diff --git a/plugins/generate-tostring/src/org/jetbrains/java/generate/view/ConfigUI.java b/plugins/generate-tostring/src/org/jetbrains/java/generate/view/ConfigUI.java index cb72e15bdd64..4ee1ebe879bd 100644 --- a/plugins/generate-tostring/src/org/jetbrains/java/generate/view/ConfigUI.java +++ b/plugins/generate-tostring/src/org/jetbrains/java/generate/view/ConfigUI.java @@ -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 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; }