summaryrefslogtreecommitdiff
path: root/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java')
-rw-r--r--plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java66
1 files changed, 34 insertions, 32 deletions
diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java
index 0f3a1846b4e2..742f84fd3efc 100644
--- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java
+++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxControllerFieldSearcher.java
@@ -16,6 +16,7 @@
package org.jetbrains.plugins.javaFX.fxml.refs;
import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
@@ -23,6 +24,7 @@ import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
+import com.intellij.psi.util.PsiUtilCore;
import com.intellij.psi.xml.XmlAttribute;
import com.intellij.psi.xml.XmlAttributeValue;
import com.intellij.util.Processor;
@@ -43,7 +45,12 @@ public class JavaFxControllerFieldSearcher implements QueryExecutor<PsiReference
final PsiElement elementToSearch = queryParameters.getElementToSearch();
if (elementToSearch instanceof PsiField) {
final PsiField field = (PsiField)elementToSearch;
- final PsiClass containingClass = field.getContainingClass();
+ final PsiClass containingClass = ApplicationManager.getApplication().runReadAction(new Computable<PsiClass>() {
+ @Override
+ public PsiClass compute() {
+ return field.getContainingClass();
+ }
+ });
if (containingClass != null) {
final String qualifiedName = ApplicationManager.getApplication().runReadAction(new Computable<String>() {
@Override
@@ -52,45 +59,40 @@ public class JavaFxControllerFieldSearcher implements QueryExecutor<PsiReference
}
});
if (qualifiedName != null) {
- final List<PsiFile> fxmlWithController =
- JavaFxControllerClassIndex.findFxmlWithController(containingClass.getProject(), qualifiedName);
- final String fieldName = field.getName();
+ Project project = PsiUtilCore.getProjectInReadAction(containingClass);
+ final List<PsiFile> fxmlWithController =
+ JavaFxControllerClassIndex.findFxmlWithController(project, qualifiedName);
for (final PsiFile file : fxmlWithController) {
- final VirtualFile virtualFile = file.getViewProvider().getVirtualFile();
- final SearchScope searchScope = ApplicationManager.getApplication().runReadAction(new Computable<SearchScope>() {
+ ApplicationManager.getApplication().runReadAction(new Runnable() {
@Override
- public SearchScope compute() {
- return queryParameters.getEffectiveSearchScope();
- }
- });
- if (searchScope instanceof LocalSearchScope) {
- if (!((LocalSearchScope)searchScope).isInScope(virtualFile)) continue;
- } else if (searchScope instanceof GlobalSearchScope) {
- if (!((GlobalSearchScope)searchScope).contains(virtualFile)) continue;
- }
- final Runnable runnable = new Runnable() {
public void run() {
- file.accept(new XmlRecursiveElementVisitor() {
- @Override
- public void visitXmlAttributeValue(final XmlAttributeValue value) {
- final PsiReference reference = value.getReference();
- if (reference != null) {
- final PsiElement resolve = reference.resolve();
- if (resolve instanceof XmlAttributeValue) {
- final PsiElement parent = resolve.getParent();
- if (parent instanceof XmlAttribute) {
- final XmlAttribute attribute = (XmlAttribute)parent;
- if (FxmlConstants.FX_ID.equals(attribute.getName()) && fieldName.equals(attribute.getValue())) {
- consumer.process(reference);
+ final String fieldName = field.getName();
+ final VirtualFile virtualFile = file.getViewProvider().getVirtualFile();
+ final SearchScope searchScope = queryParameters.getEffectiveSearchScope();
+ boolean contains = searchScope instanceof LocalSearchScope ? ((LocalSearchScope)searchScope).isInScope(virtualFile) :
+ ((GlobalSearchScope)searchScope).contains(virtualFile);
+ if (contains) {
+ file.accept(new XmlRecursiveElementVisitor() {
+ @Override
+ public void visitXmlAttributeValue(final XmlAttributeValue value) {
+ final PsiReference reference = value.getReference();
+ if (reference != null) {
+ final PsiElement resolve = reference.resolve();
+ if (resolve instanceof XmlAttributeValue) {
+ final PsiElement parent = resolve.getParent();
+ if (parent instanceof XmlAttribute) {
+ final XmlAttribute attribute = (XmlAttribute)parent;
+ if (FxmlConstants.FX_ID.equals(attribute.getName()) && fieldName.equals(attribute.getValue())) {
+ consumer.process(reference);
+ }
}
}
}
}
- }
- });
+ });
+ }
}
- };
- ApplicationManager.getApplication().runReadAction(runnable);
+ });
}
}
}