javafx: accept to complete list attrs (IDEA-101228)

This commit is contained in:
anna
2013-02-18 21:31:14 +01:00
parent edf1bebbc5
commit 3eb9e5fc55
4 changed files with 20 additions and 4 deletions
@@ -65,7 +65,7 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
if (context != null) {
if (myPsiClass != null) {
final List<XmlElementDescriptor> children = new ArrayList<XmlElementDescriptor>();
collectProperties(children, true, context, new Function<PsiField, XmlElementDescriptor>() {
collectProperties(children, context, new Function<PsiField, XmlElementDescriptor>() {
@Override
public XmlElementDescriptor fun(PsiField field) {
return new JavaFxPropertyElementDescriptor(myPsiClass, field.getName(), false);
@@ -162,7 +162,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, false, context, new Function<PsiField, XmlAttributeDescriptor>() {
collectProperties(simpleAttrs, context, new Function<PsiField, XmlAttributeDescriptor>() {
@Override
public XmlAttributeDescriptor fun(PsiField field) {
return new JavaFxPropertyAttributeDescriptor(field.getName(), myPsiClass);
@@ -178,7 +178,7 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
return XmlAttributeDescriptor.EMPTY;
}
private <T> void collectProperties(List<T> children, boolean includeListProperties, XmlTag context, Function<PsiField, T> factory) {
private <T> void collectProperties(List<T> children, XmlTag context, Function<PsiField, T> factory) {
final PsiField[] fields = myPsiClass.getAllFields();
if (fields.length > 0) {
for (PsiField field : fields) {
@@ -187,7 +187,7 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
if (!JavaFxPsiUtil.isReadOnly(field.getName(), context) &&
InheritanceUtil.isInheritor(fieldType, JavaFxCommonClassNames.JAVAFX_BEANS_PROPERTY) ||
fieldType.equalsToText(CommonClassNames.JAVA_LANG_STRING) ||
includeListProperties && GenericsHighlightUtil.getCollectionItemType(field.getType(), myPsiClass.getResolveScope()) != null) {
GenericsHighlightUtil.getCollectionItemType(field.getType(), myPsiClass.getResolveScope()) != null) {
children.add(factory.fun(field));
}
}
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<?import java.util.*?>
<?import java.net.*?>
<AnchorPane <caret> xmlns:fx="http://javafx.com/fxml">
</AnchorPane>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<?import java.util.*?>
<?import java.net.*?>
<AnchorPane stylesheets="" xmlns:fx="http://javafx.com/fxml">
</AnchorPane>
@@ -105,6 +105,10 @@ public class JavaFxCompletionTest extends CompletionTestCase {
doTest("mystyle.css", "mystyle.css");
}
public void testListAttributes() throws Exception {
doTest("stylesheets");
}
public void testReadOnly() throws Exception {
configureByFile(getTestName(true) + ".fxml");
assertTrue(myItems.length > 0);