Skip to content

Commit c2b9f48

Browse files
author
Vitaliy
authored
Merge branch '2.1.0-develop' into issue-304
2 parents 2fe1239 + 47e7479 commit c2b9f48

File tree

6 files changed

+73
-423
lines changed

6 files changed

+73
-423
lines changed

resources/magento2/common.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ common.module.target=Target Module
2222
common.theme.target=Target Theme
2323
common.area.target=Target Area
2424
common.name=Name
25-
common.className=Class Name
25+
common.className=Class name
26+
common.argument=Argument name
2627
common.directoryPath=Directory Path
2728
common.methodType=Method Type
2829
common.sortOrder=Sort Order

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
108108
</constraints>
109109
<properties>
110-
<text value="Argument Name"/>
110+
<text resource-bundle="magento2/common" key="common.argument"/>
111111
</properties>
112112
</component>
113113
<component id="c3a92" class="javax.swing.JTextField" binding="viewModelArgumentName">

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

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111
import com.intellij.ui.DocumentAdapter;
1212
import com.magento.idea.magento2plugin.actions.generation.InjectAViewModelAction;
1313
import com.magento.idea.magento2plugin.actions.generation.data.ViewModelFileData;
14-
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.InjectAViewModelDialogValidator;
14+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation;
15+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.RuleRegistry;
16+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphanumericRule;
17+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.DirectoryRule;
18+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule;
19+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule;
1520
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleViewModelClassGenerator;
1621
import com.magento.idea.magento2plugin.actions.generation.generator.code.ClassArgumentInXmlConfigGenerator;
1722
import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder;
@@ -21,7 +26,6 @@
2126
import com.magento.idea.magento2plugin.util.FirstLetterToLowercaseUtil;
2227
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
2328
import java.awt.event.ActionEvent;
24-
import java.awt.event.ActionListener;
2529
import java.awt.event.KeyEvent;
2630
import java.awt.event.WindowAdapter;
2731
import java.awt.event.WindowEvent;
@@ -35,24 +39,43 @@
3539
import javax.swing.event.DocumentEvent;
3640
import org.jetbrains.annotations.NotNull;
3741

42+
@SuppressWarnings({
43+
"PMD.ExcessiveImports"
44+
})
3845
public class InjectAViewModelDialog extends AbstractDialog {
3946
@NotNull
4047
private final Project project;
41-
@NotNull
42-
private final InjectAViewModelDialogValidator validator;
4348
private final XmlTag targetBlockTag;
4449
private JPanel contentPane;
4550
private JButton buttonOK;
4651
private JButton buttonCancel;
47-
private JTextField viewModelClassName;
48-
private JTextField viewModelDirectory;
4952
private final CommonBundle commonBundle;
5053
private final ValidatorBundle validatorBundle;
51-
private JTextField viewModelArgumentName;
5254
private JLabel inheritClassLabel;//NOPMD
5355
private JLabel viewModelDirectoryLabel;//NOPMD
5456
private JLabel viewModelClassNameLabel;//NOPMD
5557
private JLabel viewModelArgumentNameLabel;//NOPMD
58+
private static final String CLASS_NAME = "class name";
59+
private static final String DIRECTORY = "directory";
60+
private static final String ARGUMENT_NAME = "argument name";
61+
62+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
63+
message = {NotEmptyRule.MESSAGE, CLASS_NAME})
64+
@FieldValidation(rule = RuleRegistry.PHP_CLASS,
65+
message = {PhpClassRule.MESSAGE, CLASS_NAME})
66+
private JTextField viewModelClassName;
67+
68+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
69+
message = {NotEmptyRule.MESSAGE, DIRECTORY})
70+
@FieldValidation(rule = RuleRegistry.DIRECTORY,
71+
message = {DirectoryRule.MESSAGE, DIRECTORY})
72+
private JTextField viewModelDirectory;
73+
74+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
75+
message = {NotEmptyRule.MESSAGE, ARGUMENT_NAME})
76+
@FieldValidation(rule = RuleRegistry.ALPHANUMERIC,
77+
message = {AlphanumericRule.MESSAGE, ARGUMENT_NAME})
78+
private JTextField viewModelArgumentName;
5679

5780
/**
5881
* Constructor.
@@ -68,7 +91,6 @@ public InjectAViewModelDialog(
6891

6992
this.project = project;
7093
this.targetBlockTag = targetBlockTag;
71-
this.validator = new InjectAViewModelDialogValidator(this);
7294
this.validatorBundle = new ValidatorBundle();
7395
this.commonBundle = new CommonBundle();
7496

@@ -84,19 +106,8 @@ protected void textChanged(final @NotNull DocumentEvent event) {
84106
setModal(true);
85107
getRootPane().setDefaultButton(buttonOK);
86108

87-
buttonOK.addActionListener(new ActionListener() {
88-
@Override
89-
public void actionPerformed(final ActionEvent event) {
90-
onOK();
91-
}
92-
});
93-
94-
buttonCancel.addActionListener(new ActionListener() {
95-
@Override
96-
public void actionPerformed(final ActionEvent event) {
97-
onCancel();
98-
}
99-
});
109+
buttonOK.addActionListener((final ActionEvent event) -> onOK());
110+
buttonCancel.addActionListener((final ActionEvent event) -> onCancel());
100111

101112
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
102113
addWindowListener(new WindowAdapter() {
@@ -106,13 +117,11 @@ public void windowClosing(final WindowEvent event) {
106117
}
107118
});
108119

109-
contentPane.registerKeyboardAction(new ActionListener() {
110-
@Override
111-
public void actionPerformed(final ActionEvent event) {
112-
onCancel();
113-
}
114-
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
115-
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
120+
contentPane.registerKeyboardAction(
121+
(final ActionEvent event) -> onCancel(),
122+
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
123+
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
124+
);
116125
}
117126

118127
protected void updateArgumentText() {
@@ -123,7 +132,7 @@ protected void updateArgumentText() {
123132
}
124133

125134
protected void onOK() {
126-
if (!validator.validate(project)) {
135+
if (!validateFormFields()) {
127136
return;
128137
}
129138
final String moduleName = GetModuleNameByDirectoryUtil.execute(

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

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212
import com.magento.idea.magento2plugin.actions.generation.OverrideClassByAPreferenceAction;
1313
import com.magento.idea.magento2plugin.actions.generation.data.PreferenceDiXmFileData;
1414
import com.magento.idea.magento2plugin.actions.generation.data.PreferenceFileData;
15-
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.OverrideClassByAPreferenceDialogValidator;
15+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation;
16+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.RuleRegistry;
17+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.DirectoryRule;
18+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule;
19+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule;
1620
import com.magento.idea.magento2plugin.actions.generation.generator.PreferenceClassGenerator;
1721
import com.magento.idea.magento2plugin.actions.generation.generator.PreferenceDiXmlGenerator;
1822
import com.magento.idea.magento2plugin.bundles.CommonBundle;
@@ -23,7 +27,6 @@
2327
import com.magento.idea.magento2plugin.magento.packages.Package;
2428
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
2529
import java.awt.event.ActionEvent;
26-
import java.awt.event.ActionListener;
2730
import java.awt.event.KeyEvent;
2831
import java.awt.event.WindowAdapter;
2932
import java.awt.event.WindowEvent;
@@ -44,23 +47,37 @@ public class OverrideClassByAPreferenceDialog extends AbstractDialog { //NOPMD
4447
@NotNull
4548
private final Project project;
4649
private final PhpClass targetClass;
47-
@NotNull
48-
private final OverrideClassByAPreferenceDialogValidator validator;
4950
private JPanel contentPane;
5051
private JButton buttonOK;
5152
private JButton buttonCancel;
52-
private JTextField preferenceClassName;
53-
private JTextField preferenceDirectory;
5453
private final CommonBundle commonBundle;
5554
private final ValidatorBundle validatorBundle;
56-
private FilteredComboBox preferenceModule;
5755
private JLabel inheritClassLabel;
5856
private JComboBox preferenceArea;
5957
private JCheckBox inheritClass;
6058
private JLabel preferenceAreaLabel;//NOPMD
6159
private JLabel selectPreferenceModule;//NOPMD
6260
private JLabel preferenceDirectoryLabel;//NOPMD
6361
private JLabel preferenceClassNameLabel;//NOPMD
62+
private static final String MODULE = "target module";
63+
private static final String CLASS = "class name";
64+
private static final String DIRECTORY = "directory";
65+
66+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
67+
message = {NotEmptyRule.MESSAGE, MODULE})
68+
private FilteredComboBox preferenceModule;
69+
70+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
71+
message = {NotEmptyRule.MESSAGE, CLASS})
72+
@FieldValidation(rule = RuleRegistry.PHP_CLASS,
73+
message = {PhpClassRule.MESSAGE, CLASS})
74+
private JTextField preferenceClassName;
75+
76+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
77+
message = {NotEmptyRule.MESSAGE, DIRECTORY})
78+
@FieldValidation(rule = RuleRegistry.DIRECTORY,
79+
message = {DirectoryRule.MESSAGE, DIRECTORY})
80+
private JTextField preferenceDirectory;
6481

6582
/**
6683
* Constructor.
@@ -76,7 +93,6 @@ public OverrideClassByAPreferenceDialog(
7693

7794
this.project = project;
7895
this.targetClass = targetClass;
79-
this.validator = OverrideClassByAPreferenceDialogValidator.getInstance(this);
8096
this.validatorBundle = new ValidatorBundle();
8197
this.commonBundle = new CommonBundle();
8298

@@ -91,19 +107,8 @@ public OverrideClassByAPreferenceDialog(
91107
suggestPreferenceClassName(targetClass);
92108
suggestPreferenceDirectory(targetClass);
93109

94-
buttonOK.addActionListener(new ActionListener() {
95-
@Override
96-
public void actionPerformed(final ActionEvent event) {
97-
onOK();
98-
}
99-
});
100-
101-
buttonCancel.addActionListener(new ActionListener() {
102-
@Override
103-
public void actionPerformed(final ActionEvent event) {
104-
onCancel();
105-
}
106-
});
110+
buttonOK.addActionListener((final ActionEvent event) -> onOK());
111+
buttonCancel.addActionListener((final ActionEvent event) -> onCancel());
107112

108113
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
109114
addWindowListener(new WindowAdapter() {
@@ -113,13 +118,11 @@ public void windowClosing(final WindowEvent event) {
113118
}
114119
});
115120

116-
contentPane.registerKeyboardAction(new ActionListener() {
117-
@Override
118-
public void actionPerformed(final ActionEvent event) {
119-
onCancel();
120-
}
121-
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
122-
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
121+
contentPane.registerKeyboardAction(
122+
(final ActionEvent event) -> onCancel(),
123+
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
124+
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
125+
);
123126
}
124127

125128
private void suggestPreferenceDirectory(final PhpClass targetClass) {
@@ -148,7 +151,7 @@ private void fillTargetAreaOptions() {
148151
}
149152

150153
protected void onOK() {
151-
if (!validator.validate(project)) {
154+
if (!validateFormFields()) {
152155
return;
153156
}
154157
final PsiFile diXml = new PreferenceDiXmlGenerator(new PreferenceDiXmFileData(
@@ -184,7 +187,6 @@ protected void onOK() {
184187
isInheritClass()
185188
), project).generate(OverrideClassByAPreferenceAction.ACTION_NAME, true);
186189

187-
188190
this.setVisible(false);
189191
}
190192

0 commit comments

Comments
 (0)