javafx: exclude from attributes included static/default attributes

This commit is contained in:
anna
2013-03-27 21:56:12 +01:00
parent 8017988deb
commit 1db7e740ab
7 changed files with 48 additions and 8 deletions
@@ -295,6 +295,12 @@ public class JavaFXHighlightingTest extends AbstractJavaFXTestCase {
doTest();
}
public void testIncludedForm() throws Exception {
myFixture.addFileToProject("sample.fxml", "<?import javafx.scene.layout.GridPane?>\n" +
"<fx:root type=\"javafx.scene.layout.GridPane\" xmlns:fx=\"http://javafx.com/fxml\"/>\n");
myFixture.testHighlighting(true, false, false, getTestName(false) + ".fxml");
}
public void testInjectedControllerFields() throws Exception {
myFixture.addFileToProject("sample.fxml", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<?import javafx.scene.control.*?>\n" +
@@ -179,6 +179,12 @@ public class JavaFxCompletionTest extends LightFixtureCompletionTestCase {
doTest("layoutY");
}
public void testIncludedRootRootAttributes() throws Exception {
myFixture.addFileToProject("sample.fxml", "?import javafx.scene.layout.GridPane?>\n" +
"<fx:root type=\"javafx.scene.layout.GridPane\" xmlns:fx=\"http://javafx.com/fxml\" />");
doTest("blendMode");
}
public void testAllowPropertyTypeClass() throws Exception {
doTest("ColumnConstraints");
}
@@ -220,12 +220,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>() {
@Override
public XmlAttributeDescriptor fun(PsiField field) {
return new JavaFxPropertyAttributeDescriptor(field.getName(), myPsiClass);
}
}, true);
collectInstanceProperties(simpleAttrs);
collectStaticAttributesDescriptors(context, simpleAttrs);
for (String defaultProperty : FxmlConstants.FX_DEFAULT_PROPERTIES) {
simpleAttrs.add(new JavaFxDefaultAttributeDescriptor(defaultProperty, myPsiClass));
@@ -236,6 +231,15 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
return XmlAttributeDescriptor.EMPTY;
}
protected void collectInstanceProperties(List<XmlAttributeDescriptor> simpleAttrs) {
collectProperties(simpleAttrs, new Function<PsiField, XmlAttributeDescriptor>() {
@Override
public XmlAttributeDescriptor fun(PsiField field) {
return new JavaFxPropertyAttributeDescriptor(field.getName(), myPsiClass);
}
}, true);
}
private <T> void collectProperties(final List<T> children, final Function<PsiField, T> factory, final boolean acceptPrimitive) {
final List<PsiField> fieldList =
CachedValuesManager.getManager(myPsiClass.getProject()).getCachedValue(myPsiClass, new CachedValueProvider<List<PsiField>>() {
@@ -119,8 +119,14 @@ public class JavaFxDefaultPropertyElementDescriptor implements XmlElementDescrip
final XmlTag includedRoot = getIncludedRoot(context);
if (includedRoot != null) {
final XmlElementDescriptor includedRootDescriptor = includedRoot.getDescriptor();
if (includedRootDescriptor != null) {
Collections.addAll(descriptors, includedRootDescriptor.getAttributesDescriptors(includedRoot));
if (includedRootDescriptor instanceof JavaFxClassBackedElementDescriptor) {
((JavaFxClassBackedElementDescriptor)includedRootDescriptor).collectInstanceProperties(descriptors);
}
else if (includedRootDescriptor instanceof JavaFxDefaultPropertyElementDescriptor) {
final JavaFxClassBackedElementDescriptor includedRootTagDescriptor = ((JavaFxDefaultPropertyElementDescriptor)includedRootDescriptor).getRootTagDescriptor(includedRoot);
if (includedRootTagDescriptor != null) {
includedRootTagDescriptor.collectInstanceProperties(descriptors);
}
}
}
}
@@ -0,0 +1,6 @@
<?import javafx.scene.layout.GridPane?>
<GridPane xmlns:fx="http://javafx.com/fxml">
<fx:define>
<fx:include source="sample.fxml" <caret>/>
</fx:define>
</GridPane>
@@ -0,0 +1,6 @@
<?import javafx.scene.layout.GridPane?>
<GridPane xmlns:fx="http://javafx.com/fxml">
<fx:define>
<fx:include source="sample.fxml" blendMode=""/>
</fx:define>
</GridPane>
@@ -0,0 +1,6 @@
<?import javafx.scene.layout.GridPane?>
<GridPane xmlns:fx="http://javafx.com/fxml">
<fx:define>
<fx:include source="sample.fxml"/>
</fx:define>
</GridPane>