Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion resources/magento2/validation.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ validator.startWithNumberOrCapitalLetter={0} must start from a number or a capit
validator.onlyNumbers={0} must contain numbers only
validator.mustNotBeNegative={0} must not be negative
validator.identifier={0} must contain letters, numbers, dashes, and underscores only
validator.class.isNotValid={0} is not valid class name
validator.class.isNotValid=The {0} field does not contain a valid class name
validator.class.shouldBeUnique=Duplicated class {0}
validator.namespace.isNotValid={0} is not valid namespace name
validator.directory.isNotValid={0} is not valid
validator.directory.php.isNotValid=The {0} field does not contain a valid PHP directory
validator.module.noSuchModule=No such module {0}
validator.file.alreadyExists={0} already exists
validator.file.cantBeCreated={0} can't be created
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,17 @@
import com.intellij.psi.PsiFile;
import com.magento.idea.magento2plugin.actions.generation.NewBlockAction;
import com.magento.idea.magento2plugin.actions.generation.data.BlockFileData;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.NewBlockValidator;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.RuleRegistry;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpDirectoryRule;
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleBlockClassGenerator;
import com.magento.idea.magento2plugin.magento.files.BlockPhp;
import com.magento.idea.magento2plugin.magento.packages.File;
import com.magento.idea.magento2plugin.magento.packages.Package;
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Expand All @@ -30,17 +33,28 @@
import javax.swing.KeyStroke;

public class NewBlockDialog extends AbstractDialog {
private final NewBlockValidator validator;
private final PsiDirectory baseDir;
private final String moduleName;
private JPanel contentPanel;
private JButton buttonOK;
private JButton buttonCancel;
private JTextField blockName;
private JTextField blockParentDir;
private final Project project;
private JTextPane warning;//NOPMD
private JRadioButton adminhtmlRadioButton;//NOPMD
private static final String NAME = "name";
private static final String DIRECTORY = "directory";

@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
message = {NotEmptyRule.MESSAGE, NAME})
@FieldValidation(rule = RuleRegistry.PHP_CLASS,
message = {PhpClassRule.MESSAGE, NAME})
private JTextField blockName;

@FieldValidation(rule = RuleRegistry.NOT_EMPTY,
message = {NotEmptyRule.MESSAGE, DIRECTORY})
@FieldValidation(rule = RuleRegistry.PHP_DIRECTORY,
message = {PhpDirectoryRule.MESSAGE, DIRECTORY})
private JTextField blockParentDir;

/**
* Constructor.
Expand All @@ -54,25 +68,15 @@ public NewBlockDialog(final Project project, final PsiDirectory directory) {
this.project = project;
this.baseDir = directory;
this.moduleName = GetModuleNameByDirectoryUtil.execute(directory, project);
this.validator = NewBlockValidator.getInstance(this);

setContentPane(contentPanel);
setModal(true);
setTitle("Create a new Magento 2 block..");
getRootPane().setDefaultButton(buttonOK);
suggestBlockDirectory();

buttonOK.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent event) {
onOK();
}
});

buttonCancel.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent event) {
onCancel();
}
});
buttonOK.addActionListener((final ActionEvent event) -> onOK());
buttonCancel.addActionListener((final ActionEvent event) -> onCancel());

// call onCancel() when cross is clicked
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
Expand All @@ -83,12 +87,11 @@ public void windowClosing(final WindowEvent event) {
});

// call onCancel() on ESCAPE
contentPanel.registerKeyboardAction(new ActionListener() {
public void actionPerformed(final ActionEvent event) {
onCancel();
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
contentPanel.registerKeyboardAction(
(final ActionEvent event) -> onCancel(),
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
);
}

/**
Expand All @@ -105,7 +108,7 @@ public static void open(final Project project, final PsiDirectory directory) {
}

protected void onOK() {
if (!validator.validate()) {
if (!validateFormFields()) {
return;
}
generateFile();
Expand Down Expand Up @@ -174,6 +177,7 @@ private String getNamespace() {
return parts[0] + Package.fqnSeparator + parts[1] + Package.fqnSeparator + directoryPart;
}

@Override
public void onCancel() {
// add your code here if necessary
dispose();
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpDirectoryRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpNamespaceNameRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.RouteIdRule;
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.StartWithNumberOrCapitalLetterRule;
Expand All @@ -25,6 +26,7 @@ public enum RuleRegistry {
ALPHANUMERIC(AlphanumericRule.class),
ALPHANUMERIC_WITH_UNDERSCORE(AlphanumericWithUnderscoreRule.class),
DIRECTORY(DirectoryRule.class),
PHP_DIRECTORY(PhpDirectoryRule.class),
IDENTIFIER(IdentifierRule.class),
PHP_NAMESPACE_NAME(PhpNamespaceNameRule.class),
START_WITH_NUMBER_OR_CAPITAL_LETTER(StartWithNumberOrCapitalLetterRule.class),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@

package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule;

import com.jetbrains.php.refactoring.PhpNameUtil;
import com.magento.idea.magento2plugin.util.RegExUtil;

public class PhpClassRule implements ValidationRule {
public static final String MESSAGE = "validator.class.isNotValid";
private static final ValidationRule INSTANCE = new PhpClassRule();

@Override
public boolean check(final String value) {
return PhpNameUtil.isValidClassName(value);
return value.matches(RegExUtil.Magento.PHP_CLASS);
}

public static ValidationRule getInstance() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule;

import com.magento.idea.magento2plugin.util.RegExUtil;

public class PhpDirectoryRule implements ValidationRule {
public static final String MESSAGE = "validator.directory.php.isNotValid";
private static final ValidationRule INSTANCE = new PhpDirectoryRule();

@Override
public boolean check(final String value) {
return value.matches(RegExUtil.Magento.PHP_CLASS);
}

public static ValidationRule getInstance() {
return INSTANCE;
}
}
3 changes: 3 additions & 0 deletions src/com/magento/idea/magento2plugin/util/RegExUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ public class RegExUtil {
= "(\\d+)\\.(\\d+)\\.(\\d+)[a-zA-Z0-9_\\-]*";

public static class Magento {
public static final String PHP_CLASS
= "[A-Z][a-zA-Z0-9]+";

public static final String MODULE_NAME
= "[A-Z][a-zA-Z0-9]+_[A-Z][a-zA-Z0-9]+";

Expand Down