javafx: completion of list property tags

This commit is contained in:
Anna Kozlova
2013-01-23 22:35:17 +04:00
parent 4545e522f9
commit 88a82fe62d
4 changed files with 29 additions and 5 deletions
@@ -80,14 +80,15 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
} else if (descriptor instanceof JavaFxPropertyElementDescriptor) {
}
if (myPsiClass != null) {
if (myPsiClass != null && descriptor instanceof JavaFxClassBackedElementDescriptor) {
final List<XmlElementDescriptor> children = new ArrayList<XmlElementDescriptor>();
collectProperties(children, new Function<PsiField, XmlElementDescriptor>() {
collectProperties(children, true, new Function<PsiField, XmlElementDescriptor>() {
@Override
public XmlElementDescriptor fun(PsiField field) {
return new JavaFxPropertyElementDescriptor(myPsiClass, field.getName(), false);
}
});
collectParentStaticProperties(context, children, new Function<PsiMethod, XmlElementDescriptor>() {
@Override
public XmlElementDescriptor fun(PsiMethod method) {
@@ -157,7 +158,7 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
final String name = context.getName();
if (Comparing.equal(name, getName()) && myPsiClass != null) {
final List<XmlAttributeDescriptor> simpleAttrs = new ArrayList<XmlAttributeDescriptor>();
collectProperties(simpleAttrs, new Function<PsiField, XmlAttributeDescriptor>() {
collectProperties(simpleAttrs, false, new Function<PsiField, XmlAttributeDescriptor>() {
@Override
public XmlAttributeDescriptor fun(PsiField field) {
return new JavaFxPropertyAttributeDescriptor(field.getName(), myPsiClass);
@@ -175,7 +176,7 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
return XmlAttributeDescriptor.EMPTY;
}
private <T> void collectProperties(List<T> children, Function<PsiField, T> factory) {
private <T> void collectProperties(List<T> children, boolean includeListProperties, Function<PsiField, T> factory) {
final PsiField[] fields = myPsiClass.getAllFields();
if (fields.length > 0) {
for (PsiField field : fields) {
@@ -183,7 +184,8 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
final PsiType fieldType = field.getType();
if (PropertyUtil.findPropertyGetter(myPsiClass, field.getName(), false, true) != null &&
InheritanceUtil.isInheritor(fieldType, JavaFxCommonClassNames.JAVAFX_BEANS_PROPERTY_PROPERTY) ||
fieldType.equalsToText(CommonClassNames.JAVA_LANG_STRING)) {
fieldType.equalsToText(CommonClassNames.JAVA_LANG_STRING) ||
includeListProperties && GenericsHighlightUtil.getCollectionItemType(field.getType(), myPsiClass.getResolveScope()) != null) {
children.add(factory.fun(field));
}
}
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.text.*?>
<GridPane xmlns:fx="http://javafx.com/fxml">
<<caret>
</GridPane>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.text.*?>
<GridPane xmlns:fx="http://javafx.com/fxml">
<children
</GridPane>
@@ -49,6 +49,10 @@ public class JavaFxCompletionTest extends CompletionTestCase {
doTest("text");
}
public void testListPropertyTag() throws Exception {
doTest("children");
}
public void testStaticPropertiesEnumValue() throws Exception {
doTest();
}