javafx: constant values checks (IDEA-108601)

This commit is contained in:
Anna Kozlova
2013-06-10 18:21:05 +04:00
parent af906805b1
commit 9fe9f66af3
3 changed files with 25 additions and 3 deletions
@@ -311,6 +311,10 @@ public class JavaFXHighlightingTest extends AbstractJavaFXTestCase {
doTest();
}
public void testConstantValue() throws Exception {
doTest();
}
public void testCharsetInInclude() 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");
@@ -370,12 +370,20 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor,
host.addMessage(((XmlAttributeImpl)attribute).getNameElement(), "fx:controller can only be applied to root element", ValidationHost.ErrorType.ERROR); //todo add delete/move to upper tag fix
}
}
final String canCoerceError = JavaFxPsiUtil.isClassAcceptable(parentTag, myPsiClass);
PsiClass aClass = myPsiClass;
final XmlAttribute constAttr = context.getAttribute(FxmlConstants.FX_CONSTANT);
if (constAttr != null) {
final PsiField constField = aClass.findFieldByName(constAttr.getValue(), false);
if (constField != null) {
aClass = PsiUtil.resolveClassInType(constField.getType());
}
}
final String canCoerceError = JavaFxPsiUtil.isClassAcceptable(parentTag, aClass);
if (canCoerceError != null) {
host.addMessage(context.getNavigationElement(), canCoerceError, ValidationHost.ErrorType.ERROR);
}
if (myPsiClass != null && myPsiClass.isValid()) {
final String message = JavaFxPsiUtil.isAbleToInstantiate(myPsiClass);
if (aClass != null && aClass.isValid()) {
final String message = JavaFxPsiUtil.isAbleToInstantiate(aClass);
if (message != null) {
host.addMessage(context, message, ValidationHost.ErrorType.ERROR);
}
@@ -0,0 +1,10 @@
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Control?>
<?import javafx.scene.control.TextField?>
<GridPane xmlns:fx="http://javafx.com/fxml">
<TextField promptText="User Name">
<minHeight>
<Control fx:constant="USE_PREF_SIZE" />
</minHeight>
</TextField>
</GridPane>