mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
javafx: completion of list property tags
This commit is contained in:
+7
-5
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user