Skip to content

Commit f338e39

Browse files
authored
Merge pull request #1262 from vitaliyboykocontributor/5.0.0-pre-release
5.0.0 pre release
2 parents 1a39e01 + 817dea7 commit f338e39

19 files changed

+234
-74
lines changed

CHANGELOG.md

+19
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,25 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0).
66

77
## 5.0.0
88

9+
### Added
10+
11+
- Code generation of a Data Patch Boilerplate file [#1188](https://github.com/magento/magento2-phpstorm-plugin/pull/1188)
12+
- Code generation of an Observer from the context menu [#1200](https://github.com/magento/magento2-phpstorm-plugin/pull/1200)
13+
- Code generation of events.xml file [#1189](https://github.com/magento/magento2-phpstorm-plugin/pull/1189)
14+
- Config Scope directory inspection [#1261](https://github.com/magento/magento2-phpstorm-plugin/pull/1261)
15+
16+
### Changed
17+
18+
- EAV attributes code generators: Added default values of the group property [#1259](https://github.com/magento/magento2-phpstorm-plugin/pull/1259)
19+
- All code generators: Added constants visibility and class property types [#1260](https://github.com/magento/magento2-phpstorm-plugin/pull/1260)
20+
- UCT custom coming versions [#1251](https://github.com/magento/magento2-phpstorm-plugin/pull/1251)
21+
22+
### Fixed
23+
24+
- Fixed wrong director(y|ies) generation for GraphQL resolver class [#1192](https://github.com/magento/magento2-phpstorm-plugin/pull/1192)
25+
- Fixed IndexOutOfBoundsException: CreateResolverClassQuickFix.applyFix(CreateResolverClassQuickFix.java:43) [#1192](https://github.com/magento/magento2-phpstorm-plugin/pull/1192)
26+
- Index out of range [#1239](https://github.com/magento/magento2-phpstorm-plugin/pull/1239)
27+
928
## 4.4.0
1029

1130
### Added

resources/icons/graphql.svg

+11
Loading

resources/magento2/inspection.properties

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ inspection.plugin.duplicateInSameFile=The plugin name already used in this file.
1515
inspection.plugin.duplicateInOtherPlaces=The plugin name "{0}" for targeted "{1}" class is already used in the module "{2}" ({3} scope). For more details see Inspection Description.
1616
inspection.plugin.disabledPluginDoesNotExist=This plugin does not exist to be disabled.
1717
inspection.graphql.resolver.mustImplement=Class must implements any of the following interfaces: \\Magento\\Framework\\GraphQl\\Query\\ResolverInterface, \\Magento\\Framework\\GraphQl\\Query\\Resolver\\BatchResolverInterface, \\Magento\\Framework\\GraphQl\\Query\\Resolver\\BatchServiceContractResolverInterface
18-
inspection.graphql.resolver.notExist=Resolver class do not exist
18+
inspection.graphql.resolver.notExist=The GraphQL resolver class do not exist
1919
inspection.graphql.resolver.fix.family=Implement Resolver interface
2020
inspection.graphql.resolver.fix.title=Select one of the following interface
2121
inspection.graphql.schema.resolver.fix.family=Create GraphQL Resolver
@@ -41,3 +41,6 @@ inspection.warning.method.should.have.public.access=The method "{0}" should have
4141
inspection.warning.method.should.have.public.access.fix=Change the method access
4242
inspection.displayName.ModuleScopeInspection=Module Configuration Scope Inspection
4343
inspection.config.wrong.area = The area of this config file is wrong. Please check the spelling of the parent directory, it should be equal to one of the following: adminhtml, frontend, crontab, webapi_rest, webapi_soap, graphql.
44+
inspection.warning.class.invalidFormat=The class "{0}" has invalid format
45+
inspection.error.graphqlResolverClass.tooShortFormat=The target GraphQL resolver class format is incorrect.\nThe fully qualified name "{0}" should contain at least 3 parts.
46+
inspection.error.graphqlResolverClass.tooShortFormatTitle=The GraphQL resolver class format is incorrect

src/com/magento/idea/magento2plugin/MagentoIcons.java

+1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ public class MagentoIcons {
1717
IconLoader.getIcon("/icons/pluginIcon16x16.svg", MagentoIcons.class);
1818
public static final Icon PLUGIN_ICON_MEDIUM =
1919
IconLoader.getIcon("/icons/pluginIcon64x64.svg", MagentoIcons.class);
20+
public static final Icon GRAPHQL = IconLoader.getIcon("/icons/graphql.svg", MagentoIcons.class);
2021
}

src/com/magento/idea/magento2plugin/actions/context/AbstractContextAction.java

+19
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.magento.idea.magento2plugin.magento.packages.Package;
2525
import com.magento.idea.magento2plugin.project.Settings;
2626
import com.magento.idea.magento2plugin.util.magento.GetMagentoModuleUtil;
27+
import javax.swing.Icon;
2728
import org.jetbrains.annotations.NotNull;
2829
import org.jetbrains.annotations.Nullable;
2930

@@ -51,6 +52,24 @@ public AbstractContextAction(
5152
this.moduleFile = moduleFile;
5253
}
5354

55+
/**
56+
* Abstract context action constructor.
57+
*
58+
* @param title String
59+
* @param description String
60+
* @param moduleFile ModuleFileInterface
61+
* @param icon Icon
62+
*/
63+
public AbstractContextAction(
64+
final @NotNull String title,
65+
final @NotNull String description,
66+
final @NotNull ModuleFileInterface moduleFile,
67+
final @Nullable Icon icon
68+
) {
69+
super(title, description, icon);
70+
this.moduleFile = moduleFile;
71+
}
72+
5473
@Override
5574
@SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"})
5675
public void update(final @NotNull AnActionEvent event) {

src/com/magento/idea/magento2plugin/actions/context/xml/NewGraphQLSchemaAction.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.intellij.ide.fileTemplates.actions.AttributesDefaults;
99
import com.intellij.psi.PsiDirectory;
1010
import com.intellij.psi.PsiFile;
11+
import com.magento.idea.magento2plugin.MagentoIcons;
1112
import com.magento.idea.magento2plugin.actions.context.AbstractContextAction;
1213
import com.magento.idea.magento2plugin.magento.files.SchemaGraphQLsFile;
1314
import com.magento.idea.magento2plugin.magento.packages.ComponentType;
@@ -25,7 +26,12 @@ public class NewGraphQLSchemaAction extends AbstractContextAction {
2526
* New schema.graphqls file action constructor.
2627
*/
2728
public NewGraphQLSchemaAction() {
28-
super(ACTION_NAME, ACTION_DESCRIPTION, SchemaGraphQLsFile.getInstance());
29+
super(
30+
ACTION_NAME,
31+
ACTION_DESCRIPTION,
32+
SchemaGraphQLsFile.getInstance(),
33+
MagentoIcons.GRAPHQL
34+
);
2935
}
3036

3137
@Override

src/com/magento/idea/magento2plugin/actions/generation/NewGraphQlResolverAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class NewGraphQlResolverAction extends AnAction {
2323
public static final String ACTION_DESCRIPTION = "Create a new Magento 2 GraphQL Resolver";
2424

2525
public NewGraphQlResolverAction() {
26-
super(ACTION_NAME, ACTION_DESCRIPTION, MagentoIcons.MODULE);
26+
super(ACTION_NAME, ACTION_DESCRIPTION, MagentoIcons.GRAPHQL);
2727
}
2828

2929
@Override

src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleGraphQlResolverClassGenerator.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.magento.idea.magento2plugin.bundles.ValidatorBundle;
2626
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
2727
import com.magento.idea.magento2plugin.magento.files.GraphQlResolverPhp;
28-
import com.magento.idea.magento2plugin.magento.packages.File;
2928
import com.magento.idea.magento2plugin.magento.packages.MagentoPhpClass;
3029
import com.magento.idea.magento2plugin.util.GetFirstClassOfFile;
3130
import com.magento.idea.magento2plugin.util.GetPhpClassByFQN;
@@ -34,6 +33,7 @@
3433
import org.jetbrains.annotations.NotNull;
3534

3635
public class ModuleGraphQlResolverClassGenerator extends FileGenerator {
36+
3737
private final GraphQlResolverFileData graphQlResolverFileData;
3838
private final Project project;
3939
private final ValidatorBundle validatorBundle;
@@ -132,15 +132,15 @@ private PhpClass createGraphQlResolverClass(final String actionName) {
132132
if (parentDirectory == null) {
133133
return null;
134134
}
135-
final String[] graphQlResolverDirectories = graphQlResolverFileData
136-
.getGraphQlResolverDirectory().split(File.separator);
137-
for (final String graphQlResolverDirectory: graphQlResolverDirectories) {
138-
parentDirectory = directoryGenerator.findOrCreateSubdirectory(
135+
final String graphQlResolverDirectory = graphQlResolverFileData
136+
.getGraphQlResolverDirectory();
137+
138+
if (!graphQlResolverDirectory.isBlank()) {
139+
parentDirectory = directoryGenerator.findOrCreateSubdirectories(
139140
parentDirectory,
140141
graphQlResolverDirectory
141142
);
142143
}
143-
144144
final Properties attributes = getAttributes();
145145
final PsiFile graphQlResolverFile = fileFromTemplateGenerator.generate(
146146
GraphQlResolverPhp.getInstance(

src/com/magento/idea/magento2plugin/completion/provider/LayoutBlockCompletionContributor.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,37 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.completion.provider;
67

78
import com.intellij.codeInsight.completion.CompletionParameters;
89
import com.intellij.codeInsight.completion.CompletionProvider;
910
import com.intellij.codeInsight.completion.CompletionResultSet;
1011
import com.intellij.codeInsight.lookup.LookupElementBuilder;
12+
import com.intellij.icons.AllIcons;
1113
import com.intellij.psi.PsiElement;
1214
import com.intellij.util.ProcessingContext;
13-
import com.jetbrains.php.PhpIcons;
1415
import com.magento.idea.magento2plugin.indexes.LayoutIndex;
1516
import com.magento.idea.magento2plugin.stubs.indexes.BlockNameIndex;
16-
import org.jetbrains.annotations.NotNull;
17-
1817
import java.util.Collection;
18+
import org.jetbrains.annotations.NotNull;
1919

2020
public class LayoutBlockCompletionContributor extends CompletionProvider<CompletionParameters> {
2121

2222
@Override
23-
protected void addCompletions(@NotNull CompletionParameters parameters,
24-
ProcessingContext context,
25-
@NotNull CompletionResultSet result) {
26-
PsiElement position = parameters.getPosition().getOriginalElement();
23+
protected void addCompletions(final @NotNull CompletionParameters parameters,
24+
final ProcessingContext context,
25+
final @NotNull CompletionResultSet result) {
26+
final PsiElement position = parameters.getPosition().getOriginalElement();
2727
if (position == null) {
2828
return;
2929
}
3030

31-
Collection<String> keys = LayoutIndex.getAllKeys(BlockNameIndex.KEY, position.getProject());
32-
for (String key: keys) {
31+
final Collection<String> keys
32+
= LayoutIndex.getAllKeys(BlockNameIndex.KEY, position.getProject());
33+
for (final String key: keys) {
3334
result.addElement(
34-
LookupElementBuilder.create(key).withIcon(PhpIcons.XML_TAG_ICON)
35+
LookupElementBuilder.create(key).withIcon(AllIcons.Nodes.Tag)
3536
);
3637
}
3738
}

src/com/magento/idea/magento2plugin/completion/provider/LayoutContainerCompletionContributor.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,37 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.completion.provider;
67

78
import com.intellij.codeInsight.completion.CompletionParameters;
89
import com.intellij.codeInsight.completion.CompletionProvider;
910
import com.intellij.codeInsight.completion.CompletionResultSet;
1011
import com.intellij.codeInsight.lookup.LookupElementBuilder;
12+
import com.intellij.icons.AllIcons;
1113
import com.intellij.psi.PsiElement;
1214
import com.intellij.util.ProcessingContext;
13-
import com.jetbrains.php.PhpIcons;
1415
import com.magento.idea.magento2plugin.indexes.LayoutIndex;
1516
import com.magento.idea.magento2plugin.stubs.indexes.ContainerNameIndex;
16-
import org.jetbrains.annotations.NotNull;
17-
1817
import java.util.Collection;
18+
import org.jetbrains.annotations.NotNull;
1919

2020
public class LayoutContainerCompletionContributor extends CompletionProvider<CompletionParameters> {
2121

2222
@Override
23-
protected void addCompletions(@NotNull CompletionParameters parameters,
24-
ProcessingContext context,
25-
@NotNull CompletionResultSet result) {
26-
PsiElement position = parameters.getPosition().getOriginalElement();
23+
protected void addCompletions(final @NotNull CompletionParameters parameters,
24+
final ProcessingContext context,
25+
final @NotNull CompletionResultSet result) {
26+
final PsiElement position = parameters.getPosition().getOriginalElement();
2727
if (position == null) {
2828
return;
2929
}
3030

31-
Collection<String> keys = LayoutIndex.getAllKeys(ContainerNameIndex.KEY, position.getProject());
32-
for (String key: keys) {
31+
final Collection<String> keys
32+
= LayoutIndex.getAllKeys(ContainerNameIndex.KEY, position.getProject());
33+
for (final String key: keys) {
3334
result.addElement(
34-
LookupElementBuilder.create(key).withIcon(PhpIcons.XML_TAG_ICON)
35+
LookupElementBuilder.create(key).withIcon(AllIcons.Nodes.Tag)
3536
);
3637
}
3738
}

src/com/magento/idea/magento2plugin/completion/provider/LayoutUpdateCompletionContributor.java

+12-11
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,40 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.completion.provider;
67

78
import com.intellij.codeInsight.completion.CompletionParameters;
89
import com.intellij.codeInsight.completion.CompletionProvider;
910
import com.intellij.codeInsight.completion.CompletionResultSet;
1011
import com.intellij.codeInsight.lookup.LookupElementBuilder;
12+
import com.intellij.icons.AllIcons;
1113
import com.intellij.psi.PsiElement;
1214
import com.intellij.psi.xml.XmlFile;
1315
import com.intellij.util.ProcessingContext;
14-
import com.jetbrains.php.PhpIcons;
1516
import com.magento.idea.magento2plugin.indexes.LayoutIndex;
17+
import java.util.List;
1618
import org.jetbrains.annotations.NotNull;
1719

18-
import java.util.List;
1920

2021
public class LayoutUpdateCompletionContributor extends CompletionProvider<CompletionParameters> {
2122

2223
@Override
23-
protected void addCompletions(@NotNull CompletionParameters parameters,
24-
ProcessingContext context,
25-
@NotNull CompletionResultSet result) {
26-
PsiElement position = parameters.getPosition().getOriginalElement();
24+
protected void addCompletions(final @NotNull CompletionParameters parameters,
25+
final ProcessingContext context,
26+
final @NotNull CompletionResultSet result) {
27+
final PsiElement position = parameters.getPosition().getOriginalElement();
2728
if (position == null) {
2829
return;
2930
}
3031

31-
List<XmlFile> targets = LayoutIndex.getLayoutFiles(position.getProject());
32-
if (targets.size() > 0) {
33-
for (XmlFile file : targets) {
32+
final List<XmlFile> targets = LayoutIndex.getLayoutFiles(position.getProject());
33+
if (!targets.isEmpty()) {
34+
for (final XmlFile file : targets) {
3435
result.addElement(
35-
LookupElementBuilder
36+
LookupElementBuilder
3637
.create(file.getVirtualFile().getNameWithoutExtension())
37-
.withIcon(PhpIcons.XML_TAG_ICON)
38+
.withIcon(AllIcons.Nodes.Tag)
3839
);
3940
}
4041
}

src/com/magento/idea/magento2plugin/completion/provider/UiComponentCompletionProvider.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import com.intellij.codeInsight.completion.CompletionProvider;
1010
import com.intellij.codeInsight.completion.CompletionResultSet;
1111
import com.intellij.codeInsight.lookup.LookupElementBuilder;
12+
import com.intellij.icons.AllIcons;
1213
import com.intellij.psi.PsiElement;
1314
import com.intellij.psi.xml.XmlFile;
1415
import com.intellij.util.ProcessingContext;
15-
import com.jetbrains.php.PhpIcons;
1616
import com.magento.idea.magento2plugin.indexes.UIComponentIndex;
1717
import java.util.List;
1818
import org.jetbrains.annotations.NotNull;
@@ -34,7 +34,7 @@ protected void addCompletions(@NotNull final CompletionParameters parameters,
3434
for (final XmlFile file : targets) {
3535
result.addElement(LookupElementBuilder
3636
.create(file.getVirtualFile().getNameWithoutExtension())
37-
.withIcon(PhpIcons.XML_TAG_ICON)
37+
.withIcon(AllIcons.Nodes.Tag)
3838
);
3939
}
4040
}

0 commit comments

Comments
 (0)