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
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.reference.provider;

import com.intellij.ide.highlighter.XmlFileType;
Expand All @@ -13,17 +14,22 @@
import com.intellij.util.ProcessingContext;
import com.magento.idea.magento2plugin.indexes.EventIndex;
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.jetbrains.annotations.NotNull;

public class EventDispatchReferenceProvider extends PsiReferenceProvider {

@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
String value = StringUtil.unquoteString(element.getText());
Collection<PsiElement> targets = EventIndex.getInstance(element.getProject())
public PsiReference[] getReferencesByElement(
@NotNull final PsiElement element,
@NotNull final ProcessingContext context
) {
final String value = StringUtil.unquoteString(element.getText());
final List<PsiReference> psiReferences = new ArrayList<>();
final Collection<PsiElement> targets = EventIndex.getInstance(element.getProject())
.getEventElements(
value,
GlobalSearchScope.getScopeRestrictedByFileTypes(
Expand All @@ -32,9 +38,10 @@ public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNu
)
);

if (targets.size() > 0) {
return new PsiReference[] {new PolyVariantReferenceBase(element, targets)};
if (!targets.isEmpty()) {
psiReferences.add(new PolyVariantReferenceBase(element, targets));
}
return PsiReference.EMPTY_ARRAY;

return psiReferences.toArray(new PsiReference[0]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.reference.provider;

import com.intellij.openapi.util.text.StringUtil;
Expand All @@ -12,20 +13,26 @@
import com.intellij.util.ProcessingContext;
import com.magento.idea.magento2plugin.indexes.LayoutIndex;
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;
import org.jetbrains.annotations.NotNull;

public class LayoutBlockReferenceProvider extends PsiReferenceProvider {

@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
String value = StringUtil.unquoteString(element.getText());
List<XmlTag> targets = LayoutIndex.getBlockDeclarations(value, element.getProject());
if (targets.size() > 0) {
return new PsiReference[] {new PolyVariantReferenceBase(element, targets)};
public PsiReference[] getReferencesByElement(
@NotNull final PsiElement element,
@NotNull final ProcessingContext context
) {
final String value = StringUtil.unquoteString(element.getText());
final List<XmlTag> targets = LayoutIndex.getBlockDeclarations(value, element.getProject());
final List<PsiReference> psiReferences = new ArrayList<>();

if (!targets.isEmpty()) {
psiReferences.add(new PolyVariantReferenceBase(element, targets));
}
return PsiReference.EMPTY_ARRAY;

return psiReferences.toArray(new PsiReference[0]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.reference.provider;

import com.intellij.openapi.util.text.StringUtil;
Expand All @@ -12,23 +13,27 @@
import com.intellij.util.ProcessingContext;
import com.magento.idea.magento2plugin.indexes.LayoutIndex;
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;
import org.jetbrains.annotations.NotNull;

/**
* Created by dkvashnin on 11/18/15.
*/
public class LayoutContainerReferenceProvider extends PsiReferenceProvider {

@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
String value = StringUtil.unquoteString(element.getText());
List<XmlTag> targets = LayoutIndex.getContainerDeclarations(value, element.getProject());
if (targets.size() > 0) {
return new PsiReference[] {new PolyVariantReferenceBase(element, targets)};
public PsiReference[] getReferencesByElement(
@NotNull final PsiElement element,
@NotNull final ProcessingContext context
) {
final String value = StringUtil.unquoteString(element.getText());
final List<XmlTag> targets
= LayoutIndex.getContainerDeclarations(value, element.getProject());
final List<PsiReference> psiReferences = new ArrayList<>();

if (!targets.isEmpty()) {
psiReferences.add(new PolyVariantReferenceBase(element, targets));
}
return PsiReference.EMPTY_ARRAY;

return psiReferences.toArray(new PsiReference[0]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.reference.provider;

import com.intellij.openapi.util.text.StringUtil;
Expand All @@ -12,20 +13,26 @@
import com.intellij.util.ProcessingContext;
import com.magento.idea.magento2plugin.indexes.LayoutIndex;
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;
import org.jetbrains.annotations.NotNull;

public class LayoutUpdateReferenceProvider extends PsiReferenceProvider {

@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
String value = StringUtil.unquoteString(element.getText());
List<XmlFile> targets = LayoutIndex.getLayoutFiles(element.getProject(), value);
if (targets.size() > 0) {
return new PsiReference[] {new PolyVariantReferenceBase(element, targets)};
public PsiReference[] getReferencesByElement(
@NotNull final PsiElement element,
@NotNull final ProcessingContext context
) {
final String value = StringUtil.unquoteString(element.getText());
final List<XmlFile> targets = LayoutIndex.getLayoutFiles(element.getProject(), value);
final List<PsiReference> psiReferences = new ArrayList<>();

if (!targets.isEmpty()) {
psiReferences.add(new PolyVariantReferenceBase(element, targets));
}
return PsiReference.EMPTY_ARRAY;

return psiReferences.toArray(new PsiReference[0]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.reference.provider;

import com.intellij.openapi.util.TextRange;
Expand All @@ -16,46 +17,50 @@
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import com.magento.idea.magento2plugin.util.RegExUtil;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;

public class PhpClassMemberReferenceProvider extends PsiReferenceProvider {

@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
List<PsiReference> psiReferences = new ArrayList<>();
final Collection<PhpClassMember> members = new THashSet<>();
public PsiReference[] getReferencesByElement(
@NotNull final PsiElement element,
@NotNull final ProcessingContext context
) {
final String value = StringUtil.unquoteString(element.getText());
final Matcher matcher
= Pattern.compile(RegExUtil.XmlRegex.CLASS_MEMBER_NAME).matcher(value);

String origValue = element.getText();
String value = StringUtil.unquoteString(element.getText());

Matcher matcher = Pattern.compile(RegExUtil.XmlRegex.CLASS_MEMBER_NAME).matcher(value);
if (!matcher.find()) {
return PsiReference.EMPTY_ARRAY;
}

String elementName = matcher.group(1);
String classFQN = value.substring(0, value.lastIndexOf("::"));
final List<PsiReference> psiReferences = new ArrayList<>();
final Collection<PhpClassMember> members = new THashSet<>();
final String elementName = matcher.group(1);
final String classFQN = value.substring(0, value.lastIndexOf("::"));
final PhpIndex phpIndex = PhpIndex.getInstance(element.getProject());

PhpIndex phpIndex = PhpIndex.getInstance(element.getProject());
for (final PhpClass phpClass : phpIndex.getAnyByFQN(classFQN)) {
members.addAll(phpClass.getFields());
members.addAll(phpClass.getMethods());
members.removeIf(c -> !c.getName().equals(elementName));
}

if (members.size() > 0) {
TextRange range = new TextRange(
if (!members.isEmpty()) {
final String origValue = element.getText();
final TextRange range = new TextRange(
origValue.indexOf(elementName),
origValue.indexOf(elementName) + elementName.length()
);
psiReferences.add(new PolyVariantReferenceBase(element, range, members));
}
return psiReferences.toArray(new PsiReference[psiReferences.size()]);

return psiReferences.toArray(new PsiReference[0]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.reference.provider;

import com.intellij.openapi.util.text.StringUtil;
Expand All @@ -16,36 +17,37 @@
import com.magento.idea.magento2plugin.indexes.DiIndex;
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.jetbrains.annotations.NotNull;

public class PhpConstructorArgumentReferenceProvider extends PsiReferenceProvider {

@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {

String parameterName = StringUtil.unquoteString(element.getText());
if (parameterName.isEmpty() || !(element instanceof XmlElement)) {
return PsiReference.EMPTY_ARRAY;
}


DiIndex diIndex = DiIndex.getInstance(element.getProject());
PhpClass phpClass = diIndex.getPhpClassOfArgument((XmlElement) element);
if (phpClass != null) {
Method constructor = phpClass.getConstructor();
if (constructor != null) {
Collection<Parameter> parameterList = new THashSet<>(Arrays.asList(constructor.getParameters()));
public PsiReference[] getReferencesByElement(
@NotNull final PsiElement element,
@NotNull final ProcessingContext context
) {
final List<PsiReference> psiReferences = new ArrayList<>();
final String parameterName = StringUtil.unquoteString(element.getText());

if (!parameterName.isEmpty()) {
final DiIndex diIndex = DiIndex.getInstance(element.getProject());
final PhpClass phpClass = diIndex.getPhpClassOfArgument((XmlElement) element);
if (phpClass != null && phpClass.getConstructor() != null) {
final Method constructor = phpClass.getConstructor();
final Collection<Parameter> parameterList
= new THashSet<>(Arrays.asList(constructor.getParameters()));
parameterList.removeIf(p -> !p.getName().contains(parameterName));
if (parameterList.size() > 0) {
return new PsiReference[] {new PolyVariantReferenceBase(element, parameterList)};
if (!parameterList.isEmpty()) { // NOPMD
psiReferences.add(new PolyVariantReferenceBase(element, parameterList));
}
}
}

return PsiReference.EMPTY_ARRAY;
return psiReferences.toArray(new PsiReference[0]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
import com.intellij.util.ProcessingContext;
import com.magento.idea.magento2plugin.indexes.UIComponentIndex;
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import java.util.ArrayList;
import java.util.List;
import org.jetbrains.annotations.NotNull;


public class UIComponentReferenceProvider extends PsiReferenceProvider {

@NotNull
Expand All @@ -30,9 +30,12 @@ public PsiReference[] getReferencesByElement(
element.getProject(),
value
);
final List<PsiReference> psiReferences = new ArrayList<>();

if (!targets.isEmpty()) {
return new PsiReference[] {new PolyVariantReferenceBase(element, targets)};
psiReferences.add(new PolyVariantReferenceBase(element, targets));
}
return PsiReference.EMPTY_ARRAY;

return psiReferences.toArray(new PsiReference[0]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.reference.provider;

import com.intellij.openapi.util.text.StringUtil;
Expand All @@ -11,27 +12,29 @@
import com.intellij.util.ProcessingContext;
import com.magento.idea.magento2plugin.indexes.DiIndex;
import com.magento.idea.magento2plugin.reference.xml.PolyVariantReferenceBase;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.jetbrains.annotations.NotNull;

public class VirtualTypeReferenceProvider extends PsiReferenceProvider {

@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {

String value = StringUtil.unquoteString(element.getText());

DiIndex index = DiIndex.getInstance(element.getProject());
Collection<PsiElement> targets = index.getVirtualTypeElements(value, element.getResolveScope());

if (!(targets.size() > 0)) {
return PsiReference.EMPTY_ARRAY;
public PsiReference[] getReferencesByElement(
@NotNull final PsiElement element,
@NotNull final ProcessingContext context
) {
final String value = StringUtil.unquoteString(element.getText());
final DiIndex index = DiIndex.getInstance(element.getProject());
final Collection<PsiElement> targets
= index.getVirtualTypeElements(value, element.getResolveScope());
final List<PsiReference> psiReferences = new ArrayList<>();

if (!targets.isEmpty()) {
psiReferences.add(new PolyVariantReferenceBase(element, targets));
}

return new PsiReference[] {
new PolyVariantReferenceBase(element, targets)
};
return psiReferences.toArray(new PsiReference[0]);
}
}