Skip to content

Commit 2ab9e61

Browse files
author
Vitaliy
authored
Merge branch '2.0.0-develop' into fixed-usage-of-JavaScriptFileType
2 parents 8e2e3be + 79dac8a commit 2ab9e61

File tree

4 files changed

+87
-179
lines changed

4 files changed

+87
-179
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package com.magento.idea.magento2plugin.actions.generation.dialog;
77

8+
import com.magento.idea.magento2plugin.actions.generation.dialog.util.HighlightDialogFieldOnErrorUtil;
89
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation;
910
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidations;
1011
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.ValidationRule;
@@ -74,6 +75,7 @@ protected boolean validateFormFields() {
7475
if (errorMessageFieldValidationRuleMap.containsKey(field)
7576
&& errorMessageFieldValidationRuleMap.get(field).containsKey(rule)) {
7677
showErrorMessage(errorMessageFieldValidationRuleMap.get(field).get(rule));
78+
highlightFieldWithErrorStyle(field);
7779
}
7880
return false;
7981
}
@@ -186,4 +188,17 @@ private String resolveFieldValueByComponentType(final Object field) {
186188
}
187189
return null;
188190
}
191+
192+
/**
193+
* Highlight field with error style.
194+
*
195+
* @param field Object
196+
*/
197+
private void highlightFieldWithErrorStyle(final Object field) {
198+
if (field instanceof JTextField) {
199+
HighlightDialogFieldOnErrorUtil.execute((JTextField) field);
200+
} else if (field instanceof JComboBox) {
201+
HighlightDialogFieldOnErrorUtil.execute((JComboBox) field);
202+
}
203+
}
189204
}

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

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,19 @@
1010
import com.intellij.psi.PsiFile;
1111
import com.magento.idea.magento2plugin.actions.generation.NewViewModelAction;
1212
import com.magento.idea.magento2plugin.actions.generation.data.ViewModelFileData;
13-
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.NewViewModelValidator;
13+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation;
14+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.RuleRegistry;
15+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphanumericRule;
16+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.DirectoryRule;
17+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule;
18+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule;
19+
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.StartWithNumberOrCapitalLetterRule;
1420
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleViewModelClassGenerator;
1521
import com.magento.idea.magento2plugin.magento.files.ViewModelPhp;
1622
import com.magento.idea.magento2plugin.magento.packages.File;
1723
import com.magento.idea.magento2plugin.magento.packages.Package;
1824
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
1925
import java.awt.event.ActionEvent;
20-
import java.awt.event.ActionListener;
2126
import java.awt.event.KeyEvent;
2227
import java.awt.event.WindowAdapter;
2328
import java.awt.event.WindowEvent;
@@ -28,14 +33,31 @@
2833
import javax.swing.KeyStroke;
2934

3035
public class NewViewModelDialog extends AbstractDialog {
31-
private final NewViewModelValidator validator;
36+
private static final String VIEW_MODEL_NAME = "View Model Name";
37+
private static final String VIEW_MODEL_DIR = "View Model Directory";
3238
private final PsiDirectory baseDir;
3339
private final String moduleName;
40+
3441
private JPanel contentPanel;
3542
private JButton buttonOK;
3643
private JButton buttonCancel;
44+
45+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
46+
message = {NotEmptyRule.MESSAGE, VIEW_MODEL_NAME})
47+
@FieldValidation(rule = RuleRegistry.PHP_CLASS,
48+
message = {PhpClassRule.MESSAGE, VIEW_MODEL_NAME})
49+
@FieldValidation(rule = RuleRegistry.ALPHANUMERIC,
50+
message = {AlphanumericRule.MESSAGE, VIEW_MODEL_NAME})
51+
@FieldValidation(rule = RuleRegistry.START_WITH_NUMBER_OR_CAPITAL_LETTER,
52+
message = {StartWithNumberOrCapitalLetterRule.MESSAGE, VIEW_MODEL_NAME})
3753
private JTextField viewModelName;
54+
55+
@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
56+
message = {NotEmptyRule.MESSAGE, VIEW_MODEL_DIR})
57+
@FieldValidation(rule = RuleRegistry.DIRECTORY,
58+
message = {DirectoryRule.MESSAGE, VIEW_MODEL_DIR})
3859
private JTextField viewModelParentDir;
60+
3961
private final Project project;
4062

4163
/**
@@ -50,41 +72,31 @@ public NewViewModelDialog(final Project project, final PsiDirectory directory) {
5072
this.project = project;
5173
this.baseDir = directory;
5274
this.moduleName = GetModuleNameByDirectoryUtil.execute(directory, project);
53-
this.validator = NewViewModelValidator.getInstance(this);
5475

5576
setContentPane(contentPanel);
5677
setModal(true);
5778
setTitle("Create a new Magento 2 View Model.");
5879
getRootPane().setDefaultButton(buttonOK);
5980
suggestViewModelDirectory();
6081

61-
buttonOK.addActionListener(new ActionListener() {
62-
public void actionPerformed(final ActionEvent event) {
63-
onOK();
64-
}
65-
});
66-
67-
buttonCancel.addActionListener(new ActionListener() {
68-
public void actionPerformed(final ActionEvent event) {
69-
onCancel();
70-
}
71-
});
82+
buttonOK.addActionListener((final ActionEvent event) -> onOK());
83+
buttonCancel.addActionListener((final ActionEvent event) -> onCancel());
7284

7385
// call onCancel() when cross is clicked
7486
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
7587
addWindowListener(new WindowAdapter() {
88+
@Override
7689
public void windowClosing(final WindowEvent event) {
7790
onCancel();
7891
}
7992
});
8093

8194
// call onCancel() on ESCAPE
82-
contentPanel.registerKeyboardAction(new ActionListener() {
83-
public void actionPerformed(final ActionEvent event) {
84-
onCancel();
85-
}
86-
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
87-
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
95+
contentPanel.registerKeyboardAction(
96+
(final ActionEvent event) -> onCancel(),
97+
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
98+
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
99+
);
88100
}
89101

90102
/**
@@ -101,7 +113,7 @@ public static void open(final Project project, final PsiDirectory directory) {
101113
}
102114

103115
protected void onOK() {
104-
if (!validator.validate()) {
116+
if (!validateFormFields()) {
105117
return;
106118
}
107119
generateFile();
@@ -171,6 +183,7 @@ private String getNamespace() {
171183
return parts[0] + Package.fqnSeparator + parts[1] + Package.fqnSeparator + directoryPart;
172184
}
173185

186+
@Override
174187
public void onCancel() {
175188
// add your code here if necessary
176189
dispose();
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.magento.idea.magento2plugin.actions.generation.dialog.util;
2+
3+
import java.awt.Color;
4+
import java.awt.event.FocusEvent;
5+
import java.awt.event.FocusListener;
6+
import javax.swing.BorderFactory;
7+
import javax.swing.JComponent;
8+
9+
public final class HighlightDialogFieldOnErrorUtil {
10+
private static final Color ERROR_BORDER_COLOR = new Color(252, 119, 83);
11+
private static final Color ERROR_BACKGROUND_COLOR = new Color(252, 119, 83, 15);
12+
13+
private HighlightDialogFieldOnErrorUtil() {}
14+
15+
/**
16+
* Add error highlighting for JComponent.
17+
*
18+
* @param field JComponent
19+
*/
20+
public static void execute(final JComponent field) {
21+
final Color defaultBackgroundColor = field.getBackground();
22+
23+
field.setBorder(BorderFactory.createLineBorder(ERROR_BORDER_COLOR));
24+
field.setBackground(ERROR_BACKGROUND_COLOR);
25+
26+
field.addFocusListener(new FocusListener() {
27+
@Override
28+
public void focusGained(final FocusEvent event) {
29+
field.setBorder(null);
30+
field.setBackground(defaultBackgroundColor);
31+
}
32+
33+
@Override
34+
public void focusLost(FocusEvent e) {}//NOPMD
35+
});
36+
}
37+
}

src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/NewViewModelValidator.java

Lines changed: 0 additions & 157 deletions
This file was deleted.

0 commit comments

Comments
 (0)