@NbBundle.Messages({ "# {0} - tag name", "ERR_tagNotJavaIdentifier=Invalid class name: {0}", "# {0} - tag name", "ERR_fxControllerPermittedOnRoot=fx:controller is not permitted on tag {0}. Can be only present on root element." }) private FxNewInstance handleClassTag(String localName, Attributes atts) { String fxValueContent = null; String fxFactoryContent = null; String fxId = null; int off = contentLocator.getElementOffset() + 1; // the < for (int i = 0; i < atts.getLength(); i++) { String uri = atts.getURI(i); if (!FXML_FX_NAMESPACE.equals(uri)) { // no special attribute continue; } String name = atts.getLocalName(i); if (FX_VALUE.equals(name)) { fxValueContent = atts.getValue(i); } else if (FX_FACTORY.equals(name)) { fxFactoryContent = atts.getValue(i); } else if (FX_ID.equals(name)) { fxId = atts.getValue(i); } else if (FX_CONTROLLER.equals(name)) { if (nodeStack.peek().getKind() != Kind.Source) { addAttributeError( atts.getQName(i), "fx-controller-permitted-on-root", ERR_fxControllerPermittedOnRoot(localName), localName); } else { controllerName = atts.getValue(i); } } else { addAttributeError( atts.getQName(i), "invalid-property-reserved-name", ERR_invalidReservedPropertyName(name), name); } } // first we must check how this class tag is created. FxNewInstance instance = accessor.createInstance(localName, fxValueContent, fxFactoryContent, fxId); if (!FxXmlSymbols.isQualifiedIdentifier(localName)) { // not a java identifier, error addError( new ErrorMark( off, localName.length(), "invalid-class-name", ERR_tagNotJavaIdentifier(localName), localName)); accessor.makeBroken(instance); return instance; } return instance; }