From f82db143ed58e67aceed64c735258b164cf8ba81 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 30 Jan 2013 17:29:29 +0400 Subject: [PATCH] javafx: default tags inside list (IDEA-100089) --- .../JavaFxClassBackedElementDescriptor.java | 2 +- .../JavaFxPropertyElementDescriptor.java | 16 ++++++++++++---- .../testData/highlighting/defaultTagInList.fxml | 14 ++++++++++++++ .../javaFX/fxml/JavaFXHighlightingTest.java | 4 ++++ 4 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 plugins/javaFX/testData/highlighting/defaultTagInList.fxml diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassBackedElementDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassBackedElementDescriptor.java index 70b183d4019c..af8df6b37c8a 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassBackedElementDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassBackedElementDescriptor.java @@ -85,7 +85,7 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor, final PsiMethod getter = findPropertyGetter(propertyName, myPsiClass); if (getter != null) { final PsiType returnType = getter.getReturnType(); - children.addAll(JavaFxPropertyElementDescriptor.collectDescriptorsByCollection(returnType, myPsiClass.getResolveScope())); + JavaFxPropertyElementDescriptor.collectDescriptorsByCollection(returnType, myPsiClass.getResolveScope(), children); } } } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java index 078237428b55..cd2433a54798 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java @@ -19,6 +19,7 @@ import com.intellij.xml.XmlElementsGroup; import com.intellij.xml.XmlNSDescriptor; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.javaFX.fxml.FxmlConstants; import java.util.ArrayList; import java.util.List; @@ -53,14 +54,19 @@ public class JavaFxPropertyElementDescriptor implements XmlElementDescriptor { final PsiElement declaration = getDeclaration(); if (declaration instanceof PsiField) { final PsiType psiType = ((PsiField)declaration).getType(); - final List descriptors = collectDescriptorsByCollection(psiType, declaration.getResolveScope()); + final ArrayList descriptors = new ArrayList(); + collectDescriptorsByCollection(psiType, declaration.getResolveScope(), descriptors); + for (String name : FxmlConstants.FX_DEFAULT_ELEMENTS) { + descriptors.add(new JavaFxDefaultPropertyElementDescriptor(name, null)); + } if (!descriptors.isEmpty()) return descriptors.toArray(new XmlElementDescriptor[descriptors.size()]); } return XmlElementDescriptor.EMPTY_ARRAY; } - public static List collectDescriptorsByCollection(PsiType psiType, GlobalSearchScope resolveScope) { - final List descriptors = new ArrayList(); + public static void collectDescriptorsByCollection(PsiType psiType, + GlobalSearchScope resolveScope, + final List descriptors) { final PsiType collectionItemType = GenericsHighlightUtil.getCollectionItemType(psiType, resolveScope); if (collectionItemType != null) { final PsiClass aClass = PsiUtil.resolveClassInType(collectionItemType); @@ -74,13 +80,15 @@ public class JavaFxPropertyElementDescriptor implements XmlElementDescriptor { }); } } - return descriptors; } @Nullable @Override public XmlElementDescriptor getElementDescriptor(XmlTag childTag, XmlTag contextTag) { final String name = childTag.getName(); + if (FxmlConstants.FX_DEFAULT_ELEMENTS.contains(name)) { + return new JavaFxDefaultPropertyElementDescriptor(name, childTag); + } if (JavaFxClassBackedElementDescriptor.isClassTag(name)) { return new JavaFxClassBackedElementDescriptor(name, childTag); } diff --git a/plugins/javaFX/testData/highlighting/defaultTagInList.fxml b/plugins/javaFX/testData/highlighting/defaultTagInList.fxml new file mode 100644 index 000000000000..b4bfe857567d --- /dev/null +++ b/plugins/javaFX/testData/highlighting/defaultTagInList.fxml @@ -0,0 +1,14 @@ + + + + + + + + + + id/> + + diff --git a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java index ae6393378523..3f7007e8e1ee 100644 --- a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java +++ b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java @@ -46,6 +46,10 @@ public class JavaFXHighlightingTest extends DaemonAnalyzerTestCase { doTest(); } + public void testDefaultTagInList() throws Exception { + doTest(); + } + public void testUnresolvedImport() throws Exception { doTest(); }