javafx: Move duplicate code to a utility method (IDEA-150446)

This commit is contained in:
Pavel Dolgov
2016-02-25 20:29:59 +03:00
parent 1b6ae90291
commit c1324d4adc
3 changed files with 7 additions and 10 deletions
@@ -679,6 +679,11 @@ public class JavaFxPsiUtil {
return null;
}
public static boolean hasConversionFromAnyType(@NotNull PsiClass targetClass) {
return Comparing.strEqual(targetClass.getQualifiedName(), CommonClassNames.JAVA_LANG_STRING)
|| findValueOfMethod(targetClass) != null;
}
private static class JavaFxControllerCachedValueProvider implements CachedValueProvider<PsiClass> {
private final Project myProject;
private final PsiFile myContainingFile;
@@ -1,6 +1,5 @@
package org.jetbrains.plugins.javaFX.fxml.descriptors;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
@@ -158,11 +157,7 @@ public class JavaFxPropertyAttributeDescriptor extends BasicXmlAttributeDescript
final XmlTag currentTag = PsiTreeUtil.getParentOfType(xmlAttributeValue, XmlTag.class);
final Map<String, XmlAttributeValue> fileIds = JavaFxPsiUtil.collectFileIds(currentTag);
final PsiClass targetPropertyClass = JavaFxPsiUtil.getPropertyClass(xmlAttributeValue);
if (targetPropertyClass == null ||
Comparing.strEqual(targetPropertyClass.getQualifiedName(), CommonClassNames.JAVA_LANG_STRING) ||
JavaFxPsiUtil.findValueOfMethod(targetPropertyClass) != null) {
return null;
}
if (targetPropertyClass == null || JavaFxPsiUtil.hasConversionFromAnyType(targetPropertyClass)) return null;
final PsiClass valueClass;
if (JavaFxPsiUtil.isExpressionBinding(value)) {
final String expressionText = referencesId.substring(1, referencesId.length() - 1);
@@ -18,7 +18,6 @@ package org.jetbrains.plugins.javaFX.fxml.refs;
import com.intellij.codeInsight.completion.PrioritizedLookupElement;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
@@ -80,9 +79,7 @@ class JavaFxComponentIdReferenceProvider extends PsiReferenceProvider {
final PsiClass controllerClass = JavaFxPsiUtil.getControllerClass(element.getContainingFile());
final PsiClass targetPropertyClass = JavaFxPsiUtil.getPropertyClass(xmlAttributeValue);
final boolean isConvertible = targetPropertyClass != null &&
(Comparing.strEqual(targetPropertyClass.getQualifiedName(), CommonClassNames.JAVA_LANG_STRING)
|| JavaFxPsiUtil.findValueOfMethod(targetPropertyClass) != null);
final boolean isConvertible = targetPropertyClass != null && JavaFxPsiUtil.hasConversionFromAnyType(targetPropertyClass);
final Map<String, TypeMatch> typeMatches = fileIds.entrySet().stream().collect(
Collectors.toMap(Map.Entry::getKey, e -> {