Skip to content

Commit 0e2bdd1

Browse files
author
Vitaliy Boyko
committed
Merge branches '1.0.0-develop' and 'adjusted-magento-version-resolving' of https://github.com/magento/magento2-phpstorm-plugin into adjusted-magento-version-resolving
� Conflicts: � src/com/magento/idea/magento2plugin/reference/xml/XmlReferenceContributor.java � src/com/magento/idea/magento2plugin/util/Regex.java
2 parents a284fcf + aea6433 commit 0e2bdd1

File tree

34 files changed

+545
-11
lines changed

34 files changed

+545
-11
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ public void update(AnActionEvent event) {
4444
Pair<PsiFile, PhpClass> pair = this.findPhpClass(event);
4545
PsiFile psiFile = pair.getFirst();
4646
PhpClass phpClass = pair.getSecond();
47+
if (phpClass == null || psiFile == null) {
48+
return;
49+
}
4750
targetClass = phpClass;
4851
if (!(psiFile instanceof PhpFile) || phpClass.isFinal() || this.targetMethod == null) {
4952
this.setStatus(event, false);

src/com/magento/idea/magento2plugin/completion/provider/mftf/ActionGroupCompletionProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
15
package com.magento.idea.magento2plugin.completion.provider.mftf;
26

37
import com.intellij.codeInsight.completion.CompletionParameters;

src/com/magento/idea/magento2plugin/completion/provider/mftf/DataCompletionProvider.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
15
package com.magento.idea.magento2plugin.completion.provider.mftf;
26

37
import com.intellij.codeInsight.completion.CompletionParameters;
@@ -9,7 +13,6 @@
913
import com.intellij.util.indexing.FileBasedIndex;
1014
import com.magento.idea.magento2plugin.stubs.indexes.mftf.DataIndex;
1115
import org.jetbrains.annotations.NotNull;
12-
1316
import java.util.Collection;
1417

1518
public class DataCompletionProvider extends CompletionProvider<CompletionParameters> {
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.completion.provider.mftf;
6+
7+
import com.intellij.codeInsight.completion.CompletionParameters;
8+
import com.intellij.codeInsight.completion.CompletionProvider;
9+
import com.intellij.codeInsight.completion.CompletionResultSet;
10+
import com.intellij.codeInsight.lookup.LookupElementBuilder;
11+
import com.intellij.psi.PsiElement;
12+
import com.intellij.util.ProcessingContext;
13+
import com.intellij.util.indexing.FileBasedIndex;
14+
import com.magento.idea.magento2plugin.magento.files.MftfPage;
15+
import com.magento.idea.magento2plugin.stubs.indexes.mftf.PageIndex;
16+
import org.jetbrains.annotations.NotNull;
17+
import java.util.Collection;
18+
19+
public class PageCompletionProvider extends CompletionProvider<CompletionParameters> {
20+
21+
@Override
22+
protected void addCompletions(
23+
@NotNull CompletionParameters parameters,
24+
ProcessingContext context,
25+
@NotNull CompletionResultSet result) {
26+
PsiElement position = parameters.getPosition().getOriginalElement();
27+
28+
if (position == null) {
29+
return;
30+
}
31+
32+
Collection<String> allKeys
33+
= FileBasedIndex.getInstance().getAllKeys(PageIndex.KEY, position.getProject());
34+
35+
for (String pageName: allKeys) {
36+
result.addElement(LookupElementBuilder.create(
37+
pageName
38+
+ MftfPage.REFERENCE_SEPARATOR
39+
+ MftfPage.URL_ATTRIBUTE
40+
));
41+
}
42+
}
43+
}

src/com/magento/idea/magento2plugin/completion/provider/mftf/SelectorCompletionProvider.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
15
package com.magento.idea.magento2plugin.completion.provider.mftf;
26

37
import com.intellij.codeInsight.completion.CompletionParameters;
@@ -9,7 +13,6 @@
913
import com.intellij.util.indexing.FileBasedIndex;
1014
import com.magento.idea.magento2plugin.stubs.indexes.mftf.SectionIndex;
1115
import org.jetbrains.annotations.NotNull;
12-
1316
import java.util.Collection;
1417

1518
public class SelectorCompletionProvider extends CompletionProvider<CompletionParameters> {

src/com/magento/idea/magento2plugin/completion/xml/XmlCompletionContributor.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,37 @@ public XmlCompletionContributor() {
227227
new ActionGroupCompletionProvider()
228228
);
229229

230+
// mftf page url completion contributor
231+
extend(
232+
CompletionType.BASIC,
233+
psiElement(XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN)
234+
.inside(
235+
XmlPatterns.xmlAttribute().withName(MftfActionGroup.URL_ATTRIBUTE)
236+
.withParent(XmlPatterns.xmlTag().withParent(
237+
XmlPatterns.xmlTag().withName(
238+
string().oneOf(MftfActionGroup.ROOT_TAG, MftfTest.ROOT_TAG)
239+
)))
240+
),
241+
new PageCompletionProvider()
242+
);
243+
extend(
244+
CompletionType.BASIC,
245+
psiElement(XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN)
246+
.inside(
247+
XmlPatterns.xmlAttribute().withName(MftfActionGroup.URL_ATTRIBUTE)
248+
.withParent(XmlPatterns.xmlTag().withParent(
249+
XmlPatterns.xmlTag().withParent(XmlPatterns.xmlTag().withName(
250+
string().oneOf(MftfActionGroup.ROOT_TAG, MftfTest.ROOT_TAG)
251+
))))
252+
),
253+
new PageCompletionProvider()
254+
);
255+
230256
// mftf data entity completion contributor
231257
extend(
232258
CompletionType.BASIC,
233259
psiElement(XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN)
234-
.inside(XmlPatterns.xmlAttribute().withName(string().oneOf("entity", "value", "userInput", "url"))
260+
.inside(XmlPatterns.xmlAttribute().withName(string().oneOf("entity", "value", "userInput"))
235261
),
236262
new DataCompletionProvider()
237263
);

src/com/magento/idea/magento2plugin/magento/files/MftfActionGroup.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ public class MftfActionGroup {
1111
public static String CREATE_DATA_TAG = "createData";
1212
public static String UPDATE_DATA_TAG = "updateData";
1313
public static String USER_INPUT_TAG = "userInput";
14+
public static String ROOT_TAG = "actionGroup";
15+
public static String URL_ATTRIBUTE = "url";
1416
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.magento.files;
6+
7+
public class MftfPage {
8+
9+
public static String ROOT_TAG = "pages";
10+
public static String PAGE_TAG = "page";
11+
public static String NAME_ATTRIBUTE = "name";
12+
public static String REFERENCE_SEPARATOR = ".";
13+
public static String URL_ATTRIBUTE = "url";
14+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
package com.magento.idea.magento2plugin.magento.files;
6+
7+
public class MftfTest {
8+
9+
public static String ROOT_TAG = "test";
10+
}

src/com/magento/idea/magento2plugin/reference/xml/XmlReferenceContributor.java

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@
99
import com.intellij.psi.PsiReferenceRegistrar;
1010
import com.intellij.psi.xml.XmlTokenType;
1111
import com.magento.idea.magento2plugin.magento.files.MftfActionGroup;
12+
import com.magento.idea.magento2plugin.magento.files.MftfTest;
13+
import com.magento.idea.magento2plugin.php.util.PhpRegex;
1214
import com.magento.idea.magento2plugin.reference.provider.*;
1315
import com.magento.idea.magento2plugin.reference.provider.mftf.*;
1416
import com.magento.idea.magento2plugin.util.RegExUtil;
17+
import com.magento.idea.magento2plugin.util.Regex;
1518
import org.jetbrains.annotations.NotNull;
1619
import static com.intellij.patterns.XmlPatterns.*;
1720

@@ -160,15 +163,43 @@ public void registerReferenceProviders(@NotNull PsiReferenceRegistrar registrar)
160163
// <someXmlTag userInput="{{someValue}}" />
161164
registrar.registerReferenceProvider(
162165
XmlPatterns.xmlAttributeValue().withValue(
163-
string().matches(".*\\{\\{[^\\}]+\\}\\}.*")
166+
string().matches(Regex.MFTF_CURLY_BRACES)
164167
).withParent(XmlPatterns.xmlAttribute().withName(
165-
MftfActionGroup.USER_INPUT_TAG
168+
MftfActionGroup.USER_INPUT_TAG
166169
)),
167170
new CompositeReferenceProvider(
168171
new DataReferenceProvider()
169172
)
170173
);
171174

175+
// <someXmlTag url="{{someValue}}" /> in MFTF Tests and ActionGroups
176+
registrar.registerReferenceProvider(
177+
XmlPatterns.xmlAttributeValue().withValue(
178+
string().matches(Regex.MFTF_CURLY_BRACES)
179+
).withParent(XmlPatterns.xmlAttribute().withName(
180+
MftfActionGroup.URL_ATTRIBUTE
181+
).withParent(XmlPatterns.xmlTag().withParent(XmlPatterns.xmlTag().withName(
182+
string().oneOf(MftfActionGroup.ROOT_TAG, MftfTest.ROOT_TAG)
183+
)))),
184+
new CompositeReferenceProvider(
185+
new PageReferenceProvider()
186+
)
187+
);
188+
registrar.registerReferenceProvider(
189+
XmlPatterns.xmlAttributeValue().withValue(
190+
string().matches(Regex.MFTF_CURLY_BRACES)
191+
).withParent(XmlPatterns.xmlAttribute().withName(
192+
MftfActionGroup.URL_ATTRIBUTE
193+
).withParent(XmlPatterns.xmlTag().withParent(XmlPatterns.xmlTag().withParent(
194+
XmlPatterns.xmlTag().withName(
195+
string().oneOf(MftfActionGroup.ROOT_TAG, MftfTest.ROOT_TAG)
196+
)
197+
)))),
198+
new CompositeReferenceProvider(
199+
new PageReferenceProvider()
200+
)
201+
);
202+
172203
// <createData entity="SimpleProduct" />
173204
// <updateData entity="SimpleProduct" />
174205
registrar.registerReferenceProvider(

0 commit comments

Comments
 (0)