From 49bca52ac5d7ab61e7646844147e9abd3fbe0540 Mon Sep 17 00:00:00 2001 From: Evgenii Zakharchenko Date: Sat, 21 Dec 2024 12:20:21 +0100 Subject: [PATCH] [spring] IDEA-352691 Add menu item to create Spring bean in the New menu group GitOrigin-RevId: 75cb33497ff44f3bde9117321c956c98159f18dd --- .../actions/CreateFileFromTemplateDialog.java | 7 ++-- .../CreateWithTemplatesDialogPanel.java | 41 ++++++++++--------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java index 8f6619bb36e5..e5541810d71b 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java @@ -142,9 +142,6 @@ public class CreateFileFromTemplateDialog extends DialogWrapper { @NotNull FileCreator fileCreator, Consumer elementConsumer) { CreateWithTemplatesDialogPanel contentPanel = new CreateWithTemplatesDialogPanel(selectedItem, myTemplatesList); - if (myKindSelector != null) { - contentPanel.setTemplateSelectorMatcher(myKindSelector); - } ElementCreator elementCreator = new ElementCreator(myProject, errorTitle) { @Override @@ -171,6 +168,10 @@ public class CreateFileFromTemplateDialog extends DialogWrapper { textField.selectAll(); } + if (myKindSelector != null) { + contentPanel.setTemplateSelectorMatcher(myKindSelector); + } + contentPanel.setApplyAction(e -> { String newElementName = contentPanel.getEnteredName(); if (StringUtil.isEmptyOrSpaces(newElementName)) return; diff --git a/platform/lang-impl/src/com/intellij/ide/actions/newclass/CreateWithTemplatesDialogPanel.java b/platform/lang-impl/src/com/intellij/ide/actions/newclass/CreateWithTemplatesDialogPanel.java index 4c04782e4275..9b088a49a25c 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/newclass/CreateWithTemplatesDialogPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/newclass/CreateWithTemplatesDialogPanel.java @@ -8,7 +8,6 @@ import com.intellij.ui.SimpleListCellRenderer; import com.intellij.ui.components.JBLabel; import com.intellij.ui.components.fields.ExtendableTextComponent; import com.intellij.ui.scale.JBUIScale; -import com.intellij.util.text.NameUtilCore; import com.intellij.util.ui.JBUI; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -20,7 +19,6 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.List; import java.util.function.BiFunction; -import java.util.function.Function; import static com.intellij.ide.actions.newclass.TemplateListCellRendererKt.createTemplateListCellRenderer; @@ -75,33 +73,38 @@ public class CreateWithTemplatesDialogPanel extends NewItemWithTemplatesPopupPan } public void setTemplateSelectorMatcher(BiFunction templateMatcher) { + selectTemplate(templateMatcher); myTemplatesList.addListSelectionListener(ListSelectionEvent -> { templateExplicitlySelected = true; }); myTextField.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { - if (templateExplicitlySelected) { - return; - } - String newElementName = getEnteredName(); - JList list = myTemplatesList; - TemplatePresentation matchedElement = null; - for (int i = 0; i < list.getModel().getSize(); i++) { - TemplatePresentation presentation = list.getModel().getElementAt(i); - if (templateMatcher.apply(newElementName, presentation)) { - matchedElement = presentation; - break; - } - } - if (matchedElement != null) { - list.setSelectedValue(matchedElement, true); - templateExplicitlySelected = false; - } + selectTemplate(templateMatcher); } }); } + private void selectTemplate(BiFunction templateMatcher) { + if (templateExplicitlySelected) { + return; + } + String newElementName = getEnteredName(); + JList list = myTemplatesList; + TemplatePresentation matchedElement = null; + for (int i = 0; i < list.getModel().getSize(); i++) { + TemplatePresentation presentation = list.getModel().getElementAt(i); + if (templateMatcher.apply(newElementName, presentation)) { + matchedElement = presentation; + break; + } + } + if (matchedElement != null) { + list.setSelectedValue(matchedElement, true); + templateExplicitlySelected = false; + } + } + private static final class TemplateListCellRenderer implements ListCellRenderer { private final ListCellRenderer delegateRenderer = SimpleListCellRenderer.create((@NotNull JBLabel label, TemplatePresentation value, int index) -> {