Skip to content

Commit d26a746

Browse files
author
Vitaliy Boyko
committed
Added argument name autocomplete
1 parent 8c33d44 commit d26a746

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

src/com/magento/idea/magento2plugin/actions/generation/dialog/InjectAViewModelDialog.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.intellij.openapi.project.Project;
99
import com.intellij.psi.PsiFile;
1010
import com.intellij.psi.xml.XmlTag;
11+
import com.intellij.ui.DocumentAdapter;
1112
import com.magento.idea.magento2plugin.actions.generation.InjectAViewModelAction;
1213
import com.magento.idea.magento2plugin.actions.generation.data.ViewModelFileData;
1314
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.InjectAViewModelDialogValidator;
@@ -17,6 +18,7 @@
1718
import com.magento.idea.magento2plugin.bundles.CommonBundle;
1819
import com.magento.idea.magento2plugin.bundles.ValidatorBundle;
1920
import com.magento.idea.magento2plugin.magento.packages.XsiTypes;
21+
import com.magento.idea.magento2plugin.util.FirstLetterToLowercaseUtil;
2022
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
2123
import java.awt.event.ActionEvent;
2224
import java.awt.event.ActionListener;
@@ -30,6 +32,7 @@
3032
import javax.swing.JPanel;
3133
import javax.swing.JTextField;
3234
import javax.swing.KeyStroke;
35+
import javax.swing.event.DocumentEvent;
3336
import org.jetbrains.annotations.NotNull;
3437

3538
public class InjectAViewModelDialog extends AbstractDialog {
@@ -69,7 +72,12 @@ public InjectAViewModelDialog(
6972
this.validatorBundle = new ValidatorBundle();
7073
this.commonBundle = new CommonBundle();
7174

72-
this.viewModelArgumentName.setText("viewModel");
75+
this.viewModelClassName.getDocument().addDocumentListener(new DocumentAdapter() {
76+
@Override
77+
protected void textChanged(final @NotNull DocumentEvent event) {
78+
updateArgumentText();
79+
}
80+
});
7381
this.viewModelDirectory.setText("ViewModel");
7482

7583
setContentPane(contentPane);
@@ -107,6 +115,13 @@ public void actionPerformed(final ActionEvent event) {
107115
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
108116
}
109117

118+
protected void updateArgumentText() {
119+
final String classNameText = this.viewModelClassName.getText();
120+
this.viewModelArgumentName.setText(
121+
FirstLetterToLowercaseUtil.convert(classNameText)
122+
);
123+
}
124+
110125
protected void onOK() {
111126
if (!validator.validate(project)) {
112127
return;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.util;
7+
8+
import java.util.Locale;
9+
10+
public final class FirstLetterToLowercaseUtil {
11+
12+
private FirstLetterToLowercaseUtil() {}
13+
14+
/**
15+
* Converts first letter of a string to lowercase.
16+
* Eg: "FoO" -> "foO".
17+
*
18+
* @param string String
19+
* @return String
20+
*/
21+
public static String convert(final String string) {
22+
if (string == null || string.length() == 0) {
23+
return "";
24+
}
25+
26+
final int minLength = 1;
27+
if (string.length() == minLength) {
28+
return string.toLowerCase(Locale.ROOT);
29+
}
30+
31+
char[] chArr = string.toCharArray();
32+
chArr[0] = Character.toLowerCase(chArr[0]);
33+
34+
return new String(chArr);
35+
}
36+
}

0 commit comments

Comments
 (0)