diff --git a/core/pom.xml b/core/pom.xml
index 6f5758d..662b3a2 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -22,5 +22,30 @@
${javafx.version}
provided
+
+ org.openjfx
+ javafx-controls
+ ${javafx.version}
+ test
+
+
+ org.openjfx
+ javafx-fxml
+ ${javafx.version}
+ test
+
+
+ org.openjfx
+ javafx-media
+ ${javafx.version}
+ test
+
+
+ org.openjfx
+ javafx-web
+ ${javafx.version}
+ test
+
+
\ No newline at end of file
diff --git a/core/src/main/java/com/github/gtache/fxml/compiler/impl/GeneratorImpl.java b/core/src/main/java/com/github/gtache/fxml/compiler/impl/GeneratorImpl.java
index 4f15fea..618a14c 100644
--- a/core/src/main/java/com/github/gtache/fxml/compiler/impl/GeneratorImpl.java
+++ b/core/src/main/java/com/github/gtache/fxml/compiler/impl/GeneratorImpl.java
@@ -195,7 +195,8 @@ public class GeneratorImpl implements Generator {
} catch (final NoSuchFieldException | IllegalAccessException e) {
throw new RuntimeException("Error using reflection on " + fieldName, e);
}
- }""");
+ }
+ """);
}
return sb.toString();
}
@@ -408,7 +409,7 @@ public class GeneratorImpl implements Generator {
final var method = getStaticMethod(property.sourceType(), setMethod);
final var parameterType = method.getParameterTypes()[1];
final var arg = getArg(request, property.value(), parameterType);
- sb.append(" ").append(property.sourceType().getName()).append(".").append(setMethod).append("(").append(parentVariable).append(", ").append(arg).append(");\n");
+ setLaterIfNeeded(request, property, parameterType, " " + property.sourceType().getName() + "." + setMethod + "(" + parentVariable + ", " + arg + ");\n", sb);
} else {
throw new IllegalStateException("Cannot set " + propertyName + " on " + property.sourceType().getCanonicalName());
}
@@ -418,13 +419,13 @@ public class GeneratorImpl implements Generator {
final var method = getMethod(parent.clazz(), setMethod);
final var parameterType = method.getParameterTypes()[0];
final var arg = getArg(request, property.value(), parameterType);
- sb.append(" ").append(parentVariable).append(".").append(setMethod).append("(").append(arg).append(");\n");
+ setLaterIfNeeded(request, property, parameterType, " " + parentVariable + "." + setMethod + "(" + arg + ");\n", sb);
} else if (hasMethod(parent.clazz(), getMethod)) {
final var method = getMethod(parent.clazz(), getMethod);
final var returnType = method.getReturnType();
if (hasMethod(returnType, "addAll")) {
final var arg = getArg(request, property.value(), String.class);
- sb.append(" ").append(parentVariable).append(".").append(getMethod).append("().addAll(").append(arg).append(");\n");
+ setLaterIfNeeded(request, property, String.class, " " + parentVariable + "." + getMethod + "().addAll(" + arg + ");\n", sb);
}
} else {
throw new IllegalStateException("Cannot set " + propertyName + " on " + parent.clazz().getCanonicalName());
@@ -432,6 +433,15 @@ public class GeneratorImpl implements Generator {
}
}
+ private void setLaterIfNeeded(final GenerationRequest request, final ParsedProperty property, final Class> type, final String arg, final StringBuilder sb) {
+ if (type == String.class && property.value().startsWith("%") && request.parameters().resourceBundleInjection().injectionType() == ResourceBundleInjectionTypes.GETTER
+ && getControllerInjection(request).fieldInjectionType() == ControllerFieldInjectionTypes.FACTORY) {
+ controllerFactoryPostAction.add(arg);
+ } else {
+ sb.append(arg);
+ }
+ }
+
/**
* Injects a controller method
*
@@ -800,13 +810,7 @@ public class GeneratorImpl implements Generator {
if (resourceBundleInjectionType instanceof final ResourceBundleInjectionTypes types) {
return switch (types) {
case CONSTRUCTOR, GET_BUNDLE -> "bundle.getString(\"" + value + "\")";
- case GETTER -> {
- if (getControllerInjection(request).fieldInjectionType() == ControllerFieldInjectionTypes.FACTORY) {
- throw new UnsupportedOperationException("Factory injection with bundle getter not supported yet");
- } else {
- yield "controller.resources().getString(\"" + value + "\")";
- }
- }
+ case GETTER -> "controller.resources().getString(\"" + value + "\")";
};
} else {
throw new IllegalArgumentException("Unknown resource bundle injection type : " + resourceBundleInjectionType);
diff --git a/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedIncludeImpl.java b/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedIncludeImpl.java
index 05a1a07..ec462ae 100644
--- a/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedIncludeImpl.java
+++ b/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedIncludeImpl.java
@@ -3,6 +3,7 @@ package com.github.gtache.fxml.compiler.parsing.impl;
import com.github.gtache.fxml.compiler.parsing.ParsedInclude;
import com.github.gtache.fxml.compiler.parsing.ParsedProperty;
+import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.SequencedMap;
@@ -14,6 +15,6 @@ import java.util.SequencedMap;
public record ParsedIncludeImpl(SequencedMap properties) implements ParsedInclude {
public ParsedIncludeImpl {
- properties = new LinkedHashMap<>(properties);
+ properties = Collections.unmodifiableSequencedMap(new LinkedHashMap<>(properties));
}
}
diff --git a/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedObjectImpl.java b/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedObjectImpl.java
index 46c8301..5cdc077 100644
--- a/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedObjectImpl.java
+++ b/core/src/main/java/com/github/gtache/fxml/compiler/parsing/impl/ParsedObjectImpl.java
@@ -4,6 +4,7 @@ import com.github.gtache.fxml.compiler.parsing.ParsedObject;
import com.github.gtache.fxml.compiler.parsing.ParsedProperty;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Objects;
import java.util.SequencedCollection;
@@ -21,8 +22,8 @@ public record ParsedObjectImpl(Class> clazz, SequencedMap(properties);
- children = new LinkedHashMap<>(children);
+ properties = Collections.unmodifiableSequencedMap(new LinkedHashMap<>(properties));
+ children = Collections.unmodifiableSequencedMap(new LinkedHashMap<>(children));
}
/**
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/IncludeController.java b/core/src/test/java/com/github/gtache/fxml/compiler/impl/ControlsController.java
similarity index 99%
rename from loader/src/test/java/com/github/gtache/fxml/compiler/loader/IncludeController.java
rename to core/src/test/java/com/github/gtache/fxml/compiler/impl/ControlsController.java
index 0c21256..b00f5ad 100644
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/IncludeController.java
+++ b/core/src/test/java/com/github/gtache/fxml/compiler/impl/ControlsController.java
@@ -1,4 +1,4 @@
-package com.github.gtache.fxml.compiler.loader;
+package com.github.gtache.fxml.compiler.impl;
import javafx.fxml.FXML;
import javafx.scene.control.*;
@@ -9,7 +9,7 @@ import javafx.scene.paint.Color;
import javafx.scene.web.HTMLEditor;
import javafx.scene.web.WebView;
-public class IncludeController {
+public class ControlsController {
@FXML
GridPane gridPane;
@FXML
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/TestController.java b/core/src/test/java/com/github/gtache/fxml/compiler/impl/IncludesController.java
similarity index 93%
rename from loader/src/test/java/com/github/gtache/fxml/compiler/loader/TestController.java
rename to core/src/test/java/com/github/gtache/fxml/compiler/impl/IncludesController.java
index 0814749..4dc07a4 100644
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/TestController.java
+++ b/core/src/test/java/com/github/gtache/fxml/compiler/impl/IncludesController.java
@@ -1,4 +1,4 @@
-package com.github.gtache.fxml.compiler.loader;
+package com.github.gtache.fxml.compiler.impl;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
@@ -15,7 +15,7 @@ import javafx.scene.layout.TilePane;
import javafx.scene.layout.VBox;
import javafx.scene.text.TextFlow;
-public class TestController {
+public class IncludesController {
@FXML
StackPane stackPane;
@FXML
@@ -30,7 +30,7 @@ public class TestController {
Slider playSlider;
@FXML
- IncludeController includeController;
+ ControlsController controlsController;
@FXML
VBox vbox;
@FXML
@@ -101,8 +101,8 @@ public class TestController {
this.playSlider = playSlider;
}
- public void setIncludeController(final IncludeController includeController) {
- this.includeController = includeController;
+ public void setIncludeController(final ControlsController controlsController) {
+ this.controlsController = controlsController;
}
public void setVbox(final VBox vbox) {
diff --git a/core/src/test/java/com/github/gtache/fxml/compiler/impl/TestGeneratorImpl.java b/core/src/test/java/com/github/gtache/fxml/compiler/impl/TestGeneratorImpl.java
deleted file mode 100644
index 8ee1282..0000000
--- a/core/src/test/java/com/github/gtache/fxml/compiler/impl/TestGeneratorImpl.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.github.gtache.fxml.compiler.impl;
-
-class TestGeneratorImpl {
-}
diff --git a/core/src/test/java/com/github/gtache/fxml/compiler/parsing/impl/TestParsedIncludeImpl.java b/core/src/test/java/com/github/gtache/fxml/compiler/parsing/impl/TestParsedIncludeImpl.java
index f657c61..cedd1f3 100644
--- a/core/src/test/java/com/github/gtache/fxml/compiler/parsing/impl/TestParsedIncludeImpl.java
+++ b/core/src/test/java/com/github/gtache/fxml/compiler/parsing/impl/TestParsedIncludeImpl.java
@@ -1,4 +1,52 @@
package com.github.gtache.fxml.compiler.parsing.impl;
-public class TestParsedIncludeImpl {
+import com.github.gtache.fxml.compiler.parsing.ParsedInclude;
+import com.github.gtache.fxml.compiler.parsing.ParsedProperty;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.LinkedHashMap;
+import java.util.SequencedMap;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@ExtendWith(MockitoExtension.class)
+class TestParsedIncludeImpl {
+
+ private final SequencedMap properties;
+ private final ParsedInclude include;
+
+ TestParsedIncludeImpl(@Mock final ParsedProperty property) {
+ this.properties = new LinkedHashMap<>();
+ this.properties.put("name", property);
+ this.include = new ParsedIncludeImpl(properties);
+ }
+
+ @Test
+ void testGetters() {
+ assertEquals(properties, include.properties());
+ assertEquals(ParsedInclude.class, include.clazz());
+ assertEquals(new LinkedHashMap<>(), include.children());
+ }
+
+ @Test
+ void testCopyMap() {
+ final var originalProperties = include.properties();
+ properties.clear();
+ assertEquals(originalProperties, include.properties());
+ assertNotEquals(properties, include.properties());
+ }
+
+ @Test
+ void testUnmodifiable() {
+ final var objectProperties = include.properties();
+ assertThrows(UnsupportedOperationException.class, objectProperties::clear);
+ }
+
+ @Test
+ void testIllegal() {
+ assertThrows(NullPointerException.class, () -> new ParsedIncludeImpl(null));
+ }
}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/loader/IncludeBundle.properties b/core/src/test/resources/com/github/gtache/fxml/compiler/impl/ControlsBundle.properties
similarity index 100%
rename from loader/src/test/resources/com/github/gtache/fxml/compiler/loader/IncludeBundle.properties
rename to core/src/test/resources/com/github/gtache/fxml/compiler/impl/ControlsBundle.properties
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/loader/TestBundle.properties b/core/src/test/resources/com/github/gtache/fxml/compiler/impl/IncludesBundle.properties
similarity index 100%
rename from loader/src/test/resources/com/github/gtache/fxml/compiler/loader/TestBundle.properties
rename to core/src/test/resources/com/github/gtache/fxml/compiler/impl/IncludesBundle.properties
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/loader/includeView.fxml b/core/src/test/resources/com/github/gtache/fxml/compiler/impl/controlsView.fxml
similarity index 99%
rename from loader/src/test/resources/com/github/gtache/fxml/compiler/loader/includeView.fxml
rename to core/src/test/resources/com/github/gtache/fxml/compiler/impl/controlsView.fxml
index 11d1c11..e6dc611 100644
--- a/loader/src/test/resources/com/github/gtache/fxml/compiler/loader/includeView.fxml
+++ b/core/src/test/resources/com/github/gtache/fxml/compiler/impl/controlsView.fxml
@@ -15,7 +15,7 @@
+ fx:controller="com.github.gtache.fxml.compiler.impl.ControlsController">
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/loader/testView.fxml b/core/src/test/resources/com/github/gtache/fxml/compiler/impl/includesView.fxml
similarity index 98%
rename from loader/src/test/resources/com/github/gtache/fxml/compiler/loader/testView.fxml
rename to core/src/test/resources/com/github/gtache/fxml/compiler/impl/includesView.fxml
index 761a3fa..03f7f5f 100644
--- a/loader/src/test/resources/com/github/gtache/fxml/compiler/loader/testView.fxml
+++ b/core/src/test/resources/com/github/gtache/fxml/compiler/impl/includesView.fxml
@@ -6,7 +6,7 @@
+ fx:controller="com.github.gtache.fxml.compiler.impl.IncludesController">
@@ -37,8 +37,8 @@
-
+
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/loader/style.css b/core/src/test/resources/com/github/gtache/fxml/compiler/impl/style.css
similarity index 100%
rename from loader/src/test/resources/com/github/gtache/fxml/compiler/loader/style.css
rename to core/src/test/resources/com/github/gtache/fxml/compiler/impl/style.css
diff --git a/loader/pom.xml b/loader/pom.xml
index 7e36094..4aeb556 100644
--- a/loader/pom.xml
+++ b/loader/pom.xml
@@ -11,9 +11,6 @@
fxml-compiler-loader
-
- 1.37
-
com.github.gtache
@@ -32,12 +29,6 @@
provided
-
- org.openjfx
- javafx-controls
- ${javafx.version}
- test
-
org.openjfx
javafx-media
@@ -50,35 +41,5 @@
${javafx.version}
test
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh.version}
- test
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh.version}
- test
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh.version}
-
-
-
-
-
-
\ No newline at end of file
diff --git a/loader/src/main/java/com/github/gtache/fxml/compiler/parsing/listener/ParsingLoadListener.java b/loader/src/main/java/com/github/gtache/fxml/compiler/parsing/listener/ParsingLoadListener.java
index 7b5ddd5..a4be0d9 100644
--- a/loader/src/main/java/com/github/gtache/fxml/compiler/parsing/listener/ParsingLoadListener.java
+++ b/loader/src/main/java/com/github/gtache/fxml/compiler/parsing/listener/ParsingLoadListener.java
@@ -24,12 +24,12 @@ public class ParsingLoadListener implements LoadListener {
private final Deque stack;
private final Deque propertyStack;
private final Deque> currentObjectStack;
+ private final SequencedMap currentIncludeProperties;
private ParsedObjectImpl.Builder current;
private ParsedProperty currentProperty;
private List currentObjects;
private Object previousEnd;
private boolean isInclude;
- private SequencedMap currentIncludeProperties;
/**
* Instantiates the listener
@@ -115,12 +115,16 @@ public class ParsingLoadListener implements LoadListener {
@Override
public void beginPropertyElement(final String name, final Class> sourceType) {
previousEnd = null;
- if (currentProperty != null) {
- propertyStack.push(currentProperty);
+ if (isInclude) {
+ throw new IllegalStateException("Reading complex property for include");
+ } else {
+ if (currentProperty != null) {
+ propertyStack.push(currentProperty);
+ }
+ currentProperty = new ParsedPropertyImpl(name, sourceType, null);
+ currentObjectStack.push(currentObjects);
+ currentObjects = new ArrayList<>();
}
- currentProperty = new ParsedPropertyImpl(name, sourceType, null);
- currentObjectStack.push(currentObjects);
- currentObjects = new ArrayList<>();
}
@Override
@@ -144,6 +148,8 @@ public class ParsingLoadListener implements LoadListener {
final var property = new ParsedPropertyImpl(name, null, value);
if (isInclude) {
currentIncludeProperties.put(name, property);
+ } else if (current == null) {
+ throw new IllegalStateException("Current object is null (trying to add attribute " + name + " = " + value + ")");
} else {
current.addProperty(property);
}
@@ -151,8 +157,14 @@ public class ParsingLoadListener implements LoadListener {
@Override
public void readPropertyAttribute(final String name, final Class> sourceType, final String value) {
- previousEnd = null;
- current.addProperty(new ParsedPropertyImpl(name, sourceType, value));
+ if (isInclude) {
+ throw new IllegalStateException("Reading complex property for include");
+ } else if (current == null) {
+ throw new IllegalStateException("Current object is null (trying to add property " + name + "/" + sourceType + " = " + value + ")");
+ } else {
+ previousEnd = null;
+ current.addProperty(new ParsedPropertyImpl(name, sourceType, value));
+ }
}
@Override
@@ -162,31 +174,49 @@ public class ParsingLoadListener implements LoadListener {
@Override
public void readEventHandlerAttribute(final String name, final String value) {
- current.addProperty(new ParsedPropertyImpl(name, EventHandler.class, value));
+ if (isInclude) {
+ throw new IllegalStateException("Reading event handler for include");
+ } else if (current == null) {
+ throw new IllegalStateException("Current object is null (trying to add event handler" + name + " = " + value + ")");
+ } else {
+ current.addProperty(new ParsedPropertyImpl(name, EventHandler.class, value));
+ }
}
@Override
public void endElement(final Object value) {
if (isInclude) {
- currentObjects.add(new ParsedIncludeImpl(currentIncludeProperties));
- currentIncludeProperties.clear();
- isInclude = false;
+ endInclude();
} else if (previousEnd == value || value instanceof ObservableList>) {
- //End of property
- if (currentProperty == null) {
- throw new IllegalStateException("Unexpected end element (property is null) : " + value);
- } else {
- currentObjects.forEach(go -> current.addChild(currentProperty, go));
- currentObjects = currentObjectStack.isEmpty() ? new ArrayList<>() : currentObjectStack.pop();
- currentProperty = propertyStack.isEmpty() ? null : propertyStack.pop();
- }
+ endProperty(value);
} else if (current != null) {
- final var built = current.build();
- currentObjects.add(built);
- current = stack.isEmpty() ? null : stack.pop();
- previousEnd = value;
+ endObject(value);
} else {
throw new IllegalStateException("Unexpected end element (current is null) : " + value);
}
}
+
+ private void endInclude() {
+ currentObjects.add(new ParsedIncludeImpl(currentIncludeProperties));
+ currentIncludeProperties.clear();
+ isInclude = false;
+ }
+
+ private void endProperty(final Object value) {
+ //End of property
+ if (currentProperty == null) {
+ throw new IllegalStateException("Unexpected end element (property is null) : " + value);
+ } else {
+ currentObjects.forEach(go -> current.addChild(currentProperty, go));
+ currentObjects = currentObjectStack.isEmpty() ? new ArrayList<>() : currentObjectStack.pop();
+ currentProperty = propertyStack.isEmpty() ? null : propertyStack.pop();
+ }
+ }
+
+ private void endObject(final Object value) {
+ final var built = current.build();
+ currentObjects.add(built);
+ current = stack.isEmpty() ? null : stack.pop();
+ previousEnd = value;
+ }
}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/impl/ControlsController.java b/loader/src/test/java/com/github/gtache/fxml/compiler/impl/ControlsController.java
new file mode 120000
index 0000000..c73ef71
--- /dev/null
+++ b/loader/src/test/java/com/github/gtache/fxml/compiler/impl/ControlsController.java
@@ -0,0 +1 @@
+../../../../../../../../../../core/src/test/java/com/github/gtache/fxml/compiler/impl/ControlsController.java
\ No newline at end of file
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/impl/IncludesController.java b/loader/src/test/java/com/github/gtache/fxml/compiler/impl/IncludesController.java
new file mode 120000
index 0000000..1ebca78
--- /dev/null
+++ b/loader/src/test/java/com/github/gtache/fxml/compiler/impl/IncludesController.java
@@ -0,0 +1 @@
+../../../../../../../../../../core/src/test/java/com/github/gtache/fxml/compiler/impl/IncludesController.java
\ No newline at end of file
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/impl/TestGeneratorImpl.java b/loader/src/test/java/com/github/gtache/fxml/compiler/impl/TestGeneratorImpl.java
new file mode 100644
index 0000000..f5c5560
--- /dev/null
+++ b/loader/src/test/java/com/github/gtache/fxml/compiler/impl/TestGeneratorImpl.java
@@ -0,0 +1,157 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import com.github.gtache.fxml.compiler.GenerationRequest;
+import com.github.gtache.fxml.compiler.Generator;
+import com.github.gtache.fxml.compiler.parsing.listener.ParsingLoadListener;
+import javafx.application.Platform;
+import javafx.fxml.FXMLLoader;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Stream;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class TestGeneratorImpl {
+
+ private static final Map> GENERIC_TYPES;
+
+ static {
+ GENERIC_TYPES = new HashMap<>();
+ GENERIC_TYPES.put("choiceBox", List.of("String"));
+ GENERIC_TYPES.put("listView", List.of("javafx.scene.control.Label"));
+ GENERIC_TYPES.put("spinner", List.of("Double"));
+ GENERIC_TYPES.put("tableView", List.of("javafx.scene.control.TextArea"));
+ GENERIC_TYPES.put("treeView", List.of("String"));
+ GENERIC_TYPES.put("treeTableView", List.of("javafx.scene.control.TreeItem"));
+ GENERIC_TYPES.put("treeTableColumn1", List.of("javafx.scene.control.TreeItem", "String"));
+ GENERIC_TYPES.put("treeTableColumn2", List.of("javafx.scene.control.TreeItem", "Integer"));
+ GENERIC_TYPES.put("tableColumn1", List.of("javafx.scene.control.TextArea", "Float"));
+ GENERIC_TYPES.put("tableColumn2", List.of("javafx.scene.control.TextArea", "String"));
+ }
+
+ private final Generator generator;
+
+ TestGeneratorImpl() {
+ this.generator = new GeneratorImpl();
+ }
+
+ @BeforeAll
+ static void beforeAll() {
+ try {
+ Platform.startup(() -> {
+
+ });
+ } catch (final IllegalStateException ignored) {
+
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("providesGenerationTestCases")
+ public void testGenerate(final String file, final ControllerFieldInjectionTypes field, final ControllerMethodsInjectionType method, final ResourceBundleInjectionTypes bundle) {
+ final var request = getRequest(file, field, method, bundle);
+ final var path = Paths.get(getPath(file, field, method, bundle));
+ try (final var in = getClass().getResourceAsStream("/com/github/gtache/fxml/compiler/impl/" + path)) {
+ final var expected = new String(in.readAllBytes(), StandardCharsets.UTF_8);
+ final var actual = generator.generate(request);
+ assertEquals(expected, actual);
+ } catch (final IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void main(final String[] args) {
+ //Generates the test cases
+ try {
+ Platform.startup(() -> {
+ final var generator = new GeneratorImpl();
+ final var files = List.of("Controls", "Includes");
+ for (final var file : files) {
+ for (final var field : ControllerFieldInjectionTypes.values()) {
+ for (final var method : ControllerMethodsInjectionType.values()) {
+ for (final var bundle : ResourceBundleInjectionTypes.values()) {
+ final var request = getRequest(file, field, method, bundle);
+ final var content = generator.generate(request);
+ final var path = Paths.get(getPath(file, field, method, bundle));
+ try {
+ Files.writeString(path, content);
+ } catch (final IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+ }
+ });
+ } finally {
+ Platform.exit();
+ }
+ }
+
+ private static String getPath(final String file, final ControllerFieldInjectionTypes field, final ControllerMethodsInjectionType method, final ResourceBundleInjectionTypes bundle) {
+ return "expected-" + file.toLowerCase() + "-" + field.name().toLowerCase() + "-" + method.name().toLowerCase() + "-" + bundle.name().replace("_", "").toLowerCase() + ".txt";
+ }
+
+ private static GenerationRequest getRequest(final String file, final ControllerFieldInjectionTypes field, final ControllerMethodsInjectionType method, final ResourceBundleInjectionTypes bundle) {
+ return CompletableFuture.supplyAsync(() -> {
+ final var controlsControllerInfo = new ControllerInfoImpl(Map.of("keyPressed", false, "mouseClicked", false),
+ GENERIC_TYPES);
+ final var includesControllerInfo = new ControllerInfoImpl(Map.of(), Map.of());
+ final var controllerInfo = file.equals("Controls") ? controlsControllerInfo : includesControllerInfo;
+ final var resourceBundlePath = "com.github.gtache.fxml.compiler.impl." + file + "Bundle";
+ final var viewPath = "/com/github/gtache/fxml/compiler/impl/" + file + "View.fxml";
+ final var listener = new ParsingLoadListener();
+ final var loader = new FXMLLoader(TestGeneratorImpl.class.getResource(viewPath));
+ loader.setLoadListener(listener);
+ loader.setResources(ResourceBundle.getBundle(resourceBundlePath));
+ try {
+ loader.load();
+ } catch (final IOException e) {
+ throw new RuntimeException(e);
+ }
+ final var root = listener.root();
+ return new GenerationRequestImpl(
+ new GenerationParametersImpl(Map.of(
+ "com.github.gtache.fxml.compiler.impl.ControlsController", new ControllerInjectionImpl(field, method,
+ "com.github.gtache.fxml.compiler.impl.ControlsController"),
+ "com.github.gtache.fxml.compiler.impl.IncludesController", new ControllerInjectionImpl(field, method,
+ "com.github.gtache.fxml.compiler.impl.IncludesController")),
+ Map.of("controlsView.fxml", "com.github.gtache.fxml.compiler.impl.ControlsView"),
+ Map.of("controlsView.fxml", "com.github.gtache.fxml.compiler.impl.ControlsController"),
+ new ResourceBundleInjectionImpl(bundle, resourceBundlePath)
+ ),
+ controllerInfo,
+ root,
+ "com.github.gtache.fxml.compiler.impl." + file + "Controller"
+ );
+ }, Platform::runLater).join();
+ }
+
+ private static Stream providesGenerationTestCases() {
+ final var files = List.of("Controls", "Includes");
+ final var list = new ArrayList();
+ for (final var file : files) {
+ for (final var field : ControllerFieldInjectionTypes.values()) {
+ for (final var method : ControllerMethodsInjectionType.values()) {
+ for (final var bundle : ResourceBundleInjectionTypes.values()) {
+ list.add(Arguments.of(file, field, method, bundle));
+ }
+ }
+ }
+ }
+ return list.stream();
+ }
+}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/AssignIncludeView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/AssignIncludeView.java
deleted file mode 100644
index f65a5e8..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/AssignIncludeView.java
+++ /dev/null
@@ -1,439 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class AssignIncludeView {
-
- private final Map, Object> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.IncludeController controller;
-
- /**
- * Instantiates a new AssignIncludeView with no nested controllers and no resource bundle
- *
- * @param controller The controller
- */
- public AssignIncludeView(final com.github.gtache.fxml.compiler.loader.IncludeController controller) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controller), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new AssignIncludeView with no nested controllers
- *
- * @param controller The controller
- * @param resourceBundle The resource bundle
- */
- public AssignIncludeView(final com.github.gtache.fxml.compiler.loader.IncludeController controller, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controller), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new AssignIncludeView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- */
- public AssignIncludeView(final Map, Object> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new AssignIncludeView with nested controllers
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public AssignIncludeView(final Map, Object> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- controller = (com.github.gtache.fxml.compiler.loader.IncludeController) controllersMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- final var object0 = new javafx.scene.layout.GridPane();
- controller.gridPane = object0;
- object0.setOnInputMethodTextChanged(controller::inputMethodTextChanged);
- object0.setOnKeyPressed(e -> controller.keyPressed());
- object0.setOnKeyReleased(controller::keyReleased);
- object0.setOnKeyTyped(controller::keyTyped);
- final var object1 = new javafx.scene.layout.RowConstraints();
- final var object2 = new javafx.scene.layout.RowConstraints();
- final var object3 = new javafx.scene.layout.RowConstraints();
- final var object4 = new javafx.scene.layout.RowConstraints();
- final var object5 = new javafx.scene.layout.RowConstraints();
- final var object6 = new javafx.scene.layout.RowConstraints();
- final var object7 = new javafx.scene.layout.RowConstraints();
- final var object8 = new javafx.scene.layout.RowConstraints();
- final var object9 = new javafx.scene.layout.RowConstraints();
- final var object10 = new javafx.scene.layout.RowConstraints();
- final var object11 = new javafx.scene.layout.RowConstraints();
- final var object12 = new javafx.scene.layout.RowConstraints();
- final var object13 = new javafx.scene.layout.RowConstraints();
- final var object14 = new javafx.scene.layout.RowConstraints();
- final var object15 = new javafx.scene.layout.RowConstraints();
- final var object16 = new javafx.scene.layout.RowConstraints();
- final var object17 = new javafx.scene.layout.RowConstraints();
- final var object18 = new javafx.scene.layout.RowConstraints();
- object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
- final var object19 = new javafx.scene.layout.ColumnConstraints();
- final var object20 = new javafx.scene.layout.ColumnConstraints();
- final var object21 = new javafx.scene.layout.ColumnConstraints();
- object21.setMinWidth(10.0);
- object21.setPrefWidth(100.0);
- object0.getColumnConstraints().addAll(object19, object20, object21);
- final var object22 = new javafx.scene.control.Button();
- controller.button = object22;
- object22.setMnemonicParsing(false);
- object22.setText("Button");
- final var object23 = new javafx.scene.control.CheckBox();
- controller.checkBox = object23;
- object23.setIndeterminate(true);
- object23.setMnemonicParsing(false);
- object23.setText("CheckBox");
- javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
- final var object24 = new javafx.scene.control.ChoiceBox();
- controller.choiceBox = object24;
- object24.setCacheShape(false);
- object24.setCenterShape(false);
- object24.setDisable(true);
- object24.setFocusTraversable(false);
- object24.setPrefWidth(150.0);
- object24.setScaleShape(false);
- object24.setVisible(false);
- javafx.scene.layout.GridPane.setRowIndex(object24, 1);
- final var object25 = new javafx.scene.control.ColorPicker();
- controller.colorPicker = object25;
- object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
- object25.setOpacity(0.5);
- javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
- javafx.scene.layout.GridPane.setRowIndex(object25, 1);
- final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
- controller.color = object26;
- object25.setValue(object26);
- final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object25.setOpaqueInsets(object27);
- final var object28 = new javafx.scene.control.ComboBox();
- controller.comboBox = object28;
- object28.setEditable(true);
- object28.setPrefWidth(150.0);
- object28.setPromptText("Text");
- object28.setVisibleRowCount(5);
- javafx.scene.layout.GridPane.setRowIndex(object28, 2);
- final var object29 = javafx.scene.Cursor.CLOSED_HAND;
- object28.setCursor(object29);
- final var object30 = new javafx.scene.effect.Bloom();
- object28.setEffect(object30);
- final var object31 = new javafx.scene.control.DatePicker();
- controller.datePicker = object31;
- object31.setShowWeekNumbers(true);
- object31.setStyle("-fx-background-color: #ffffff;");
- javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
- javafx.scene.layout.GridPane.setRowIndex(object31, 2);
- final var object32 = new javafx.scene.web.HTMLEditor();
- controller.htmlEditor = object32;
- object32.setHtmlText("");
- object32.setPrefHeight(200.0);
- object32.setPrefWidth(506.0);
- object32.getStyleClass().addAll("clazz");
- object32.getStylesheets().addAll("@style.css");
- javafx.scene.layout.GridPane.setRowIndex(object32, 3);
- final var object33 = new javafx.scene.control.Hyperlink();
- controller.hyperlink = object33;
- object33.setText("Hyperlink");
- javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
- javafx.scene.layout.GridPane.setRowIndex(object33, 3);
- final var object34 = new javafx.scene.image.ImageView();
- controller.imageView = object34;
- object34.setFitHeight(150.0);
- object34.setFitWidth(200.0);
- object34.setPickOnBounds(true);
- object34.setPreserveRatio(true);
- javafx.scene.layout.GridPane.setRowIndex(object34, 4);
- final var object35 = new javafx.scene.control.Label();
- controller.label = object35;
- object35.setAccessibleHelp("TTTTT");
- object35.setAccessibleText("TTT");
- object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
- object35.setCache(true);
- object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
- object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
- object35.setMnemonicParsing(true);
- object35.setMouseTransparent(true);
- object35.setText(bundle.getString("include.label"));
- javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
- javafx.scene.layout.GridPane.setRowIndex(object35, 4);
- final var object36 = new javafx.scene.control.ListView();
- controller.listView = object36;
- object36.setFixedCellSize(20.0);
- object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
- object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
- object36.setPrefHeight(200.0);
- object36.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object36, 5);
- final var object37 = new javafx.scene.media.MediaView();
- controller.mediaView = object37;
- object37.setFitHeight(200.0);
- object37.setFitWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
- javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
- javafx.scene.layout.GridPane.setRowIndex(object37, 5);
- javafx.scene.layout.GridPane.setRowSpan(object37, 2);
- final var object38 = new javafx.scene.control.MenuBar();
- controller.menuBar = object38;
- javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
- javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
- javafx.scene.layout.GridPane.setRowIndex(object38, 7);
- javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
- javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
- final var object39 = new javafx.scene.control.Menu();
- controller.menu1 = object39;
- object39.setMnemonicParsing(false);
- object39.setText("File");
- final var object40 = new javafx.scene.control.MenuItem();
- controller.menuItem1 = object40;
- object40.setMnemonicParsing(false);
- object40.setText("Close");
- object39.getItems().addAll(object40);
- final var object41 = new javafx.scene.control.Menu();
- object41.setMnemonicParsing(false);
- object41.setText("Edit");
- final var object42 = new javafx.scene.control.MenuItem();
- object42.setMnemonicParsing(false);
- object42.setText("Delete");
- object41.getItems().addAll(object42);
- final var object43 = new javafx.scene.control.Menu();
- object43.setMnemonicParsing(false);
- object43.setText("Help");
- final var object44 = new javafx.scene.control.MenuItem();
- object44.setMnemonicParsing(false);
- object44.setText("About");
- object43.getItems().addAll(object44);
- object38.getMenus().addAll(object39, object41, object43);
- final var object45 = new javafx.scene.control.MenuButton();
- controller.menuButton = object45;
- object45.setMnemonicParsing(false);
- object45.setText("MenuButton");
- javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
- javafx.scene.layout.GridPane.setRowIndex(object45, 7);
- final var object46 = new javafx.scene.control.MenuItem();
- object46.setMnemonicParsing(false);
- object46.setText("Action 1");
- final var object47 = new javafx.scene.control.MenuItem();
- object47.setMnemonicParsing(false);
- object47.setText("Action 2");
- object45.getItems().addAll(object46, object47);
- final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- javafx.scene.layout.GridPane.setMargin(object45, object48);
- final var object49 = new javafx.scene.control.Pagination();
- controller.pagination = object49;
- object49.setPrefHeight(200.0);
- object49.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object49, 8);
- final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object49.setPadding(object50);
- final var object51 = new javafx.scene.control.PasswordField();
- controller.passwordField = object51;
- object51.setMaxHeight(6.0);
- object51.setMaxWidth(5.0);
- object51.setMinHeight(2.0);
- object51.setMinWidth(1.0);
- object51.setPrefColumnCount(7);
- object51.setPrefHeight(4.0);
- object51.setPrefWidth(3.0);
- javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
- javafx.scene.layout.GridPane.setRowIndex(object51, 8);
- final var object52 = new javafx.scene.control.ProgressBar();
- controller.progressBar = object52;
- object52.setLayoutX(10.0);
- object52.setLayoutY(20.0);
- object52.setPrefWidth(200.0);
- object52.setProgress(0.0);
- javafx.scene.layout.GridPane.setRowIndex(object52, 9);
- final var object53 = new javafx.scene.control.ProgressIndicator();
- controller.progressIndicator = object53;
- object53.setProgress(0.0);
- object53.setRotate(2.0);
- javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
- javafx.scene.layout.GridPane.setRowIndex(object53, 9);
- final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
- object53.setRotationAxis(object54);
- final var object55 = new javafx.scene.control.RadioButton();
- controller.radioButton = object55;
- object55.setMnemonicParsing(false);
- object55.setScaleX(7.0);
- object55.setScaleY(2.0);
- object55.setScaleZ(3.0);
- object55.setText("RadioButton");
- object55.setTranslateX(4.0);
- object55.setTranslateY(5.0);
- object55.setTranslateZ(6.0);
- javafx.scene.layout.GridPane.setRowIndex(object55, 10);
- final var object56 = new javafx.scene.control.ScrollBar();
- controller.scrollBarH = object56;
- javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
- javafx.scene.layout.GridPane.setRowIndex(object56, 10);
- final var object57 = new javafx.scene.control.ScrollBar();
- controller.scrollBarV = object57;
- object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object57, 11);
- final var object58 = new javafx.scene.control.Separator();
- controller.separatorH = object58;
- object58.setOnDragDetected(controller::dragDetected);
- object58.setOnDragDone(controller::dragDone);
- object58.setOnDragDropped(controller::dragDropped);
- object58.setOnDragEntered(controller::dragEntered);
- object58.setOnDragExited(controller::dragExited);
- object58.setOnDragOver(controller::dragOver);
- object58.setOnMouseDragEntered(controller::mouseDragEntered);
- object58.setOnMouseDragExited(controller::mouseDragExited);
- object58.setOnMouseDragOver(controller::mouseDragOver);
- object58.setOnMouseDragReleased(controller::mouseDragReleased);
- object58.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
- javafx.scene.layout.GridPane.setRowIndex(object58, 11);
- final var object59 = new javafx.scene.control.Separator();
- controller.separatorV = object59;
- object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
- object59.setPrefHeight(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object59, 12);
- final var object60 = new javafx.scene.control.Slider();
- controller.sliderH = object60;
- object60.setOnContextMenuRequested(controller::contextMenuRequested);
- object60.setOnMouseClicked(e -> controller.mouseClicked());
- object60.setOnMouseDragged(controller::mouseDragged);
- object60.setOnMouseEntered(controller::mouseEntered);
- object60.setOnMouseExited(controller::mouseExited);
- object60.setOnMouseMoved(controller::mouseMoved);
- object60.setOnMousePressed(controller::mousePressed);
- object60.setOnMouseReleased(controller::mouseReleased);
- object60.setOnScroll(controller::onScroll);
- object60.setOnScrollFinished(controller::onScrollFinished);
- object60.setOnScrollStarted(controller::onScrollStarted);
- javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
- javafx.scene.layout.GridPane.setRowIndex(object60, 12);
- final var object61 = new javafx.scene.control.Slider();
- controller.sliderV = object61;
- object61.setOnZoom(controller::onZoom);
- object61.setOnZoomFinished(controller::onZoomFinished);
- object61.setOnZoomStarted(controller::onZoomStarted);
- object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object61, 13);
- final var object62 = new javafx.scene.control.Spinner();
- controller.spinner = object62;
- javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
- javafx.scene.layout.GridPane.setRowIndex(object62, 13);
- final var object63 = new javafx.scene.control.SplitMenuButton();
- controller.splitMenuButton = object63;
- object63.setMnemonicParsing(false);
- object63.setText("SplitMenuButton");
- javafx.scene.layout.GridPane.setRowIndex(object63, 14);
- final var object64 = new javafx.scene.control.MenuItem();
- controller.item1 = object64;
- object64.setMnemonicParsing(false);
- object64.setText("Action 1");
- final var object65 = new javafx.scene.control.MenuItem();
- controller.item2 = object65;
- object65.setMnemonicParsing(false);
- object65.setText("Action 2");
- object63.getItems().addAll(object64, object65);
- final var object66 = new javafx.scene.control.TableView();
- controller.tableView = object66;
- object66.setPrefHeight(200.0);
- object66.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
- javafx.scene.layout.GridPane.setRowIndex(object66, 14);
- final var object67 = new javafx.scene.control.TableColumn();
- controller.tableColumn1 = object67;
- object67.setPrefWidth(75.0);
- object67.setText("C1");
- final var object68 = new javafx.scene.control.TableColumn();
- controller.tableColumn2 = object68;
- object68.setPrefWidth(75.0);
- object68.setText("C2");
- object66.getColumns().addAll(object67, object68);
- final var object69 = new javafx.scene.control.TextArea();
- controller.textArea = object69;
- object69.setPrefHeight(200.0);
- object69.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object69, 15);
- final var object70 = new javafx.scene.control.TextField();
- controller.textField = object70;
- javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
- javafx.scene.layout.GridPane.setRowIndex(object70, 15);
- final var object71 = new javafx.scene.control.ToggleButton();
- object71.setMnemonicParsing(false);
- object71.setOnAction(controller::onAction);
- object71.setOnRotate(controller::onRotate);
- object71.setOnRotationFinished(controller::onRotationFinished);
- object71.setOnRotationStarted(controller::onRotationStarted);
- object71.setText("ToggleButton");
- javafx.scene.layout.GridPane.setRowIndex(object71, 16);
- final var object72 = new javafx.scene.control.TreeTableView>();
- controller.treeTableView = object72;
- object72.setPrefHeight(200.0);
- object72.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
- javafx.scene.layout.GridPane.setRowIndex(object72, 16);
- final var object73 = new javafx.scene.control.TreeTableColumn, String>();
- controller.treeTableColumn1 = object73;
- object73.setOnEditCancel(controller::onEditCancel);
- object73.setOnEditCommit(controller::onEditCommit);
- object73.setOnEditStart(controller::onEditStart);
- object73.setPrefWidth(75.0);
- object73.setText("C1");
- final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
- controller.treeTableColumn2 = object74;
- object74.setPrefWidth(75.0);
- object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
- object74.setText("C2");
- object72.getColumns().addAll(object73, object74);
- final var object75 = new javafx.scene.control.TreeView();
- controller.treeView = object75;
- object75.setOnSwipeDown(controller::onSwipeDown);
- object75.setOnSwipeLeft(controller::onSwipeLeft);
- object75.setOnSwipeRight(controller::onSwipeRight);
- object75.setOnSwipeUp(controller::onSwipeUp);
- object75.setPrefHeight(200.0);
- object75.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object75, 17);
- final var object76 = new javafx.scene.web.WebView();
- controller.webView = object76;
- object76.setOnTouchMoved(controller::onTouchMoved);
- object76.setOnTouchPressed(controller::onTouchPressed);
- object76.setOnTouchReleased(controller::onTouchReleased);
- object76.setOnTouchStationary(controller::onTouchStationary);
- object76.setPrefHeight(200.0);
- object76.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
- javafx.scene.layout.GridPane.setRowIndex(object76, 17);
- object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
- controller.initialize();
- loaded = true;
- return object0;
- }
-
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.IncludeController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/AssignTestView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/AssignTestView.java
deleted file mode 100644
index af5acb0..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/AssignTestView.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class AssignTestView {
-
- private final Map, Object> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.TestController controller;
-
- /**
- * Instantiates a new AssignTestView with no nested controllers and no resource bundle
- *
- * @param controller The controller
- */
- public AssignTestView(final com.github.gtache.fxml.compiler.loader.TestController controller) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controller), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new AssignTestView with no nested controllers
- *
- * @param controller The controller
- * @param resourceBundle The resource bundle
- */
- public AssignTestView(final com.github.gtache.fxml.compiler.loader.TestController controller, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controller), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new AssignTestView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- */
- public AssignTestView(final Map, Object> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new AssignTestView with nested controllers
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public AssignTestView(final Map, Object> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- controller = (com.github.gtache.fxml.compiler.loader.TestController) controllersMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- final var object0 = new javafx.scene.layout.BorderPane();
- final var object1 = new javafx.scene.layout.VBox();
- javafx.scene.layout.BorderPane.setAlignment(object1, javafx.geometry.Pos.CENTER);
- final var object2 = new javafx.scene.layout.HBox();
- object2.setAlignment(javafx.geometry.Pos.CENTER);
- object2.setSpacing(10.0);
- final var object3 = new javafx.scene.control.Slider();
- controller.playSlider = object3;
- javafx.scene.layout.HBox.setHgrow(object3, javafx.scene.layout.Priority.ALWAYS);
- final var object4 = new javafx.geometry.Insets(0, 0, 0, 10.0);
- object3.setPadding(object4);
- final var object5 = new javafx.scene.control.Label();
- controller.playLabel = object5;
- object5.setText("Label");
- final var object6 = new javafx.geometry.Insets(0, 10.0, 0, 0);
- object5.setPadding(object6);
- object2.getChildren().addAll(object3, object5);
- final var object7 = new javafx.geometry.Insets(10.0, 0, 0, 0);
- object2.setPadding(object7);
- final var object8 = new javafx.scene.layout.HBox();
- object8.setAlignment(javafx.geometry.Pos.CENTER);
- object8.setSpacing(10.0);
- final var object9 = new javafx.scene.control.Button();
- controller.playButton = object9;
- object9.setMnemonicParsing(false);
- object9.setOnAction(controller::playPressed);
- final var object10 = new javafx.geometry.Insets(0, 20.0, 0, 0);
- javafx.scene.layout.HBox.setMargin(object9, object10);
- final var object11 = new javafx.scene.control.Label();
- object11.setText(bundle.getString("media.volume.label"));
- final var object12 = new javafx.scene.control.Slider();
- controller.volumeSlider = object12;
- object12.setValue(100);
- final var object13 = new javafx.scene.control.Label();
- controller.volumeValueLabel = object13;
- object13.setText("Label");
- final var class0 = includeControllersMap.get("includeView.fxml");
- final var map0 = new HashMap<>(resourceBundlesMap);
- final var bundle0 = ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle");
- map0.put(class0, bundle0);
- final var view0 = new com.github.gtache.fxml.compiler.loader.AssignIncludeView(controllersMap, includeControllersMap, map0);
- final var object14 = view0.load();
- final var controller0 = view0.controller();
- controller.includeController = controller0;
- object8.getChildren().addAll(object9, object11, object12, object13, object14);
- final var object15 = new javafx.geometry.Insets(10.0, 10.0, 10.0, 10.0);
- object8.setPadding(object15);
- object1.getChildren().addAll(object2, object8);
- object0.setBottom(object1);
- final var object16 = new javafx.scene.layout.VBox();
- controller.vbox = object16;
- final var object17 = new javafx.scene.control.ToolBar();
- controller.toolBar = object17;
- final var object18 = new javafx.scene.control.TitledPane();
- controller.titledPane = object18;
- final var object19 = new javafx.scene.layout.TilePane();
- controller.tilePane = object19;
- final var object20 = new javafx.scene.text.TextFlow();
- controller.textFlow = object20;
- final var object21 = new javafx.scene.control.TabPane();
- controller.tabPane = object21;
- final var object22 = new javafx.scene.control.Tab();
- controller.tab = object22;
- final var object23 = new javafx.scene.layout.StackPane();
- controller.stackPane = object23;
- final var object24 = new javafx.scene.control.SplitPane();
- controller.splitPane = object24;
- final var object25 = new javafx.scene.control.ScrollPane();
- controller.scrollPane = object25;
- final var object26 = new javafx.scene.layout.Pane();
- controller.pane = object26;
- final var object27 = new javafx.scene.layout.HBox();
- controller.hbox = object27;
- final var object28 = new javafx.scene.Group();
- controller.group = object28;
- final var object29 = new javafx.scene.layout.GridPane();
- controller.gridPane = object29;
- final var object30 = new javafx.scene.layout.ColumnConstraints();
- controller.columnConstraints = object30;
- object30.setHgrow(javafx.scene.layout.Priority.SOMETIMES);
- object30.setMinWidth(10.0);
- object29.getColumnConstraints().addAll(object30);
- final var object31 = new javafx.scene.layout.RowConstraints();
- object31.setMinHeight(10.0);
- object31.setVgrow(javafx.scene.layout.Priority.SOMETIMES);
- object29.getRowConstraints().addAll(object31);
- final var object32 = new javafx.scene.layout.FlowPane();
- controller.flowPane = object32;
- final var object33 = new javafx.scene.control.DialogPane();
- controller.dialogPane = object33;
- final var object34 = new javafx.scene.control.ButtonBar();
- controller.buttonBar = object34;
- final var object35 = new javafx.scene.layout.AnchorPane();
- controller.anchorPane = object35;
- final var object36 = new javafx.scene.control.Label();
- object36.setManaged(false);
- object35.getChildren().addAll(object36);
- object34.getButtons().addAll(object35);
- object33.setContent(object34);
- object32.getChildren().addAll(object33);
- object29.getChildren().addAll(object32);
- object28.getChildren().addAll(object29);
- object27.getChildren().addAll(object28);
- object26.getChildren().addAll(object27);
- object25.setContent(object26);
- object24.getItems().addAll(object25);
- object23.getChildren().addAll(object24);
- object22.setContent(object23);
- object21.getTabs().addAll(object22);
- object20.getChildren().addAll(object21);
- object19.getChildren().addAll(object20);
- object18.setContent(object19);
- object17.getItems().addAll(object18);
- object16.getChildren().addAll(object17);
- object0.setCenter(object16);
- controller.initialize();
- loaded = true;
- return object0;
- }
-
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.TestController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
\ No newline at end of file
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/CreationBenchmark.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/CreationBenchmark.java
deleted file mode 100644
index 14d93af..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/CreationBenchmark.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import javafx.application.Platform;
-import javafx.fxml.FXMLLoader;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.Fork;
-import org.openjdk.jmh.annotations.Level;
-import org.openjdk.jmh.annotations.Scope;
-import org.openjdk.jmh.annotations.Setup;
-import org.openjdk.jmh.annotations.State;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.concurrent.CompletableFuture;
-
-@Fork(1)
-@State(Scope.Benchmark)
-public class CreationBenchmark {
-
- public static void main(final String[] args) throws java.io.IOException {
- org.openjdk.jmh.Main.main(args);
- }
-
- @Setup(Level.Trial)
- public void setup() {
- Platform.startup(() -> {
- });
- }
-
- @Benchmark
- public Object useFXMLLoader() {
- return CompletableFuture.supplyAsync(() -> {
- final var loader = new FXMLLoader(getClass().getResource("/com/github/gtache/fxml/compiler/loader/includeView.fxml"));
- loader.setResources(ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle"));
- try {
- return loader.load();
- } catch (final IOException e) {
- throw new RuntimeException(e);
- }
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useFXMLLoaderInclude() {
- return CompletableFuture.supplyAsync(() -> {
- final var loader = new FXMLLoader(getClass().getResource("/com/github/gtache/fxml/compiler/loader/testView.fxml"));
- loader.setResources(ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.TestBundle"));
- try {
- return loader.load();
- } catch (final IOException e) {
- throw new RuntimeException(e);
- }
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useReflection() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new ReflectionIncludeView(new IncludeController(), ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle"));
- return view.load();
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useReflectionInclude() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new ReflectionTestView(Map.of(TestController.class, new TestController(), IncludeController.class, new IncludeController()), Map.of("includeView.fxml", IncludeController.class),
- Map.of(TestController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.TestBundle"),
- IncludeController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle")));
- return view.load();
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useAssignment() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new AssignIncludeView(new IncludeController(), ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle"));
- return view.load();
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useAssignmentInclude() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new AssignTestView(Map.of(TestController.class, new TestController(), IncludeController.class, new IncludeController()), Map.of("includeView.fxml", IncludeController.class),
- Map.of(TestController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.TestBundle"),
- IncludeController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle")));
- return view.load();
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useFactory() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new FactoryIncludeView(c -> new IncludeController(), ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle"));
- return view.load();
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useFactoryInclude() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new FactoryIncludeView(Map.of(TestController.class, c -> new TestController(), IncludeController.class, c -> new IncludeController()), Map.of("includeView.fxml", IncludeController.class),
- Map.of(TestController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.TestBundle"),
- IncludeController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle")));
- return view.load();
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useSetters() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new SettersIncludeView(new IncludeController(), ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle"));
- return view.load();
- }, Platform::runLater).join();
- }
-
- @Benchmark
- public Object useSettersInclude() {
- return CompletableFuture.supplyAsync(() -> {
- final var view = new SettersIncludeView(Map.of(TestController.class, new TestController(), IncludeController.class, new IncludeController()), Map.of("includeView.fxml", IncludeController.class),
- Map.of(TestController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.TestBundle"),
- IncludeController.class, ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle")));
- return view.load();
- }, Platform::runLater).join();
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/FactoryIncludeView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/FactoryIncludeView.java
deleted file mode 100644
index 5a2e9f7..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/FactoryIncludeView.java
+++ /dev/null
@@ -1,444 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import com.github.gtache.fxml.compiler.ControllerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class FactoryIncludeView {
-
- private final Map, ControllerFactory>> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.IncludeController controller;
-
- /**
- * Instantiates a new FactoryIncludeView with no nested controllers and no resource bundle
- *
- * @param controllerFactory The controller factory
- */
- public FactoryIncludeView(final ControllerFactory controllerFactory) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controllerFactory), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new FactoryIncludeView with no nested controllers
- *
- * @param controllerFactory The controller factory
- * @param resourceBundle The resource bundle
- */
- public FactoryIncludeView(final ControllerFactory controllerFactory, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controllerFactory), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new FactoryIncludeView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller factory
- * @param includeControllersMap The map of source to controller class
- */
- public FactoryIncludeView(final Map, ControllerFactory>> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new FactoryIncludeView with nested controllers
- *
- * @param controllersMap The map of controller class to controller factory
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public FactoryIncludeView(final Map, ControllerFactory>> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- final var fieldMap = new HashMap();
- final var object0 = new javafx.scene.layout.GridPane();
- fieldMap.put("gridPane", object0);
- final var object1 = new javafx.scene.layout.RowConstraints();
- final var object2 = new javafx.scene.layout.RowConstraints();
- final var object3 = new javafx.scene.layout.RowConstraints();
- final var object4 = new javafx.scene.layout.RowConstraints();
- final var object5 = new javafx.scene.layout.RowConstraints();
- final var object6 = new javafx.scene.layout.RowConstraints();
- final var object7 = new javafx.scene.layout.RowConstraints();
- final var object8 = new javafx.scene.layout.RowConstraints();
- final var object9 = new javafx.scene.layout.RowConstraints();
- final var object10 = new javafx.scene.layout.RowConstraints();
- final var object11 = new javafx.scene.layout.RowConstraints();
- final var object12 = new javafx.scene.layout.RowConstraints();
- final var object13 = new javafx.scene.layout.RowConstraints();
- final var object14 = new javafx.scene.layout.RowConstraints();
- final var object15 = new javafx.scene.layout.RowConstraints();
- final var object16 = new javafx.scene.layout.RowConstraints();
- final var object17 = new javafx.scene.layout.RowConstraints();
- final var object18 = new javafx.scene.layout.RowConstraints();
- object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
- final var object19 = new javafx.scene.layout.ColumnConstraints();
- final var object20 = new javafx.scene.layout.ColumnConstraints();
- final var object21 = new javafx.scene.layout.ColumnConstraints();
- object21.setMinWidth(10.0);
- object21.setPrefWidth(100.0);
- object0.getColumnConstraints().addAll(object19, object20, object21);
- final var object22 = new javafx.scene.control.Button();
- fieldMap.put("button", object22);
- object22.setMnemonicParsing(false);
- object22.setText("Button");
- final var object23 = new javafx.scene.control.CheckBox();
- fieldMap.put("checkBox", object23);
- object23.setIndeterminate(true);
- object23.setMnemonicParsing(false);
- object23.setText("CheckBox");
- javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
- final var object24 = new javafx.scene.control.ChoiceBox();
- fieldMap.put("choiceBox", object24);
- object24.setCacheShape(false);
- object24.setCenterShape(false);
- object24.setDisable(true);
- object24.setFocusTraversable(false);
- object24.setPrefWidth(150.0);
- object24.setScaleShape(false);
- object24.setVisible(false);
- javafx.scene.layout.GridPane.setRowIndex(object24, 1);
- final var object25 = new javafx.scene.control.ColorPicker();
- fieldMap.put("colorPicker", object25);
- object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
- object25.setOpacity(0.5);
- javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
- javafx.scene.layout.GridPane.setRowIndex(object25, 1);
- final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
- fieldMap.put("color", object26);
- object25.setValue(object26);
- final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object25.setOpaqueInsets(object27);
- final var object28 = new javafx.scene.control.ComboBox();
- fieldMap.put("comboBox", object28);
- object28.setEditable(true);
- object28.setPrefWidth(150.0);
- object28.setPromptText("Text");
- object28.setVisibleRowCount(5);
- javafx.scene.layout.GridPane.setRowIndex(object28, 2);
- final var object29 = javafx.scene.Cursor.CLOSED_HAND;
- object28.setCursor(object29);
- final var object30 = new javafx.scene.effect.Bloom();
- object28.setEffect(object30);
- final var object31 = new javafx.scene.control.DatePicker();
- fieldMap.put("datePicker", object31);
- object31.setShowWeekNumbers(true);
- object31.setStyle("-fx-background-color: #ffffff;");
- javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
- javafx.scene.layout.GridPane.setRowIndex(object31, 2);
- final var object32 = new javafx.scene.web.HTMLEditor();
- fieldMap.put("htmlEditor", object32);
- object32.setHtmlText("");
- object32.setPrefHeight(200.0);
- object32.setPrefWidth(506.0);
- object32.getStyleClass().addAll("clazz");
- object32.getStylesheets().addAll("@style.css");
- javafx.scene.layout.GridPane.setRowIndex(object32, 3);
- final var object33 = new javafx.scene.control.Hyperlink();
- fieldMap.put("hyperlink", object33);
- object33.setText("Hyperlink");
- javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
- javafx.scene.layout.GridPane.setRowIndex(object33, 3);
- final var object34 = new javafx.scene.image.ImageView();
- fieldMap.put("imageView", object34);
- object34.setFitHeight(150.0);
- object34.setFitWidth(200.0);
- object34.setPickOnBounds(true);
- object34.setPreserveRatio(true);
- javafx.scene.layout.GridPane.setRowIndex(object34, 4);
- final var object35 = new javafx.scene.control.Label();
- fieldMap.put("label", object35);
- object35.setAccessibleHelp("TTTTT");
- object35.setAccessibleText("TTT");
- object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
- object35.setCache(true);
- object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
- object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
- object35.setMnemonicParsing(true);
- object35.setMouseTransparent(true);
- object35.setText(bundle.getString("include.label"));
- javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
- javafx.scene.layout.GridPane.setRowIndex(object35, 4);
- final var object36 = new javafx.scene.control.ListView();
- fieldMap.put("listView", object36);
- object36.setFixedCellSize(20.0);
- object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
- object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
- object36.setPrefHeight(200.0);
- object36.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object36, 5);
- final var object37 = new javafx.scene.media.MediaView();
- fieldMap.put("mediaView", object37);
- object37.setFitHeight(200.0);
- object37.setFitWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
- javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
- javafx.scene.layout.GridPane.setRowIndex(object37, 5);
- javafx.scene.layout.GridPane.setRowSpan(object37, 2);
- final var object38 = new javafx.scene.control.MenuBar();
- fieldMap.put("menuBar", object38);
- javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
- javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
- javafx.scene.layout.GridPane.setRowIndex(object38, 7);
- javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
- javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
- final var object39 = new javafx.scene.control.Menu();
- fieldMap.put("menu1", object39);
- object39.setMnemonicParsing(false);
- object39.setText("File");
- final var object40 = new javafx.scene.control.MenuItem();
- fieldMap.put("menuItem1", object40);
- object40.setMnemonicParsing(false);
- object40.setText("Close");
- object39.getItems().addAll(object40);
- final var object41 = new javafx.scene.control.Menu();
- object41.setMnemonicParsing(false);
- object41.setText("Edit");
- final var object42 = new javafx.scene.control.MenuItem();
- object42.setMnemonicParsing(false);
- object42.setText("Delete");
- object41.getItems().addAll(object42);
- final var object43 = new javafx.scene.control.Menu();
- object43.setMnemonicParsing(false);
- object43.setText("Help");
- final var object44 = new javafx.scene.control.MenuItem();
- object44.setMnemonicParsing(false);
- object44.setText("About");
- object43.getItems().addAll(object44);
- object38.getMenus().addAll(object39, object41, object43);
- final var object45 = new javafx.scene.control.MenuButton();
- fieldMap.put("menuButton", object45);
- object45.setMnemonicParsing(false);
- object45.setText("MenuButton");
- javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
- javafx.scene.layout.GridPane.setRowIndex(object45, 7);
- final var object46 = new javafx.scene.control.MenuItem();
- object46.setMnemonicParsing(false);
- object46.setText("Action 1");
- final var object47 = new javafx.scene.control.MenuItem();
- object47.setMnemonicParsing(false);
- object47.setText("Action 2");
- object45.getItems().addAll(object46, object47);
- final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- javafx.scene.layout.GridPane.setMargin(object45, object48);
- final var object49 = new javafx.scene.control.Pagination();
- fieldMap.put("pagination", object49);
- object49.setPrefHeight(200.0);
- object49.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object49, 8);
- final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object49.setPadding(object50);
- final var object51 = new javafx.scene.control.PasswordField();
- fieldMap.put("passwordField", object51);
- object51.setMaxHeight(6.0);
- object51.setMaxWidth(5.0);
- object51.setMinHeight(2.0);
- object51.setMinWidth(1.0);
- object51.setPrefColumnCount(7);
- object51.setPrefHeight(4.0);
- object51.setPrefWidth(3.0);
- javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
- javafx.scene.layout.GridPane.setRowIndex(object51, 8);
- final var object52 = new javafx.scene.control.ProgressBar();
- fieldMap.put("progressBar", object52);
- object52.setLayoutX(10.0);
- object52.setLayoutY(20.0);
- object52.setPrefWidth(200.0);
- object52.setProgress(0.0);
- javafx.scene.layout.GridPane.setRowIndex(object52, 9);
- final var object53 = new javafx.scene.control.ProgressIndicator();
- fieldMap.put("progressIndicator", object53);
- object53.setProgress(0.0);
- object53.setRotate(2.0);
- javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
- javafx.scene.layout.GridPane.setRowIndex(object53, 9);
- final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
- object53.setRotationAxis(object54);
- final var object55 = new javafx.scene.control.RadioButton();
- fieldMap.put("radioButton", object55);
- object55.setMnemonicParsing(false);
- object55.setScaleX(7.0);
- object55.setScaleY(2.0);
- object55.setScaleZ(3.0);
- object55.setText("RadioButton");
- object55.setTranslateX(4.0);
- object55.setTranslateY(5.0);
- object55.setTranslateZ(6.0);
- javafx.scene.layout.GridPane.setRowIndex(object55, 10);
- final var object56 = new javafx.scene.control.ScrollBar();
- fieldMap.put("scrollBarH", object56);
- javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
- javafx.scene.layout.GridPane.setRowIndex(object56, 10);
- final var object57 = new javafx.scene.control.ScrollBar();
- fieldMap.put("scrollBarV", object57);
- object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object57, 11);
- final var object58 = new javafx.scene.control.Separator();
- fieldMap.put("separatorH", object58);
- object58.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
- javafx.scene.layout.GridPane.setRowIndex(object58, 11);
- final var object59 = new javafx.scene.control.Separator();
- fieldMap.put("separatorV", object59);
- object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
- object59.setPrefHeight(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object59, 12);
- final var object60 = new javafx.scene.control.Slider();
- fieldMap.put("sliderH", object60);
- javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
- javafx.scene.layout.GridPane.setRowIndex(object60, 12);
- final var object61 = new javafx.scene.control.Slider();
- fieldMap.put("sliderV", object61);
- object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object61, 13);
- final var object62 = new javafx.scene.control.Spinner();
- fieldMap.put("spinner", object62);
- javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
- javafx.scene.layout.GridPane.setRowIndex(object62, 13);
- final var object63 = new javafx.scene.control.SplitMenuButton();
- fieldMap.put("splitMenuButton", object63);
- object63.setMnemonicParsing(false);
- object63.setText("SplitMenuButton");
- javafx.scene.layout.GridPane.setRowIndex(object63, 14);
- final var object64 = new javafx.scene.control.MenuItem();
- fieldMap.put("item1", object64);
- object64.setMnemonicParsing(false);
- object64.setText("Action 1");
- final var object65 = new javafx.scene.control.MenuItem();
- fieldMap.put("item2", object65);
- object65.setMnemonicParsing(false);
- object65.setText("Action 2");
- object63.getItems().addAll(object64, object65);
- final var object66 = new javafx.scene.control.TableView();
- fieldMap.put("tableView", object66);
- object66.setPrefHeight(200.0);
- object66.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
- javafx.scene.layout.GridPane.setRowIndex(object66, 14);
- final var object67 = new javafx.scene.control.TableColumn();
- fieldMap.put("tableColumn1", object67);
- object67.setPrefWidth(75.0);
- object67.setText("C1");
- final var object68 = new javafx.scene.control.TableColumn();
- fieldMap.put("tableColumn2", object68);
- object68.setPrefWidth(75.0);
- object68.setText("C2");
- object66.getColumns().addAll(object67, object68);
- final var object69 = new javafx.scene.control.TextArea();
- fieldMap.put("textArea", object69);
- object69.setPrefHeight(200.0);
- object69.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object69, 15);
- final var object70 = new javafx.scene.control.TextField();
- fieldMap.put("textField", object70);
- javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
- javafx.scene.layout.GridPane.setRowIndex(object70, 15);
- final var object71 = new javafx.scene.control.ToggleButton();
- object71.setMnemonicParsing(false);
- object71.setText("ToggleButton");
- javafx.scene.layout.GridPane.setRowIndex(object71, 16);
- final var object72 = new javafx.scene.control.TreeTableView>();
- fieldMap.put("treeTableView", object72);
- object72.setPrefHeight(200.0);
- object72.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
- javafx.scene.layout.GridPane.setRowIndex(object72, 16);
- final var object73 = new javafx.scene.control.TreeTableColumn, String>();
- fieldMap.put("treeTableColumn1", object73);
- object73.setPrefWidth(75.0);
- object73.setText("C1");
- final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
- fieldMap.put("treeTableColumn2", object74);
- object74.setPrefWidth(75.0);
- object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
- object74.setText("C2");
- object72.getColumns().addAll(object73, object74);
- final var object75 = new javafx.scene.control.TreeView();
- fieldMap.put("treeView", object75);
- object75.setPrefHeight(200.0);
- object75.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object75, 17);
- final var object76 = new javafx.scene.web.WebView();
- fieldMap.put("webView", object76);
- object76.setPrefHeight(200.0);
- object76.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
- javafx.scene.layout.GridPane.setRowIndex(object76, 17);
- object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
- final var controllerFactory = controllersMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- controller = (com.github.gtache.fxml.compiler.loader.IncludeController) controllerFactory.create(fieldMap);
- object0.setOnInputMethodTextChanged(controller::inputMethodTextChanged);
- object0.setOnKeyPressed(e -> controller.keyPressed());
- object0.setOnKeyReleased(controller::keyReleased);
- object0.setOnKeyTyped(controller::keyTyped);
- object58.setOnDragDetected(controller::dragDetected);
- object58.setOnDragDone(controller::dragDone);
- object58.setOnDragDropped(controller::dragDropped);
- object58.setOnDragEntered(controller::dragEntered);
- object58.setOnDragExited(controller::dragExited);
- object58.setOnDragOver(controller::dragOver);
- object58.setOnMouseDragEntered(controller::mouseDragEntered);
- object58.setOnMouseDragExited(controller::mouseDragExited);
- object58.setOnMouseDragOver(controller::mouseDragOver);
- object58.setOnMouseDragReleased(controller::mouseDragReleased);
- object60.setOnContextMenuRequested(controller::contextMenuRequested);
- object60.setOnMouseClicked(e -> controller.mouseClicked());
- object60.setOnMouseDragged(controller::mouseDragged);
- object60.setOnMouseEntered(controller::mouseEntered);
- object60.setOnMouseExited(controller::mouseExited);
- object60.setOnMouseMoved(controller::mouseMoved);
- object60.setOnMousePressed(controller::mousePressed);
- object60.setOnMouseReleased(controller::mouseReleased);
- object60.setOnScroll(controller::onScroll);
- object60.setOnScrollFinished(controller::onScrollFinished);
- object60.setOnScrollStarted(controller::onScrollStarted);
- object61.setOnZoom(controller::onZoom);
- object61.setOnZoomFinished(controller::onZoomFinished);
- object61.setOnZoomStarted(controller::onZoomStarted);
- object71.setOnAction(controller::onAction);
- object71.setOnRotate(controller::onRotate);
- object71.setOnRotationFinished(controller::onRotationFinished);
- object71.setOnRotationStarted(controller::onRotationStarted);
- object73.setOnEditCancel(controller::onEditCancel);
- object73.setOnEditCommit(controller::onEditCommit);
- object73.setOnEditStart(controller::onEditStart);
- object75.setOnSwipeDown(controller::onSwipeDown);
- object75.setOnSwipeLeft(controller::onSwipeLeft);
- object75.setOnSwipeRight(controller::onSwipeRight);
- object75.setOnSwipeUp(controller::onSwipeUp);
- object76.setOnTouchMoved(controller::onTouchMoved);
- object76.setOnTouchPressed(controller::onTouchPressed);
- object76.setOnTouchReleased(controller::onTouchReleased);
- object76.setOnTouchStationary(controller::onTouchStationary);
- controller.initialize();
- loaded = true;
- return object0;
- }
-
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.IncludeController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/FactoryTestView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/FactoryTestView.java
deleted file mode 100644
index e425e0a..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/FactoryTestView.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import com.github.gtache.fxml.compiler.ControllerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class FactoryTestView {
-
- private final Map, ControllerFactory>> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.TestController controller;
-
- /**
- * Instantiates a new FactoryTestView with no nested controllers and no resource bundle
- *
- * @param controllerFactory The controller factory
- */
- public FactoryTestView(final ControllerFactory controllerFactory) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controllerFactory), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new FactoryTestView with no nested controllers
- *
- * @param controllerFactory The controller factory
- * @param resourceBundle The resource bundle
- */
- public FactoryTestView(final ControllerFactory controllerFactory, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controllerFactory), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new FactoryTestView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller factory
- * @param includeControllersMap The map of source to controller class
- */
- public FactoryTestView(final Map, ControllerFactory>> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new FactoryTestView with nested controllers
- *
- * @param controllersMap The map of controller class to controller factory
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public FactoryTestView(final Map, ControllerFactory>> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- final var fieldMap = new HashMap();
- final var object0 = new javafx.scene.layout.BorderPane();
- final var object1 = new javafx.scene.layout.VBox();
- javafx.scene.layout.BorderPane.setAlignment(object1, javafx.geometry.Pos.CENTER);
- final var object2 = new javafx.scene.layout.HBox();
- object2.setAlignment(javafx.geometry.Pos.CENTER);
- object2.setSpacing(10.0);
- final var object3 = new javafx.scene.control.Slider();
- fieldMap.put("playSlider", object3);
- javafx.scene.layout.HBox.setHgrow(object3, javafx.scene.layout.Priority.ALWAYS);
- final var object4 = new javafx.geometry.Insets(0, 0, 0, 10.0);
- object3.setPadding(object4);
- final var object5 = new javafx.scene.control.Label();
- fieldMap.put("playLabel", object5);
- object5.setText("Label");
- final var object6 = new javafx.geometry.Insets(0, 10.0, 0, 0);
- object5.setPadding(object6);
- object2.getChildren().addAll(object3, object5);
- final var object7 = new javafx.geometry.Insets(10.0, 0, 0, 0);
- object2.setPadding(object7);
- final var object8 = new javafx.scene.layout.HBox();
- object8.setAlignment(javafx.geometry.Pos.CENTER);
- object8.setSpacing(10.0);
- final var object9 = new javafx.scene.control.Button();
- fieldMap.put("playButton", object9);
- object9.setMnemonicParsing(false);
- final var object10 = new javafx.geometry.Insets(0, 20.0, 0, 0);
- javafx.scene.layout.HBox.setMargin(object9, object10);
- final var object11 = new javafx.scene.control.Label();
- object11.setText(bundle.getString("media.volume.label"));
- final var object12 = new javafx.scene.control.Slider();
- fieldMap.put("volumeSlider", object12);
- object12.setValue(100);
- final var object13 = new javafx.scene.control.Label();
- fieldMap.put("volumeValueLabel", object13);
- object13.setText("Label");
- final var class0 = includeControllersMap.get("includeView.fxml");
- final var map0 = new HashMap<>(resourceBundlesMap);
- final var bundle0 = ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle");
- map0.put(class0, bundle0);
- final var view0 = new com.github.gtache.fxml.compiler.loader.FactoryIncludeView(controllersMap, includeControllersMap, map0);
- final var object14 = view0.load();
- final var controller0 = view0.controller();
- fieldMap.put("includeController", controller0);
- object8.getChildren().addAll(object9, object11, object12, object13, object14);
- final var object15 = new javafx.geometry.Insets(10.0, 10.0, 10.0, 10.0);
- object8.setPadding(object15);
- object1.getChildren().addAll(object2, object8);
- object0.setBottom(object1);
- final var object16 = new javafx.scene.layout.VBox();
- fieldMap.put("vbox", object16);
- final var object17 = new javafx.scene.control.ToolBar();
- fieldMap.put("toolBar", object17);
- final var object18 = new javafx.scene.control.TitledPane();
- fieldMap.put("titledPane", object18);
- final var object19 = new javafx.scene.layout.TilePane();
- fieldMap.put("tilePane", object19);
- final var object20 = new javafx.scene.text.TextFlow();
- fieldMap.put("textFlow", object20);
- final var object21 = new javafx.scene.control.TabPane();
- fieldMap.put("tabPane", object21);
- final var object22 = new javafx.scene.control.Tab();
- fieldMap.put("tab", object22);
- final var object23 = new javafx.scene.layout.StackPane();
- fieldMap.put("stackPane", object23);
- final var object24 = new javafx.scene.control.SplitPane();
- fieldMap.put("splitPane", object24);
- final var object25 = new javafx.scene.control.ScrollPane();
- fieldMap.put("scrollPane", object25);
- final var object26 = new javafx.scene.layout.Pane();
- fieldMap.put("pane", object26);
- final var object27 = new javafx.scene.layout.HBox();
- fieldMap.put("hbox", object27);
- final var object28 = new javafx.scene.Group();
- fieldMap.put("group", object28);
- final var object29 = new javafx.scene.layout.GridPane();
- fieldMap.put("gridPane", object29);
- final var object30 = new javafx.scene.layout.ColumnConstraints();
- fieldMap.put("columnConstraints", object30);
- object30.setHgrow(javafx.scene.layout.Priority.SOMETIMES);
- object30.setMinWidth(10.0);
- object29.getColumnConstraints().addAll(object30);
- final var object31 = new javafx.scene.layout.RowConstraints();
- object31.setMinHeight(10.0);
- object31.setVgrow(javafx.scene.layout.Priority.SOMETIMES);
- object29.getRowConstraints().addAll(object31);
- final var object32 = new javafx.scene.layout.FlowPane();
- fieldMap.put("flowPane", object32);
- final var object33 = new javafx.scene.control.DialogPane();
- fieldMap.put("dialogPane", object33);
- final var object34 = new javafx.scene.control.ButtonBar();
- fieldMap.put("buttonBar", object34);
- final var object35 = new javafx.scene.layout.AnchorPane();
- fieldMap.put("anchorPane", object35);
- final var object36 = new javafx.scene.control.Label();
- object36.setManaged(false);
- object35.getChildren().addAll(object36);
- object34.getButtons().addAll(object35);
- object33.setContent(object34);
- object32.getChildren().addAll(object33);
- object29.getChildren().addAll(object32);
- object28.getChildren().addAll(object29);
- object27.getChildren().addAll(object28);
- object26.getChildren().addAll(object27);
- object25.setContent(object26);
- object24.getItems().addAll(object25);
- object23.getChildren().addAll(object24);
- object22.setContent(object23);
- object21.getTabs().addAll(object22);
- object20.getChildren().addAll(object21);
- object19.getChildren().addAll(object20);
- object18.setContent(object19);
- object17.getItems().addAll(object18);
- object16.getChildren().addAll(object17);
- object0.setCenter(object16);
- final var controllerFactory = controllersMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- controller = (com.github.gtache.fxml.compiler.loader.TestController) controllerFactory.create(fieldMap);
- object9.setOnAction(controller::playPressed);
- controller.initialize();
- loaded = true;
- return object0;
- }
-
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.TestController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/Main.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/Main.java
deleted file mode 100644
index ec7d3b3..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/Main.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import javafx.application.Application;
-
-public class Main {
-
- public static void main(String[] args) {
- Application.launch(TestApp.class);
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/PrintLoadListener.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/PrintLoadListener.java
deleted file mode 100644
index baa60ce..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/PrintLoadListener.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import javafx.fxml.LoadListener;
-
-public class PrintLoadListener implements LoadListener {
-
- @Override
- public void readImportProcessingInstruction(final String target) {
- System.out.println("import : " + target);
- }
-
- @Override
- public void readLanguageProcessingInstruction(final String language) {
- System.out.println("language : " + language);
- }
-
- @Override
- public void readComment(final String comment) {
- System.out.println("comment : " + comment);
- }
-
- @Override
- public void beginInstanceDeclarationElement(final Class> type) {
- System.out.println("begin instance declaration : " + type);
- }
-
- @Override
- public void beginUnknownTypeElement(final String name) {
- System.out.println("begin unknown type : " + name);
- }
-
- @Override
- public void beginIncludeElement() {
- System.out.println("beginInclude");
- }
-
- @Override
- public void beginReferenceElement() {
- System.out.println("beginReference");
- }
-
- @Override
- public void beginCopyElement() {
- System.out.println("beginCopy");
- }
-
- @Override
- public void beginRootElement() {
- System.out.println("beginRoot");
- }
-
- @Override
- public void beginPropertyElement(final String name, final Class> sourceType) {
- System.out.println("begin property : " + name + " (" + sourceType + ")");
- }
-
- @Override
- public void beginUnknownStaticPropertyElement(final String name) {
- System.out.println("begin unknown static property : " + name);
- }
-
- @Override
- public void beginScriptElement() {
- System.out.println("begin script");
- }
-
- @Override
- public void beginDefineElement() {
- System.out.println("begin define");
- }
-
- @Override
- public void readInternalAttribute(final String name, final String value) {
- System.out.println("read internal attribute : " + name + " = " + value);
- }
-
- @Override
- public void readPropertyAttribute(final String name, final Class> sourceType, final String value) {
- System.out.println("read property attribute : " + name + " (" + sourceType + ") = " + value);
- }
-
- @Override
- public void readUnknownStaticPropertyAttribute(final String name, final String value) {
- System.out.println("read unknown static property attribute : " + name + " = " + value);
- }
-
- @Override
- public void readEventHandlerAttribute(final String name, final String value) {
- System.out.println("read event handler attribute : " + name + " = " + value);
- }
-
- @Override
- public void endElement(final Object value) {
- System.out.println("end element : " + value.getClass() + " - " + value);
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/ReflectionIncludeView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/ReflectionIncludeView.java
deleted file mode 100644
index 5b3a460..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/ReflectionIncludeView.java
+++ /dev/null
@@ -1,494 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import javafx.event.Event;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class ReflectionIncludeView {
-
- private final Map, Object> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.IncludeController controller;
-
- /**
- * Instantiates a new ReflectionIncludeView with no nested controllers and no resource bundle
- *
- * @param controller The controller
- */
- public ReflectionIncludeView(final com.github.gtache.fxml.compiler.loader.IncludeController controller) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controller), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new ReflectionIncludeView with no nested controllers
- *
- * @param controller The controller
- * @param resourceBundle The resource bundle
- */
- public ReflectionIncludeView(final com.github.gtache.fxml.compiler.loader.IncludeController controller, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controller), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new ReflectionIncludeView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- */
- public ReflectionIncludeView(final Map, Object> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new ReflectionIncludeView with nested controllers
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public ReflectionIncludeView(final Map, Object> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- controller = (com.github.gtache.fxml.compiler.loader.IncludeController) controllersMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- final var object0 = new javafx.scene.layout.GridPane();
- injectField("gridPane", object0);
- object0.setOnInputMethodTextChanged(e -> callMethod("inputMethodTextChanged", e));
- object0.setOnKeyPressed(e -> callMethod("keyPressed", e));
- object0.setOnKeyReleased(e -> callMethod("keyReleased", e));
- object0.setOnKeyTyped(e -> callMethod("keyTyped", e));
- final var object1 = new javafx.scene.layout.RowConstraints();
- final var object2 = new javafx.scene.layout.RowConstraints();
- final var object3 = new javafx.scene.layout.RowConstraints();
- final var object4 = new javafx.scene.layout.RowConstraints();
- final var object5 = new javafx.scene.layout.RowConstraints();
- final var object6 = new javafx.scene.layout.RowConstraints();
- final var object7 = new javafx.scene.layout.RowConstraints();
- final var object8 = new javafx.scene.layout.RowConstraints();
- final var object9 = new javafx.scene.layout.RowConstraints();
- final var object10 = new javafx.scene.layout.RowConstraints();
- final var object11 = new javafx.scene.layout.RowConstraints();
- final var object12 = new javafx.scene.layout.RowConstraints();
- final var object13 = new javafx.scene.layout.RowConstraints();
- final var object14 = new javafx.scene.layout.RowConstraints();
- final var object15 = new javafx.scene.layout.RowConstraints();
- final var object16 = new javafx.scene.layout.RowConstraints();
- final var object17 = new javafx.scene.layout.RowConstraints();
- final var object18 = new javafx.scene.layout.RowConstraints();
- object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
- final var object19 = new javafx.scene.layout.ColumnConstraints();
- final var object20 = new javafx.scene.layout.ColumnConstraints();
- final var object21 = new javafx.scene.layout.ColumnConstraints();
- object21.setMinWidth(10.0);
- object21.setPrefWidth(100.0);
- object0.getColumnConstraints().addAll(object19, object20, object21);
- final var object22 = new javafx.scene.control.Button();
- injectField("button", object22);
- object22.setMnemonicParsing(false);
- object22.setText("Button");
- final var object23 = new javafx.scene.control.CheckBox();
- injectField("checkBox", object23);
- object23.setIndeterminate(true);
- object23.setMnemonicParsing(false);
- object23.setText("CheckBox");
- javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
- final var object24 = new javafx.scene.control.ChoiceBox<>();
- injectField("choiceBox", object24);
- object24.setCacheShape(false);
- object24.setCenterShape(false);
- object24.setDisable(true);
- object24.setFocusTraversable(false);
- object24.setPrefWidth(150.0);
- object24.setScaleShape(false);
- object24.setVisible(false);
- javafx.scene.layout.GridPane.setRowIndex(object24, 1);
- final var object25 = new javafx.scene.control.ColorPicker();
- injectField("colorPicker", object25);
- object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
- object25.setOpacity(0.5);
- javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
- javafx.scene.layout.GridPane.setRowIndex(object25, 1);
- final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
- injectField("color", object26);
- object25.setValue(object26);
- final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object25.setOpaqueInsets(object27);
- final var object28 = new javafx.scene.control.ComboBox<>();
- injectField("comboBox", object28);
- object28.setEditable(true);
- object28.setPrefWidth(150.0);
- object28.setPromptText("Text");
- object28.setVisibleRowCount(5);
- javafx.scene.layout.GridPane.setRowIndex(object28, 2);
- final var object29 = javafx.scene.Cursor.CLOSED_HAND;
- object28.setCursor(object29);
- final var object30 = new javafx.scene.effect.Bloom();
- object28.setEffect(object30);
- final var object31 = new javafx.scene.control.DatePicker();
- injectField("datePicker", object31);
- object31.setShowWeekNumbers(true);
- object31.setStyle("-fx-background-color: #ffffff;");
- javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
- javafx.scene.layout.GridPane.setRowIndex(object31, 2);
- final var object32 = new javafx.scene.web.HTMLEditor();
- injectField("htmlEditor", object32);
- object32.setHtmlText("");
- object32.setPrefHeight(200.0);
- object32.setPrefWidth(506.0);
- object32.getStyleClass().addAll("clazz");
- object32.getStylesheets().addAll("@style.css");
- javafx.scene.layout.GridPane.setRowIndex(object32, 3);
- final var object33 = new javafx.scene.control.Hyperlink();
- injectField("hyperlink", object33);
- object33.setText("Hyperlink");
- javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
- javafx.scene.layout.GridPane.setRowIndex(object33, 3);
- final var object34 = new javafx.scene.image.ImageView();
- injectField("imageView", object34);
- object34.setFitHeight(150.0);
- object34.setFitWidth(200.0);
- object34.setPickOnBounds(true);
- object34.setPreserveRatio(true);
- javafx.scene.layout.GridPane.setRowIndex(object34, 4);
- final var object35 = new javafx.scene.control.Label();
- injectField("label", object35);
- object35.setAccessibleHelp("TTTTT");
- object35.setAccessibleText("TTT");
- object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
- object35.setCache(true);
- object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
- object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
- object35.setMnemonicParsing(true);
- object35.setMouseTransparent(true);
- object35.setText(bundle.getString("include.label"));
- javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
- javafx.scene.layout.GridPane.setRowIndex(object35, 4);
- final var object36 = new javafx.scene.control.ListView<>();
- injectField("listView", object36);
- object36.setFixedCellSize(20.0);
- object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
- object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
- object36.setPrefHeight(200.0);
- object36.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object36, 5);
- final var object37 = new javafx.scene.media.MediaView();
- injectField("mediaView", object37);
- object37.setFitHeight(200.0);
- object37.setFitWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
- javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
- javafx.scene.layout.GridPane.setRowIndex(object37, 5);
- javafx.scene.layout.GridPane.setRowSpan(object37, 2);
- final var object38 = new javafx.scene.control.MenuBar();
- injectField("menuBar", object38);
- javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
- javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
- javafx.scene.layout.GridPane.setRowIndex(object38, 7);
- javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
- javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
- final var object39 = new javafx.scene.control.Menu();
- injectField("menu1", object39);
- object39.setMnemonicParsing(false);
- object39.setText("File");
- final var object40 = new javafx.scene.control.MenuItem();
- injectField("menuItem1", object40);
- object40.setMnemonicParsing(false);
- object40.setText("Close");
- object39.getItems().addAll(object40);
- final var object41 = new javafx.scene.control.Menu();
- object41.setMnemonicParsing(false);
- object41.setText("Edit");
- final var object42 = new javafx.scene.control.MenuItem();
- object42.setMnemonicParsing(false);
- object42.setText("Delete");
- object41.getItems().addAll(object42);
- final var object43 = new javafx.scene.control.Menu();
- object43.setMnemonicParsing(false);
- object43.setText("Help");
- final var object44 = new javafx.scene.control.MenuItem();
- object44.setMnemonicParsing(false);
- object44.setText("About");
- object43.getItems().addAll(object44);
- object38.getMenus().addAll(object39, object41, object43);
- final var object45 = new javafx.scene.control.MenuButton();
- injectField("menuButton", object45);
- object45.setMnemonicParsing(false);
- object45.setText("MenuButton");
- javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
- javafx.scene.layout.GridPane.setRowIndex(object45, 7);
- final var object46 = new javafx.scene.control.MenuItem();
- object46.setMnemonicParsing(false);
- object46.setText("Action 1");
- final var object47 = new javafx.scene.control.MenuItem();
- object47.setMnemonicParsing(false);
- object47.setText("Action 2");
- object45.getItems().addAll(object46, object47);
- final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- javafx.scene.layout.GridPane.setMargin(object45, object48);
- final var object49 = new javafx.scene.control.Pagination();
- injectField("pagination", object49);
- object49.setPrefHeight(200.0);
- object49.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object49, 8);
- final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object49.setPadding(object50);
- final var object51 = new javafx.scene.control.PasswordField();
- injectField("passwordField", object51);
- object51.setMaxHeight(6.0);
- object51.setMaxWidth(5.0);
- object51.setMinHeight(2.0);
- object51.setMinWidth(1.0);
- object51.setPrefColumnCount(7);
- object51.setPrefHeight(4.0);
- object51.setPrefWidth(3.0);
- javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
- javafx.scene.layout.GridPane.setRowIndex(object51, 8);
- final var object52 = new javafx.scene.control.ProgressBar();
- injectField("progressBar", object52);
- object52.setLayoutX(10.0);
- object52.setLayoutY(20.0);
- object52.setPrefWidth(200.0);
- object52.setProgress(0.0);
- javafx.scene.layout.GridPane.setRowIndex(object52, 9);
- final var object53 = new javafx.scene.control.ProgressIndicator();
- injectField("progressIndicator", object53);
- object53.setProgress(0.0);
- object53.setRotate(2.0);
- javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
- javafx.scene.layout.GridPane.setRowIndex(object53, 9);
- final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
- object53.setRotationAxis(object54);
- final var object55 = new javafx.scene.control.RadioButton();
- injectField("radioButton", object55);
- object55.setMnemonicParsing(false);
- object55.setScaleX(7.0);
- object55.setScaleY(2.0);
- object55.setScaleZ(3.0);
- object55.setText("RadioButton");
- object55.setTranslateX(4.0);
- object55.setTranslateY(5.0);
- object55.setTranslateZ(6.0);
- javafx.scene.layout.GridPane.setRowIndex(object55, 10);
- final var object56 = new javafx.scene.control.ScrollBar();
- injectField("scrollBarH", object56);
- javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
- javafx.scene.layout.GridPane.setRowIndex(object56, 10);
- final var object57 = new javafx.scene.control.ScrollBar();
- injectField("scrollBarV", object57);
- object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object57, 11);
- final var object58 = new javafx.scene.control.Separator();
- injectField("separatorH", object58);
- object58.setOnDragDetected(e -> callMethod("dragDetected", e));
- object58.setOnDragDone(e -> callMethod("dragDone", e));
- object58.setOnDragDropped(e -> callMethod("dragDropped", e));
- object58.setOnDragEntered(e -> callMethod("dragEntered", e));
- object58.setOnDragExited(e -> callMethod("dragExited", e));
- object58.setOnDragOver(e -> callMethod("dragOver", e));
- object58.setOnMouseDragEntered(e -> callMethod("mouseDragEntered", e));
- object58.setOnMouseDragExited(e -> callMethod("mouseDragExited", e));
- object58.setOnMouseDragOver(e -> callMethod("mouseDragOver", e));
- object58.setOnMouseDragReleased(e -> callMethod("mouseDragReleased", e));
- object58.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
- javafx.scene.layout.GridPane.setRowIndex(object58, 11);
- final var object59 = new javafx.scene.control.Separator();
- injectField("separatorV", object59);
- object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
- object59.setPrefHeight(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object59, 12);
- final var object60 = new javafx.scene.control.Slider();
- injectField("sliderH", object60);
- object60.setOnContextMenuRequested(e -> callMethod("contextMenuRequested", e));
- object60.setOnMouseClicked(e -> callMethod("mouseClicked", e));
- object60.setOnMouseDragged(e -> callMethod("mouseDragged", e));
- object60.setOnMouseEntered(e -> callMethod("mouseEntered", e));
- object60.setOnMouseExited(e -> callMethod("mouseExited", e));
- object60.setOnMouseMoved(e -> callMethod("mouseMoved", e));
- object60.setOnMousePressed(e -> callMethod("mousePressed", e));
- object60.setOnMouseReleased(e -> callMethod("mouseReleased", e));
- object60.setOnScroll(e -> callMethod("onScroll", e));
- object60.setOnScrollFinished(e -> callMethod("onScrollFinished", e));
- object60.setOnScrollStarted(e -> callMethod("onScrollStarted", e));
- javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
- javafx.scene.layout.GridPane.setRowIndex(object60, 12);
- final var object61 = new javafx.scene.control.Slider();
- injectField("sliderV", object61);
- object61.setOnZoom(e -> callMethod("onZoom", e));
- object61.setOnZoomFinished(e -> callMethod("onZoomFinished", e));
- object61.setOnZoomStarted(e -> callMethod("onZoomStarted", e));
- object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object61, 13);
- final var object62 = new javafx.scene.control.Spinner<>();
- injectField("spinner", object62);
- javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
- javafx.scene.layout.GridPane.setRowIndex(object62, 13);
- final var object63 = new javafx.scene.control.SplitMenuButton();
- injectField("splitMenuButton", object63);
- object63.setMnemonicParsing(false);
- object63.setText("SplitMenuButton");
- javafx.scene.layout.GridPane.setRowIndex(object63, 14);
- final var object64 = new javafx.scene.control.MenuItem();
- injectField("item1", object64);
- object64.setMnemonicParsing(false);
- object64.setText("Action 1");
- final var object65 = new javafx.scene.control.MenuItem();
- injectField("item2", object65);
- object65.setMnemonicParsing(false);
- object65.setText("Action 2");
- object63.getItems().addAll(object64, object65);
- final var object66 = new javafx.scene.control.TableView<>();
- injectField("tableView", object66);
- object66.setPrefHeight(200.0);
- object66.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
- javafx.scene.layout.GridPane.setRowIndex(object66, 14);
- final var object67 = new javafx.scene.control.TableColumn<>();
- injectField("tableColumn1", object67);
- object67.setPrefWidth(75.0);
- object67.setText("C1");
- final var object68 = new javafx.scene.control.TableColumn<>();
- injectField("tableColumn2", object68);
- object68.setPrefWidth(75.0);
- object68.setText("C2");
- object66.getColumns().addAll(object67, object68);
- final var object69 = new javafx.scene.control.TextArea();
- injectField("textArea", object69);
- object69.setPrefHeight(200.0);
- object69.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object69, 15);
- final var object70 = new javafx.scene.control.TextField();
- injectField("textField", object70);
- javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
- javafx.scene.layout.GridPane.setRowIndex(object70, 15);
- final var object71 = new javafx.scene.control.ToggleButton();
- object71.setMnemonicParsing(false);
- object71.setOnAction(e -> callMethod("onAction", e));
- object71.setOnRotate(e -> callMethod("onRotate", e));
- object71.setOnRotationFinished(e -> callMethod("onRotationFinished", e));
- object71.setOnRotationStarted(e -> callMethod("onRotationStarted", e));
- object71.setText("ToggleButton");
- javafx.scene.layout.GridPane.setRowIndex(object71, 16);
- final var object72 = new javafx.scene.control.TreeTableView<>();
- injectField("treeTableView", object72);
- object72.setPrefHeight(200.0);
- object72.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
- javafx.scene.layout.GridPane.setRowIndex(object72, 16);
- final var object73 = new javafx.scene.control.TreeTableColumn<>();
- injectField("treeTableColumn1", object73);
- object73.setOnEditCancel(e -> callMethod("onEditCancel", e));
- object73.setOnEditCommit(e -> callMethod("onEditCommit", e));
- object73.setOnEditStart(e -> callMethod("onEditStart", e));
- object73.setPrefWidth(75.0);
- object73.setText("C1");
- final var object74 = new javafx.scene.control.TreeTableColumn<>();
- injectField("treeTableColumn2", object74);
- object74.setPrefWidth(75.0);
- object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
- object74.setText("C2");
- object72.getColumns().addAll(object73, object74);
- final var object75 = new javafx.scene.control.TreeView<>();
- injectField("treeView", object75);
- object75.setOnSwipeDown(e -> callMethod("onSwipeDown", e));
- object75.setOnSwipeLeft(e -> callMethod("onSwipeLeft", e));
- object75.setOnSwipeRight(e -> callMethod("onSwipeRight", e));
- object75.setOnSwipeUp(e -> callMethod("onSwipeUp", e));
- object75.setPrefHeight(200.0);
- object75.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object75, 17);
- final var object76 = new javafx.scene.web.WebView();
- injectField("webView", object76);
- object76.setOnTouchMoved(e -> callMethod("onTouchMoved", e));
- object76.setOnTouchPressed(e -> callMethod("onTouchPressed", e));
- object76.setOnTouchReleased(e -> callMethod("onTouchReleased", e));
- object76.setOnTouchStationary(e -> callMethod("onTouchStationary", e));
- object76.setPrefHeight(200.0);
- object76.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
- javafx.scene.layout.GridPane.setRowIndex(object76, 17);
- object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
- try {
- final var initialize = controller.getClass().getDeclaredMethod("initialize");
- initialize.setAccessible(true);
- initialize.invoke(controller);
- } catch (final InvocationTargetException | IllegalAccessException e) {
- throw new RuntimeException("Error using reflection", e);
- } catch (final NoSuchMethodException ignored) {
- }
- loaded = true;
- return object0;
- }
-
- private void callMethod(final String methodName, final T event) {
- try {
- final Method method;
- final var methods = Arrays.stream(controller.getClass().getDeclaredMethods())
- .filter(m -> m.getName().equals(methodName)).toList();
- if (methods.size() > 1) {
- final var eventMethods = methods.stream().filter(m ->
- m.getParameterCount() == 1 && Event.class.isAssignableFrom(m.getParameterTypes()[0])).toList();
- if (eventMethods.size() == 1) {
- method = eventMethods.getFirst();
- } else {
- final var emptyMethods = methods.stream().filter(m -> m.getParameterCount() == 0).toList();
- if (emptyMethods.size() == 1) {
- method = emptyMethods.getFirst();
- } else {
- throw new IllegalArgumentException("Multiple matching methods for " + methodName);
- }
- }
- } else if (methods.size() == 1) {
- method = methods.getFirst();
- } else {
- throw new IllegalArgumentException("No matching method for " + methodName);
- }
- method.setAccessible(true);
- if (method.getParameterCount() == 0) {
- method.invoke(controller);
- } else {
- method.invoke(controller, event);
- }
- } catch (final IllegalAccessException | InvocationTargetException ex) {
- throw new RuntimeException("Error using reflection on " + methodName, ex);
- }
- }
-
- private void injectField(final String fieldName, final T object) {
- try {
- final var field = controller.getClass().getDeclaredField(fieldName);
- field.setAccessible(true);
- field.set(controller, object);
- } catch (final NoSuchFieldException | IllegalAccessException e) {
- throw new RuntimeException("Error using reflection on " + fieldName, e);
- }
- }
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.IncludeController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/ReflectionTestView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/ReflectionTestView.java
deleted file mode 100644
index c815d43..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/ReflectionTestView.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import javafx.event.Event;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class ReflectionTestView {
-
- private final Map, Object> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.TestController controller;
-
- /**
- * Instantiates a new ReflectionTestView with no nested controllers and no resource bundle
- *
- * @param controller The controller
- */
- public ReflectionTestView(final com.github.gtache.fxml.compiler.loader.TestController controller) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controller), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new ReflectionTestView with no nested controllers
- *
- * @param controller The controller
- * @param resourceBundle The resource bundle
- */
- public ReflectionTestView(final com.github.gtache.fxml.compiler.loader.TestController controller, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controller), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new ReflectionTestView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- */
- public ReflectionTestView(final Map, Object> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new ReflectionTestView with nested controllers
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public ReflectionTestView(final Map, Object> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- controller = (com.github.gtache.fxml.compiler.loader.TestController) controllersMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- final var object0 = new javafx.scene.layout.BorderPane();
- final var object1 = new javafx.scene.layout.VBox();
- javafx.scene.layout.BorderPane.setAlignment(object1, javafx.geometry.Pos.CENTER);
- final var object2 = new javafx.scene.layout.HBox();
- object2.setAlignment(javafx.geometry.Pos.CENTER);
- object2.setSpacing(10.0);
- final var object3 = new javafx.scene.control.Slider();
- injectField("playSlider", object3);
- javafx.scene.layout.HBox.setHgrow(object3, javafx.scene.layout.Priority.ALWAYS);
- final var object4 = new javafx.geometry.Insets(0, 0, 0, 10.0);
- object3.setPadding(object4);
- final var object5 = new javafx.scene.control.Label();
- injectField("playLabel", object5);
- object5.setText("Label");
- final var object6 = new javafx.geometry.Insets(0, 10.0, 0, 0);
- object5.setPadding(object6);
- object2.getChildren().addAll(object3, object5);
- final var object7 = new javafx.geometry.Insets(10.0, 0, 0, 0);
- object2.setPadding(object7);
- final var object8 = new javafx.scene.layout.HBox();
- object8.setAlignment(javafx.geometry.Pos.CENTER);
- object8.setSpacing(10.0);
- final var object9 = new javafx.scene.control.Button();
- injectField("playButton", object9);
- object9.setMnemonicParsing(false);
- object9.setOnAction(e -> callMethod("playPressed", e));
- final var object10 = new javafx.geometry.Insets(0, 20.0, 0, 0);
- javafx.scene.layout.HBox.setMargin(object9, object10);
- final var object11 = new javafx.scene.control.Label();
- object11.setText(bundle.getString("media.volume.label"));
- final var object12 = new javafx.scene.control.Slider();
- injectField("volumeSlider", object12);
- object12.setValue(100);
- final var object13 = new javafx.scene.control.Label();
- injectField("volumeValueLabel", object13);
- object13.setText("Label");
- final var class0 = includeControllersMap.get("includeView.fxml");
- final var map0 = new HashMap<>(resourceBundlesMap);
- final var bundle0 = ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle");
- map0.put(class0, bundle0);
- final var view0 = new com.github.gtache.fxml.compiler.loader.ReflectionIncludeView(controllersMap, includeControllersMap, map0);
- final var object14 = view0.load();
- final var controller0 = view0.controller();
- injectField("includeController", controller0);
- object8.getChildren().addAll(object9, object11, object12, object13, object14);
- final var object15 = new javafx.geometry.Insets(10.0, 10.0, 10.0, 10.0);
- object8.setPadding(object15);
- object1.getChildren().addAll(object2, object8);
- object0.setBottom(object1);
- final var object16 = new javafx.scene.layout.VBox();
- injectField("vbox", object16);
- final var object17 = new javafx.scene.control.ToolBar();
- injectField("toolBar", object17);
- final var object18 = new javafx.scene.control.TitledPane();
- injectField("titledPane", object18);
- final var object19 = new javafx.scene.layout.TilePane();
- injectField("tilePane", object19);
- final var object20 = new javafx.scene.text.TextFlow();
- injectField("textFlow", object20);
- final var object21 = new javafx.scene.control.TabPane();
- injectField("tabPane", object21);
- final var object22 = new javafx.scene.control.Tab();
- injectField("tab", object22);
- final var object23 = new javafx.scene.layout.StackPane();
- injectField("stackPane", object23);
- final var object24 = new javafx.scene.control.SplitPane();
- injectField("splitPane", object24);
- final var object25 = new javafx.scene.control.ScrollPane();
- injectField("scrollPane", object25);
- final var object26 = new javafx.scene.layout.Pane();
- injectField("pane", object26);
- final var object27 = new javafx.scene.layout.HBox();
- injectField("hbox", object27);
- final var object28 = new javafx.scene.Group();
- injectField("group", object28);
- final var object29 = new javafx.scene.layout.GridPane();
- injectField("gridPane", object29);
- final var object30 = new javafx.scene.layout.ColumnConstraints();
- injectField("columnConstraints", object30);
- object30.setHgrow(javafx.scene.layout.Priority.SOMETIMES);
- object30.setMinWidth(10.0);
- object29.getColumnConstraints().addAll(object30);
- final var object31 = new javafx.scene.layout.RowConstraints();
- object31.setMinHeight(10.0);
- object31.setVgrow(javafx.scene.layout.Priority.SOMETIMES);
- object29.getRowConstraints().addAll(object31);
- final var object32 = new javafx.scene.layout.FlowPane();
- injectField("flowPane", object32);
- final var object33 = new javafx.scene.control.DialogPane();
- injectField("dialogPane", object33);
- final var object34 = new javafx.scene.control.ButtonBar();
- injectField("buttonBar", object34);
- final var object35 = new javafx.scene.layout.AnchorPane();
- injectField("anchorPane", object35);
- final var object36 = new javafx.scene.control.Label();
- object36.setManaged(false);
- object35.getChildren().addAll(object36);
- object34.getButtons().addAll(object35);
- object33.setContent(object34);
- object32.getChildren().addAll(object33);
- object29.getChildren().addAll(object32);
- object28.getChildren().addAll(object29);
- object27.getChildren().addAll(object28);
- object26.getChildren().addAll(object27);
- object25.setContent(object26);
- object24.getItems().addAll(object25);
- object23.getChildren().addAll(object24);
- object22.setContent(object23);
- object21.getTabs().addAll(object22);
- object20.getChildren().addAll(object21);
- object19.getChildren().addAll(object20);
- object18.setContent(object19);
- object17.getItems().addAll(object18);
- object16.getChildren().addAll(object17);
- object0.setCenter(object16);
- try {
- final var initialize = controller.getClass().getDeclaredMethod("initialize");
- initialize.setAccessible(true);
- initialize.invoke(controller);
- } catch (final InvocationTargetException | IllegalAccessException e) {
- throw new RuntimeException("Error using reflection", e);
- } catch (final NoSuchMethodException ignored) {
- }
- loaded = true;
- return object0;
- }
-
- private void callMethod(final String methodName, final T event) {
- try {
- final Method method;
- final var methods = Arrays.stream(controller.getClass().getDeclaredMethods())
- .filter(m -> m.getName().equals(methodName)).toList();
- if (methods.size() > 1) {
- final var eventMethods = methods.stream().filter(m ->
- m.getParameterCount() == 1 && Event.class.isAssignableFrom(m.getParameterTypes()[0])).toList();
- if (eventMethods.size() == 1) {
- method = eventMethods.getFirst();
- } else {
- final var emptyMethods = methods.stream().filter(m -> m.getParameterCount() == 0).toList();
- if (emptyMethods.size() == 1) {
- method = emptyMethods.getFirst();
- } else {
- throw new IllegalArgumentException("Multiple matching methods for " + methodName);
- }
- }
- } else if (methods.size() == 1) {
- method = methods.getFirst();
- } else {
- throw new IllegalArgumentException("No matching method for " + methodName);
- }
- method.setAccessible(true);
- if (method.getParameterCount() == 0) {
- method.invoke(controller);
- } else {
- method.invoke(controller, event);
- }
- } catch (final IllegalAccessException | InvocationTargetException ex) {
- throw new RuntimeException("Error using reflection on " + methodName, ex);
- }
- }
-
- private void injectField(final String fieldName, final T object) {
- try {
- final var field = controller.getClass().getDeclaredField(fieldName);
- field.setAccessible(true);
- field.set(controller, object);
- } catch (final NoSuchFieldException | IllegalAccessException e) {
- throw new RuntimeException("Error using reflection on " + fieldName, e);
- }
- }
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.TestController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
\ No newline at end of file
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/SettersIncludeView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/SettersIncludeView.java
deleted file mode 100644
index 059b847..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/SettersIncludeView.java
+++ /dev/null
@@ -1,439 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class SettersIncludeView {
-
- private final Map, Object> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.IncludeController controller;
-
- /**
- * Instantiates a new SettersIncludeView with no nested controllers and no resource bundle
- *
- * @param controller The controller
- */
- public SettersIncludeView(final com.github.gtache.fxml.compiler.loader.IncludeController controller) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controller), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new SettersIncludeView with no nested controllers
- *
- * @param controller The controller
- * @param resourceBundle The resource bundle
- */
- public SettersIncludeView(final com.github.gtache.fxml.compiler.loader.IncludeController controller, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, controller), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.IncludeController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new SettersIncludeView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- */
- public SettersIncludeView(final Map, Object> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new SettersIncludeView with nested controllers
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public SettersIncludeView(final Map, Object> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- controller = (com.github.gtache.fxml.compiler.loader.IncludeController) controllersMap.get(com.github.gtache.fxml.compiler.loader.IncludeController.class);
- final var object0 = new javafx.scene.layout.GridPane();
- controller.setGridPane(object0);
- object0.setOnInputMethodTextChanged(controller::inputMethodTextChanged);
- object0.setOnKeyPressed(e -> controller.keyPressed());
- object0.setOnKeyReleased(controller::keyReleased);
- object0.setOnKeyTyped(controller::keyTyped);
- final var object1 = new javafx.scene.layout.RowConstraints();
- final var object2 = new javafx.scene.layout.RowConstraints();
- final var object3 = new javafx.scene.layout.RowConstraints();
- final var object4 = new javafx.scene.layout.RowConstraints();
- final var object5 = new javafx.scene.layout.RowConstraints();
- final var object6 = new javafx.scene.layout.RowConstraints();
- final var object7 = new javafx.scene.layout.RowConstraints();
- final var object8 = new javafx.scene.layout.RowConstraints();
- final var object9 = new javafx.scene.layout.RowConstraints();
- final var object10 = new javafx.scene.layout.RowConstraints();
- final var object11 = new javafx.scene.layout.RowConstraints();
- final var object12 = new javafx.scene.layout.RowConstraints();
- final var object13 = new javafx.scene.layout.RowConstraints();
- final var object14 = new javafx.scene.layout.RowConstraints();
- final var object15 = new javafx.scene.layout.RowConstraints();
- final var object16 = new javafx.scene.layout.RowConstraints();
- final var object17 = new javafx.scene.layout.RowConstraints();
- final var object18 = new javafx.scene.layout.RowConstraints();
- object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
- final var object19 = new javafx.scene.layout.ColumnConstraints();
- final var object20 = new javafx.scene.layout.ColumnConstraints();
- final var object21 = new javafx.scene.layout.ColumnConstraints();
- object21.setMinWidth(10.0);
- object21.setPrefWidth(100.0);
- object0.getColumnConstraints().addAll(object19, object20, object21);
- final var object22 = new javafx.scene.control.Button();
- controller.setButton(object22);
- object22.setMnemonicParsing(false);
- object22.setText("Button");
- final var object23 = new javafx.scene.control.CheckBox();
- controller.setCheckBox(object23);
- object23.setIndeterminate(true);
- object23.setMnemonicParsing(false);
- object23.setText("CheckBox");
- javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
- final var object24 = new javafx.scene.control.ChoiceBox();
- controller.setChoiceBox(object24);
- object24.setCacheShape(false);
- object24.setCenterShape(false);
- object24.setDisable(true);
- object24.setFocusTraversable(false);
- object24.setPrefWidth(150.0);
- object24.setScaleShape(false);
- object24.setVisible(false);
- javafx.scene.layout.GridPane.setRowIndex(object24, 1);
- final var object25 = new javafx.scene.control.ColorPicker();
- controller.setColorPicker(object25);
- object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
- object25.setOpacity(0.5);
- javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
- javafx.scene.layout.GridPane.setRowIndex(object25, 1);
- final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
- controller.setColor(object26);
- object25.setValue(object26);
- final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object25.setOpaqueInsets(object27);
- final var object28 = new javafx.scene.control.ComboBox();
- controller.setComboBox(object28);
- object28.setEditable(true);
- object28.setPrefWidth(150.0);
- object28.setPromptText("Text");
- object28.setVisibleRowCount(5);
- javafx.scene.layout.GridPane.setRowIndex(object28, 2);
- final var object29 = javafx.scene.Cursor.CLOSED_HAND;
- object28.setCursor(object29);
- final var object30 = new javafx.scene.effect.Bloom();
- object28.setEffect(object30);
- final var object31 = new javafx.scene.control.DatePicker();
- controller.setDatePicker(object31);
- object31.setShowWeekNumbers(true);
- object31.setStyle("-fx-background-color: #ffffff;");
- javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
- javafx.scene.layout.GridPane.setRowIndex(object31, 2);
- final var object32 = new javafx.scene.web.HTMLEditor();
- controller.setHtmlEditor(object32);
- object32.setHtmlText("");
- object32.setPrefHeight(200.0);
- object32.setPrefWidth(506.0);
- object32.getStyleClass().addAll("clazz");
- object32.getStylesheets().addAll("@style.css");
- javafx.scene.layout.GridPane.setRowIndex(object32, 3);
- final var object33 = new javafx.scene.control.Hyperlink();
- controller.setHyperlink(object33);
- object33.setText("Hyperlink");
- javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
- javafx.scene.layout.GridPane.setRowIndex(object33, 3);
- final var object34 = new javafx.scene.image.ImageView();
- controller.setImageView(object34);
- object34.setFitHeight(150.0);
- object34.setFitWidth(200.0);
- object34.setPickOnBounds(true);
- object34.setPreserveRatio(true);
- javafx.scene.layout.GridPane.setRowIndex(object34, 4);
- final var object35 = new javafx.scene.control.Label();
- controller.setLabel(object35);
- object35.setAccessibleHelp("TTTTT");
- object35.setAccessibleText("TTT");
- object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
- object35.setCache(true);
- object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
- object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
- object35.setMnemonicParsing(true);
- object35.setMouseTransparent(true);
- object35.setText(bundle.getString("include.label"));
- javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
- javafx.scene.layout.GridPane.setRowIndex(object35, 4);
- final var object36 = new javafx.scene.control.ListView();
- controller.setListView(object36);
- object36.setFixedCellSize(20.0);
- object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
- object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
- object36.setPrefHeight(200.0);
- object36.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object36, 5);
- final var object37 = new javafx.scene.media.MediaView();
- controller.setMediaView(object37);
- object37.setFitHeight(200.0);
- object37.setFitWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
- javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
- javafx.scene.layout.GridPane.setRowIndex(object37, 5);
- javafx.scene.layout.GridPane.setRowSpan(object37, 2);
- final var object38 = new javafx.scene.control.MenuBar();
- controller.setMenuBar(object38);
- javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
- javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
- javafx.scene.layout.GridPane.setRowIndex(object38, 7);
- javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
- javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
- final var object39 = new javafx.scene.control.Menu();
- controller.setMenu1(object39);
- object39.setMnemonicParsing(false);
- object39.setText("File");
- final var object40 = new javafx.scene.control.MenuItem();
- controller.setMenuItem1(object40);
- object40.setMnemonicParsing(false);
- object40.setText("Close");
- object39.getItems().addAll(object40);
- final var object41 = new javafx.scene.control.Menu();
- object41.setMnemonicParsing(false);
- object41.setText("Edit");
- final var object42 = new javafx.scene.control.MenuItem();
- object42.setMnemonicParsing(false);
- object42.setText("Delete");
- object41.getItems().addAll(object42);
- final var object43 = new javafx.scene.control.Menu();
- object43.setMnemonicParsing(false);
- object43.setText("Help");
- final var object44 = new javafx.scene.control.MenuItem();
- object44.setMnemonicParsing(false);
- object44.setText("About");
- object43.getItems().addAll(object44);
- object38.getMenus().addAll(object39, object41, object43);
- final var object45 = new javafx.scene.control.MenuButton();
- controller.setMenuButton(object45);
- object45.setMnemonicParsing(false);
- object45.setText("MenuButton");
- javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
- javafx.scene.layout.GridPane.setRowIndex(object45, 7);
- final var object46 = new javafx.scene.control.MenuItem();
- object46.setMnemonicParsing(false);
- object46.setText("Action 1");
- final var object47 = new javafx.scene.control.MenuItem();
- object47.setMnemonicParsing(false);
- object47.setText("Action 2");
- object45.getItems().addAll(object46, object47);
- final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- javafx.scene.layout.GridPane.setMargin(object45, object48);
- final var object49 = new javafx.scene.control.Pagination();
- controller.setPagination(object49);
- object49.setPrefHeight(200.0);
- object49.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object49, 8);
- final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
- object49.setPadding(object50);
- final var object51 = new javafx.scene.control.PasswordField();
- controller.setPasswordField(object51);
- object51.setMaxHeight(6.0);
- object51.setMaxWidth(5.0);
- object51.setMinHeight(2.0);
- object51.setMinWidth(1.0);
- object51.setPrefColumnCount(7);
- object51.setPrefHeight(4.0);
- object51.setPrefWidth(3.0);
- javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
- javafx.scene.layout.GridPane.setRowIndex(object51, 8);
- final var object52 = new javafx.scene.control.ProgressBar();
- controller.setProgressBar(object52);
- object52.setLayoutX(10.0);
- object52.setLayoutY(20.0);
- object52.setPrefWidth(200.0);
- object52.setProgress(0.0);
- javafx.scene.layout.GridPane.setRowIndex(object52, 9);
- final var object53 = new javafx.scene.control.ProgressIndicator();
- controller.setProgressIndicator(object53);
- object53.setProgress(0.0);
- object53.setRotate(2.0);
- javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
- javafx.scene.layout.GridPane.setRowIndex(object53, 9);
- final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
- object53.setRotationAxis(object54);
- final var object55 = new javafx.scene.control.RadioButton();
- controller.setRadioButton(object55);
- object55.setMnemonicParsing(false);
- object55.setScaleX(7.0);
- object55.setScaleY(2.0);
- object55.setScaleZ(3.0);
- object55.setText("RadioButton");
- object55.setTranslateX(4.0);
- object55.setTranslateY(5.0);
- object55.setTranslateZ(6.0);
- javafx.scene.layout.GridPane.setRowIndex(object55, 10);
- final var object56 = new javafx.scene.control.ScrollBar();
- controller.setScrollBarH(object56);
- javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
- javafx.scene.layout.GridPane.setRowIndex(object56, 10);
- final var object57 = new javafx.scene.control.ScrollBar();
- controller.setScrollBarV(object57);
- object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object57, 11);
- final var object58 = new javafx.scene.control.Separator();
- controller.setSeparatorH(object58);
- object58.setOnDragDetected(controller::dragDetected);
- object58.setOnDragDone(controller::dragDone);
- object58.setOnDragDropped(controller::dragDropped);
- object58.setOnDragEntered(controller::dragEntered);
- object58.setOnDragExited(controller::dragExited);
- object58.setOnDragOver(controller::dragOver);
- object58.setOnMouseDragEntered(controller::mouseDragEntered);
- object58.setOnMouseDragExited(controller::mouseDragExited);
- object58.setOnMouseDragOver(controller::mouseDragOver);
- object58.setOnMouseDragReleased(controller::mouseDragReleased);
- object58.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
- javafx.scene.layout.GridPane.setRowIndex(object58, 11);
- final var object59 = new javafx.scene.control.Separator();
- controller.setSeparatorV(object59);
- object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
- object59.setPrefHeight(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object59, 12);
- final var object60 = new javafx.scene.control.Slider();
- controller.setSliderH(object60);
- object60.setOnContextMenuRequested(controller::contextMenuRequested);
- object60.setOnMouseClicked(e -> controller.mouseClicked());
- object60.setOnMouseDragged(controller::mouseDragged);
- object60.setOnMouseEntered(controller::mouseEntered);
- object60.setOnMouseExited(controller::mouseExited);
- object60.setOnMouseMoved(controller::mouseMoved);
- object60.setOnMousePressed(controller::mousePressed);
- object60.setOnMouseReleased(controller::mouseReleased);
- object60.setOnScroll(controller::onScroll);
- object60.setOnScrollFinished(controller::onScrollFinished);
- object60.setOnScrollStarted(controller::onScrollStarted);
- javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
- javafx.scene.layout.GridPane.setRowIndex(object60, 12);
- final var object61 = new javafx.scene.control.Slider();
- controller.setSliderV(object61);
- object61.setOnZoom(controller::onZoom);
- object61.setOnZoomFinished(controller::onZoomFinished);
- object61.setOnZoomStarted(controller::onZoomStarted);
- object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
- javafx.scene.layout.GridPane.setRowIndex(object61, 13);
- final var object62 = new javafx.scene.control.Spinner();
- controller.setSpinner(object62);
- javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
- javafx.scene.layout.GridPane.setRowIndex(object62, 13);
- final var object63 = new javafx.scene.control.SplitMenuButton();
- controller.setSplitMenuButton(object63);
- object63.setMnemonicParsing(false);
- object63.setText("SplitMenuButton");
- javafx.scene.layout.GridPane.setRowIndex(object63, 14);
- final var object64 = new javafx.scene.control.MenuItem();
- controller.setItem1(object64);
- object64.setMnemonicParsing(false);
- object64.setText("Action 1");
- final var object65 = new javafx.scene.control.MenuItem();
- controller.setItem2(object65);
- object65.setMnemonicParsing(false);
- object65.setText("Action 2");
- object63.getItems().addAll(object64, object65);
- final var object66 = new javafx.scene.control.TableView();
- controller.setTableView(object66);
- object66.setPrefHeight(200.0);
- object66.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
- javafx.scene.layout.GridPane.setRowIndex(object66, 14);
- final var object67 = new javafx.scene.control.TableColumn();
- controller.setTableColumn1(object67);
- object67.setPrefWidth(75.0);
- object67.setText("C1");
- final var object68 = new javafx.scene.control.TableColumn();
- controller.setTableColumn2(object68);
- object68.setPrefWidth(75.0);
- object68.setText("C2");
- object66.getColumns().addAll(object67, object68);
- final var object69 = new javafx.scene.control.TextArea();
- controller.setTextArea(object69);
- object69.setPrefHeight(200.0);
- object69.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object69, 15);
- final var object70 = new javafx.scene.control.TextField();
- controller.setTextField(object70);
- javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
- javafx.scene.layout.GridPane.setRowIndex(object70, 15);
- final var object71 = new javafx.scene.control.ToggleButton();
- object71.setMnemonicParsing(false);
- object71.setOnAction(controller::onAction);
- object71.setOnRotate(controller::onRotate);
- object71.setOnRotationFinished(controller::onRotationFinished);
- object71.setOnRotationStarted(controller::onRotationStarted);
- object71.setText("ToggleButton");
- javafx.scene.layout.GridPane.setRowIndex(object71, 16);
- final var object72 = new javafx.scene.control.TreeTableView>();
- controller.setTreeTableView(object72);
- object72.setPrefHeight(200.0);
- object72.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
- javafx.scene.layout.GridPane.setRowIndex(object72, 16);
- final var object73 = new javafx.scene.control.TreeTableColumn, String>();
- controller.setTreeTableColumn1(object73);
- object73.setOnEditCancel(controller::onEditCancel);
- object73.setOnEditCommit(controller::onEditCommit);
- object73.setOnEditStart(controller::onEditStart);
- object73.setPrefWidth(75.0);
- object73.setText("C1");
- final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
- controller.setTreeTableColumn2(object74);
- object74.setPrefWidth(75.0);
- object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
- object74.setText("C2");
- object72.getColumns().addAll(object73, object74);
- final var object75 = new javafx.scene.control.TreeView();
- controller.setTreeView(object75);
- object75.setOnSwipeDown(controller::onSwipeDown);
- object75.setOnSwipeLeft(controller::onSwipeLeft);
- object75.setOnSwipeRight(controller::onSwipeRight);
- object75.setOnSwipeUp(controller::onSwipeUp);
- object75.setPrefHeight(200.0);
- object75.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setRowIndex(object75, 17);
- final var object76 = new javafx.scene.web.WebView();
- controller.setWebView(object76);
- object76.setOnTouchMoved(controller::onTouchMoved);
- object76.setOnTouchPressed(controller::onTouchPressed);
- object76.setOnTouchReleased(controller::onTouchReleased);
- object76.setOnTouchStationary(controller::onTouchStationary);
- object76.setPrefHeight(200.0);
- object76.setPrefWidth(200.0);
- javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
- javafx.scene.layout.GridPane.setRowIndex(object76, 17);
- object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
- controller.initialize();
- loaded = true;
- return object0;
- }
-
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.IncludeController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
\ No newline at end of file
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/SettersTestView.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/SettersTestView.java
deleted file mode 100644
index 679356c..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/SettersTestView.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-
-/**
- * Generated code, not thread-safe
- */
-public final class SettersTestView {
-
- private final Map, Object> controllersMap;
- private final Map, ResourceBundle> resourceBundlesMap;
- private final Map> includeControllersMap;
- private boolean loaded;
- private com.github.gtache.fxml.compiler.loader.TestController controller;
-
- /**
- * Instantiates a new SettersTestView with no nested controllers and no resource bundle
- *
- * @param controller The controller
- */
- public SettersTestView(final com.github.gtache.fxml.compiler.loader.TestController controller) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controller), Map.of(), Map.of());
- }
-
- /**
- * Instantiates a new SettersTestView with no nested controllers
- *
- * @param controller The controller
- * @param resourceBundle The resource bundle
- */
- public SettersTestView(final com.github.gtache.fxml.compiler.loader.TestController controller, final ResourceBundle resourceBundle) {
- this(Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, controller), Map.of(), Map.of(com.github.gtache.fxml.compiler.loader.TestController.class, resourceBundle));
- }
-
- /**
- * Instantiates a new SettersTestView with nested controllers and no resource bundle
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- */
- public SettersTestView(final Map, Object> controllersMap, final Map> includeControllersMap) {
- this(controllersMap, includeControllersMap, Map.of());
- }
-
- /**
- * Instantiates a new SettersTestView with nested controllers
- *
- * @param controllersMap The map of controller class to controller
- * @param includeControllersMap The map of source to controller class
- * @param resourceBundlesMap The map of controller class to resource bundle
- */
- public SettersTestView(final Map, Object> controllersMap, final Map> includeControllersMap, final Map, ResourceBundle> resourceBundlesMap) {
- this.controllersMap = Map.copyOf(controllersMap);
- this.includeControllersMap = Map.copyOf(includeControllersMap);
- this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
- }
-
- public javafx.scene.Parent load() {
- if (loaded) {
- throw new IllegalStateException("Already loaded");
- }
- final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- controller = (com.github.gtache.fxml.compiler.loader.TestController) controllersMap.get(com.github.gtache.fxml.compiler.loader.TestController.class);
- final var object0 = new javafx.scene.layout.BorderPane();
- final var object1 = new javafx.scene.layout.VBox();
- javafx.scene.layout.BorderPane.setAlignment(object1, javafx.geometry.Pos.CENTER);
- final var object2 = new javafx.scene.layout.HBox();
- object2.setAlignment(javafx.geometry.Pos.CENTER);
- object2.setSpacing(10.0);
- final var object3 = new javafx.scene.control.Slider();
- controller.setPlaySlider(object3);
- javafx.scene.layout.HBox.setHgrow(object3, javafx.scene.layout.Priority.ALWAYS);
- final var object4 = new javafx.geometry.Insets(0, 0, 0, 10.0);
- object3.setPadding(object4);
- final var object5 = new javafx.scene.control.Label();
- controller.setPlayLabel(object5);
- object5.setText("Label");
- final var object6 = new javafx.geometry.Insets(0, 10.0, 0, 0);
- object5.setPadding(object6);
- object2.getChildren().addAll(object3, object5);
- final var object7 = new javafx.geometry.Insets(10.0, 0, 0, 0);
- object2.setPadding(object7);
- final var object8 = new javafx.scene.layout.HBox();
- object8.setAlignment(javafx.geometry.Pos.CENTER);
- object8.setSpacing(10.0);
- final var object9 = new javafx.scene.control.Button();
- controller.setPlayButton(object9);
- object9.setMnemonicParsing(false);
- object9.setOnAction(controller::playPressed);
- final var object10 = new javafx.geometry.Insets(0, 20.0, 0, 0);
- javafx.scene.layout.HBox.setMargin(object9, object10);
- final var object11 = new javafx.scene.control.Label();
- object11.setText(bundle.getString("media.volume.label"));
- final var object12 = new javafx.scene.control.Slider();
- controller.setVolumeSlider(object12);
- object12.setValue(100);
- final var object13 = new javafx.scene.control.Label();
- controller.setVolumeValueLabel(object13);
- object13.setText("Label");
- final var class0 = includeControllersMap.get("includeView.fxml");
- final var map0 = new HashMap<>(resourceBundlesMap);
- final var bundle0 = ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.IncludeBundle");
- map0.put(class0, bundle0);
- final var view0 = new com.github.gtache.fxml.compiler.loader.SettersIncludeView(controllersMap, includeControllersMap, map0);
- final var object14 = view0.load();
- final var controller0 = view0.controller();
- controller.setIncludeController(controller0);
- object8.getChildren().addAll(object9, object11, object12, object13, object14);
- final var object15 = new javafx.geometry.Insets(10.0, 10.0, 10.0, 10.0);
- object8.setPadding(object15);
- object1.getChildren().addAll(object2, object8);
- object0.setBottom(object1);
- final var object16 = new javafx.scene.layout.VBox();
- controller.setVbox(object16);
- final var object17 = new javafx.scene.control.ToolBar();
- controller.setToolBar(object17);
- final var object18 = new javafx.scene.control.TitledPane();
- controller.setTitledPane(object18);
- final var object19 = new javafx.scene.layout.TilePane();
- controller.setTilePane(object19);
- final var object20 = new javafx.scene.text.TextFlow();
- controller.setTextFlow(object20);
- final var object21 = new javafx.scene.control.TabPane();
- controller.setTabPane(object21);
- final var object22 = new javafx.scene.control.Tab();
- controller.setTab(object22);
- final var object23 = new javafx.scene.layout.StackPane();
- controller.setStackPane(object23);
- final var object24 = new javafx.scene.control.SplitPane();
- controller.setSplitPane(object24);
- final var object25 = new javafx.scene.control.ScrollPane();
- controller.setScrollPane(object25);
- final var object26 = new javafx.scene.layout.Pane();
- controller.setPane(object26);
- final var object27 = new javafx.scene.layout.HBox();
- controller.setHbox(object27);
- final var object28 = new javafx.scene.Group();
- controller.setGroup(object28);
- final var object29 = new javafx.scene.layout.GridPane();
- controller.setGridPane(object29);
- final var object30 = new javafx.scene.layout.ColumnConstraints();
- controller.setColumnConstraints(object30);
- object30.setHgrow(javafx.scene.layout.Priority.SOMETIMES);
- object30.setMinWidth(10.0);
- object29.getColumnConstraints().addAll(object30);
- final var object31 = new javafx.scene.layout.RowConstraints();
- object31.setMinHeight(10.0);
- object31.setVgrow(javafx.scene.layout.Priority.SOMETIMES);
- object29.getRowConstraints().addAll(object31);
- final var object32 = new javafx.scene.layout.FlowPane();
- controller.setFlowPane(object32);
- final var object33 = new javafx.scene.control.DialogPane();
- controller.setDialogPane(object33);
- final var object34 = new javafx.scene.control.ButtonBar();
- controller.setButtonBar(object34);
- final var object35 = new javafx.scene.layout.AnchorPane();
- controller.setAnchorPane(object35);
- final var object36 = new javafx.scene.control.Label();
- object36.setManaged(false);
- object35.getChildren().addAll(object36);
- object34.getButtons().addAll(object35);
- object33.setContent(object34);
- object32.getChildren().addAll(object33);
- object29.getChildren().addAll(object32);
- object28.getChildren().addAll(object29);
- object27.getChildren().addAll(object28);
- object26.getChildren().addAll(object27);
- object25.setContent(object26);
- object24.getItems().addAll(object25);
- object23.getChildren().addAll(object24);
- object22.setContent(object23);
- object21.getTabs().addAll(object22);
- object20.getChildren().addAll(object21);
- object19.getChildren().addAll(object20);
- object18.setContent(object19);
- object17.getItems().addAll(object18);
- object16.getChildren().addAll(object17);
- object0.setCenter(object16);
- controller.initialize();
- loaded = true;
- return object0;
- }
-
-
- /**
- * @return The controller
- */
- public com.github.gtache.fxml.compiler.loader.TestController controller() {
- if (loaded) {
- return controller;
- } else {
- throw new IllegalStateException("Not loaded");
- }
- }
-}
\ No newline at end of file
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/TestApp.java b/loader/src/test/java/com/github/gtache/fxml/compiler/loader/TestApp.java
deleted file mode 100644
index 6610398..0000000
--- a/loader/src/test/java/com/github/gtache/fxml/compiler/loader/TestApp.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.github.gtache.fxml.compiler.loader;
-
-import com.github.gtache.fxml.compiler.impl.ControllerFieldInjectionTypes;
-import com.github.gtache.fxml.compiler.impl.ControllerInfoImpl;
-import com.github.gtache.fxml.compiler.impl.ControllerInjectionImpl;
-import com.github.gtache.fxml.compiler.impl.ControllerMethodsInjectionType;
-import com.github.gtache.fxml.compiler.impl.GenerationParametersImpl;
-import com.github.gtache.fxml.compiler.impl.GenerationRequestImpl;
-import com.github.gtache.fxml.compiler.impl.GeneratorImpl;
-import com.github.gtache.fxml.compiler.impl.ResourceBundleInjectionImpl;
-import com.github.gtache.fxml.compiler.impl.ResourceBundleInjectionTypes;
-import com.github.gtache.fxml.compiler.parsing.listener.ParsingLoadListener;
-import javafx.application.Application;
-import javafx.application.Platform;
-import javafx.fxml.FXMLLoader;
-import javafx.stage.Stage;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-public class TestApp extends Application {
- @Override
- public void start(final Stage primaryStage) throws Exception {
- final var loader = new FXMLLoader(getClass().getResource("testView.fxml"));
- final var listener = new ParsingLoadListener();
- loader.setLoadListener(listener);
- loader.setResources(ResourceBundle.getBundle("com.github.gtache.fxml.compiler.loader.TestBundle"));
- loader.load();
- final var genericTypes = new HashMap>();
- genericTypes.put("choiceBox", List.of("String"));
- genericTypes.put("listView", List.of("javafx.scene.control.Label"));
- genericTypes.put("spinner", List.of("Double"));
- genericTypes.put("tableView", List.of("javafx.scene.control.TextArea"));
- genericTypes.put("treeView", List.of("String"));
- genericTypes.put("treeTableView", List.of("javafx.scene.control.TreeItem"));
- genericTypes.put("treeTableColumn1", List.of("javafx.scene.control.TreeItem", "String"));
- genericTypes.put("treeTableColumn2", List.of("javafx.scene.control.TreeItem", "Integer"));
- genericTypes.put("tableColumn1", List.of("javafx.scene.control.TextArea", "Float"));
- genericTypes.put("tableColumn2", List.of("javafx.scene.control.TextArea", "String"));
- final var includeControllerInfo = new ControllerInfoImpl(Map.of("keyPressed", false, "mouseClicked", false),
- genericTypes);
- final var parameters = new GenerationParametersImpl(Map.of(
- "com.github.gtache.fxml.compiler.loader.IncludeController", new ControllerInjectionImpl(ControllerFieldInjectionTypes.REFLECTION, ControllerMethodsInjectionType.REFLECTION,
- "com.github.gtache.fxml.compiler.loader.IncludeController"),
- "com.github.gtache.fxml.compiler.loader.TestController", new ControllerInjectionImpl(ControllerFieldInjectionTypes.REFLECTION, ControllerMethodsInjectionType.REFLECTION,
- "com.github.gtache.fxml.compiler.loader.TestController")),
- Map.of("includeView.fxml", "com.github.gtache.fxml.compiler.loader.ReflectionIncludeView"),
- Map.of("includeView.fxml", "com.github.gtache.fxml.compiler.loader.IncludeController"),
- new ResourceBundleInjectionImpl(ResourceBundleInjectionTypes.CONSTRUCTOR, "com.github.gtache.fxml.compiler.loader.TestBundle"));
- final var request = new GenerationRequestImpl(parameters, includeControllerInfo, listener.root(), "com.github.gtache.fxml.compiler.loader.ReflectionTestView");
- System.out.println(new GeneratorImpl().generate(request));
- Platform.exit();
- }
-}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/parsing/listener/LoadController.java b/loader/src/test/java/com/github/gtache/fxml/compiler/parsing/listener/LoadController.java
new file mode 100644
index 0000000..94d044c
--- /dev/null
+++ b/loader/src/test/java/com/github/gtache/fxml/compiler/parsing/listener/LoadController.java
@@ -0,0 +1,17 @@
+package com.github.gtache.fxml.compiler.parsing.listener;
+
+import javafx.fxml.FXML;
+import javafx.scene.control.Label;
+import javafx.scene.control.Slider;
+
+public class LoadController {
+ @FXML
+ private Slider playSlider;
+ @FXML
+ private Label playLabel;
+
+ @FXML
+ private void mouseClicked() {
+
+ }
+}
diff --git a/loader/src/test/java/com/github/gtache/fxml/compiler/parsing/listener/TestParsingLoadListener.java b/loader/src/test/java/com/github/gtache/fxml/compiler/parsing/listener/TestParsingLoadListener.java
new file mode 100644
index 0000000..b035c8a
--- /dev/null
+++ b/loader/src/test/java/com/github/gtache/fxml/compiler/parsing/listener/TestParsingLoadListener.java
@@ -0,0 +1,273 @@
+package com.github.gtache.fxml.compiler.parsing.listener;
+
+import com.github.gtache.fxml.compiler.parsing.impl.ParsedIncludeImpl;
+import com.github.gtache.fxml.compiler.parsing.impl.ParsedObjectImpl;
+import com.github.gtache.fxml.compiler.parsing.impl.ParsedPropertyImpl;
+import javafx.application.Platform;
+import javafx.event.EventHandler;
+import javafx.fxml.FXMLLoader;
+import javafx.geometry.Insets;
+import javafx.scene.control.Label;
+import javafx.scene.control.Slider;
+import javafx.scene.layout.BorderPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.SequencedMap;
+import java.util.concurrent.CompletableFuture;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class TestParsingLoadListener {
+
+ private final ParsingLoadListener listener;
+
+ TestParsingLoadListener() {
+ this.listener = new ParsingLoadListener();
+ }
+
+ @BeforeAll
+ static void beforeAll() {
+ try {
+ Platform.startup(() -> {
+
+ });
+ } catch (final IllegalStateException ignored) {
+
+ }
+ }
+
+ @Test
+ void testRealCase() {
+ final var expected = new ParsedObjectImpl(BorderPane.class,
+ newLinkedHashMap("fx:controller", new ParsedPropertyImpl("fx:controller", null, "com.github.gtache.fxml.compiler.parsing.listener.LoadController")),
+ newLinkedHashMap(new ParsedPropertyImpl("bottom", null, null),
+ List.of(new ParsedObjectImpl(VBox.class,
+ newLinkedHashMap("alignment", new ParsedPropertyImpl("alignment", BorderPane.class, "CENTER")),
+ newLinkedHashMap(new ParsedPropertyImpl("children", null, null), List.of(
+ new ParsedObjectImpl(Slider.class,
+ newLinkedHashMap("fx:id", new ParsedPropertyImpl("fx:id", null, "playSlider"), "hgrow", new ParsedPropertyImpl("hgrow", HBox.class, "ALWAYS")),
+ newLinkedHashMap(new ParsedPropertyImpl("padding", null, null),
+ List.of(new ParsedObjectImpl(Insets.class,
+ newLinkedHashMap("left", new ParsedPropertyImpl("left", null, "10.0")),
+ newLinkedHashMap())))),
+ new ParsedObjectImpl(Label.class,
+ newLinkedHashMap("fx:id", new ParsedPropertyImpl("fx:id", null, "playLabel"), "text", new ParsedPropertyImpl("text", null, "Label"), "onMouseClicked", new ParsedPropertyImpl("onMouseClicked", EventHandler.class, "#mouseClicked")),
+ newLinkedHashMap(new ParsedPropertyImpl("padding", null, null),
+ List.of(new ParsedObjectImpl(Insets.class,
+ newLinkedHashMap("right", new ParsedPropertyImpl("right", null, "10.0")),
+ newLinkedHashMap())))),
+ new ParsedIncludeImpl(
+ newLinkedHashMap("source", new ParsedPropertyImpl("source", null, "includedView.fxml"), "resources", new ParsedPropertyImpl("resources", null, "com/github/gtache/fxml/compiler/parsing/listener/IncludedBundle"), "fx:id", new ParsedPropertyImpl("fx:id", null, "id")))
+ )))),
+ new ParsedPropertyImpl("center", null, null),
+ List.of(new ParsedObjectImpl(VBox.class, newLinkedHashMap("fx:id", new ParsedPropertyImpl("fx:id", null, "vbox")), newLinkedHashMap()))
+ ));
+ final var actual = CompletableFuture.supplyAsync(() -> {
+ final var loader = new FXMLLoader(TestParsingLoadListener.class.getResource("loadView.fxml"));
+ loader.setLoadListener(listener);
+ try {
+ loader.load();
+ } catch (final IOException e) {
+ throw new RuntimeException(e);
+ }
+ return listener.root();
+ }, Platform::runLater).join();
+ assertEquals(expected, actual);
+ }
+
+ private static SequencedMap newLinkedHashMap() {
+ return new LinkedHashMap();
+ }
+
+ private static SequencedMap newLinkedHashMap(final K k1, final V v1) {
+ final var map = new LinkedHashMap();
+ map.put(k1, v1);
+ return map;
+ }
+
+ private static SequencedMap newLinkedHashMap(final K k1, final V v1, final K k2, final V v2) {
+ final var map = new LinkedHashMap();
+ map.put(k1, v1);
+ map.put(k2, v2);
+ return map;
+ }
+
+ private static SequencedMap newLinkedHashMap(final K k1, final V v1, final K k2, final V v2, final K k3, final V v3) {
+ final var map = new LinkedHashMap();
+ map.put(k1, v1);
+ map.put(k2, v2);
+ map.put(k3, v3);
+ return map;
+ }
+
+ @Test
+ void testRootNullObjects() {
+ assertThrows(IllegalStateException.class, listener::root);
+ }
+
+ @Test
+ void testRootOneObject() {
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.endElement("");
+ final var expected = new ParsedObjectImpl(String.class, new LinkedHashMap<>(), new LinkedHashMap<>());
+ assertEquals(expected, listener.root());
+ }
+
+ @Test
+ void testRootTwoObjects() {
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.endElement("");
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.endElement("");
+ assertThrows(IllegalStateException.class, listener::root);
+ }
+
+ @Test
+ void testReadImportProcessingInstruction() {
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.beginPropertyElement("name", null);
+ listener.beginInstanceDeclarationElement(String.class);
+ final var element = "element";
+ listener.endElement(element);
+ listener.readImportProcessingInstruction("test");
+ listener.endElement(element);
+ assertThrows(IllegalStateException.class, () -> listener.endElement("other"));
+ }
+
+ @Test
+ void testReadLanguageProcessingInstruction() {
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.beginPropertyElement("name", null);
+ listener.beginInstanceDeclarationElement(String.class);
+ final var element = "element";
+ listener.endElement(element);
+ listener.readLanguageProcessingInstruction("test");
+ listener.endElement(element);
+ assertThrows(IllegalStateException.class, () -> listener.endElement("other"));
+ }
+
+ @Test
+ void testReadComment() {
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.beginPropertyElement("name", null);
+ listener.beginInstanceDeclarationElement(String.class);
+ final var element = "element";
+ listener.endElement(element);
+ listener.readComment("test");
+ listener.endElement(element);
+ assertDoesNotThrow(() -> listener.endElement("other"));
+ assertDoesNotThrow(listener::root);
+ }
+
+ @Test
+ void testBeginUnknownTypeElement() {
+ assertThrows(IllegalArgumentException.class, () -> listener.beginUnknownTypeElement(""));
+ }
+
+ @Test
+ void testInclude() {
+ listener.beginInstanceDeclarationElement(Object.class);
+ listener.beginIncludeElement();
+ listener.readInternalAttribute("source", "s");
+ listener.readInternalAttribute("p", "v");
+ listener.endElement("String");
+ final var root = listener.root();
+ final var expected = new ParsedIncludeImpl(new LinkedHashMap<>(Map.of("source",
+ new ParsedPropertyImpl("source", null, "s"), "p", new ParsedPropertyImpl("p", null, "v"))));
+ assertEquals(expected, root);
+ }
+
+ @Test
+ void testBeginNestedIncludeElement() {
+ listener.beginIncludeElement();
+ assertThrows(IllegalStateException.class, listener::beginIncludeElement);
+ }
+
+ @Test
+ void testBeginReferenceElement() {
+ assertThrows(UnsupportedOperationException.class, listener::beginReferenceElement);
+ }
+
+ @Test
+ void testBeginCopyElement() {
+ assertThrows(UnsupportedOperationException.class, listener::beginCopyElement);
+ }
+
+ @Test
+ void testBeginRootElement() {
+ assertThrows(UnsupportedOperationException.class, listener::beginRootElement);
+ }
+
+ @Test
+ void testBeginPropertyElementInclude() {
+ listener.beginIncludeElement();
+ assertThrows(IllegalStateException.class, () -> listener.beginPropertyElement("", null));
+ }
+
+ @Test
+ void testBeginUnknownStaticPropertyElement() {
+ assertThrows(IllegalArgumentException.class, () -> listener.beginUnknownStaticPropertyElement(""));
+ }
+
+ @Test
+ void testBeginScriptElement() {
+ assertThrows(UnsupportedOperationException.class, listener::beginScriptElement);
+ }
+
+ @Test
+ void testBeginDefineElement() {
+ assertThrows(UnsupportedOperationException.class, listener::beginDefineElement);
+ }
+
+ @Test
+ void testReadInternalAttributeNull() {
+ assertThrows(IllegalStateException.class, () -> listener.readInternalAttribute("name", "value"));
+ }
+
+ @Test
+ void testReadPropertyAttributeNull() {
+ assertThrows(IllegalStateException.class, () -> listener.readPropertyAttribute("name", null, "value"));
+ }
+
+ @Test
+ void testReadPropertyAttributeIsInclude() {
+ listener.beginIncludeElement();
+ assertThrows(IllegalStateException.class, () -> listener.readPropertyAttribute("name", null, "value"));
+ }
+
+ @Test
+ void testReadUnknownStaticPropertyAttribute() {
+ assertThrows(IllegalArgumentException.class, () -> listener.readUnknownStaticPropertyAttribute("", ""));
+ }
+
+ @Test
+ void testReadEventHandlerAttributeNull() {
+ assertThrows(IllegalStateException.class, () -> listener.readEventHandlerAttribute("name", "value"));
+ }
+
+ @Test
+ void testReadEventHandlerAttributeInclude() {
+ listener.beginIncludeElement();
+ assertThrows(IllegalStateException.class, () -> listener.readEventHandlerAttribute("name", "value"));
+ }
+
+ @Test
+ void testEndPropertyNull() {
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.beginInstanceDeclarationElement(String.class);
+ listener.endElement("");
+ assertThrows(IllegalStateException.class, () -> listener.endElement(""));
+ }
+
+ @Test
+ void testEndElementNull() {
+ assertThrows(IllegalStateException.class, () -> listener.endElement(""));
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/ControlsBundle.properties b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/ControlsBundle.properties
new file mode 120000
index 0000000..0224a88
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/ControlsBundle.properties
@@ -0,0 +1 @@
+../../../../../../../../../../core/src/test/resources/com/github/gtache/fxml/compiler/impl/ControlsBundle.properties
\ No newline at end of file
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/IncludesBundle.properties b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/IncludesBundle.properties
new file mode 120000
index 0000000..f1df677
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/IncludesBundle.properties
@@ -0,0 +1 @@
+../../../../../../../../../../core/src/test/resources/com/github/gtache/fxml/compiler/impl/IncludesBundle.properties
\ No newline at end of file
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/controlsView.fxml b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/controlsView.fxml
new file mode 120000
index 0000000..a4a6d57
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/controlsView.fxml
@@ -0,0 +1 @@
+../../../../../../../../../../core/src/test/resources/com/github/gtache/fxml/compiler/impl/controlsView.fxml
\ No newline at end of file
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-constructor.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-constructor.txt
new file mode 100644
index 0000000..a58a5ac
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-constructor.txt
@@ -0,0 +1,425 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, Object> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controller The controller
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controller The controller
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, Object> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ controller = (com.github.gtache.fxml.compiler.impl.ControlsController) controllersMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ final var object0 = new javafx.scene.layout.GridPane();
+ controller.gridPane = object0;
+ object0.setOnInputMethodTextChanged(controller::inputMethodTextChanged);
+ object0.setOnKeyPressed(e -> controller.keyPressed());
+ object0.setOnKeyReleased(controller::keyReleased);
+ object0.setOnKeyTyped(controller::keyTyped);
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ controller.button = object22;
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ controller.checkBox = object23;
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ controller.choiceBox = object24;
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ controller.colorPicker = object25;
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ controller.color = object26;
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ controller.comboBox = object28;
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ controller.datePicker = object31;
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ controller.htmlEditor = object32;
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ controller.hyperlink = object33;
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ controller.imageView = object34;
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ controller.label = object35;
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(bundle.getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ controller.listView = object36;
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ controller.mediaView = object37;
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ controller.menuBar = object38;
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ controller.menu1 = object39;
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ controller.menuItem1 = object40;
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ controller.menuButton = object45;
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ controller.pagination = object49;
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ controller.passwordField = object51;
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ controller.progressBar = object52;
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ controller.progressIndicator = object53;
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ controller.radioButton = object55;
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarH = object56;
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarV = object57;
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ controller.separatorH = object58;
+ object58.setOnDragDetected(controller::dragDetected);
+ object58.setOnDragDone(controller::dragDone);
+ object58.setOnDragDropped(controller::dragDropped);
+ object58.setOnDragEntered(controller::dragEntered);
+ object58.setOnDragExited(controller::dragExited);
+ object58.setOnDragOver(controller::dragOver);
+ object58.setOnMouseDragEntered(controller::mouseDragEntered);
+ object58.setOnMouseDragExited(controller::mouseDragExited);
+ object58.setOnMouseDragOver(controller::mouseDragOver);
+ object58.setOnMouseDragReleased(controller::mouseDragReleased);
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ controller.separatorV = object59;
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ controller.sliderH = object60;
+ object60.setOnContextMenuRequested(controller::contextMenuRequested);
+ object60.setOnMouseClicked(e -> controller.mouseClicked());
+ object60.setOnMouseDragged(controller::mouseDragged);
+ object60.setOnMouseEntered(controller::mouseEntered);
+ object60.setOnMouseExited(controller::mouseExited);
+ object60.setOnMouseMoved(controller::mouseMoved);
+ object60.setOnMousePressed(controller::mousePressed);
+ object60.setOnMouseReleased(controller::mouseReleased);
+ object60.setOnScroll(controller::onScroll);
+ object60.setOnScrollFinished(controller::onScrollFinished);
+ object60.setOnScrollStarted(controller::onScrollStarted);
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ controller.sliderV = object61;
+ object61.setOnZoom(controller::onZoom);
+ object61.setOnZoomFinished(controller::onZoomFinished);
+ object61.setOnZoomStarted(controller::onZoomStarted);
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner();
+ controller.spinner = object62;
+ javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object62, 13);
+ final var object63 = new javafx.scene.control.SplitMenuButton();
+ controller.splitMenuButton = object63;
+ object63.setMnemonicParsing(false);
+ object63.setText("SplitMenuButton");
+ javafx.scene.layout.GridPane.setRowIndex(object63, 14);
+ final var object64 = new javafx.scene.control.MenuItem();
+ controller.item1 = object64;
+ object64.setMnemonicParsing(false);
+ object64.setText("Action 1");
+ final var object65 = new javafx.scene.control.MenuItem();
+ controller.item2 = object65;
+ object65.setMnemonicParsing(false);
+ object65.setText("Action 2");
+ object63.getItems().addAll(object64, object65);
+ final var object66 = new javafx.scene.control.TableView();
+ controller.tableView = object66;
+ object66.setPrefHeight(200.0);
+ object66.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object66, 14);
+ final var object67 = new javafx.scene.control.TableColumn();
+ controller.tableColumn1 = object67;
+ object67.setPrefWidth(75.0);
+ object67.setText("C1");
+ final var object68 = new javafx.scene.control.TableColumn();
+ controller.tableColumn2 = object68;
+ object68.setPrefWidth(75.0);
+ object68.setText("C2");
+ object66.getColumns().addAll(object67, object68);
+ final var object69 = new javafx.scene.control.TextArea();
+ controller.textArea = object69;
+ object69.setPrefHeight(200.0);
+ object69.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object69, 15);
+ final var object70 = new javafx.scene.control.TextField();
+ controller.textField = object70;
+ javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object70, 15);
+ final var object71 = new javafx.scene.control.ToggleButton();
+ object71.setMnemonicParsing(false);
+ object71.setOnAction(controller::onAction);
+ object71.setOnRotate(controller::onRotate);
+ object71.setOnRotationFinished(controller::onRotationFinished);
+ object71.setOnRotationStarted(controller::onRotationStarted);
+ object71.setText("ToggleButton");
+ javafx.scene.layout.GridPane.setRowIndex(object71, 16);
+ final var object72 = new javafx.scene.control.TreeTableView>();
+ controller.treeTableView = object72;
+ object72.setPrefHeight(200.0);
+ object72.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object72, 16);
+ final var object73 = new javafx.scene.control.TreeTableColumn, String>();
+ controller.treeTableColumn1 = object73;
+ object73.setOnEditCancel(controller::onEditCancel);
+ object73.setOnEditCommit(controller::onEditCommit);
+ object73.setOnEditStart(controller::onEditStart);
+ object73.setPrefWidth(75.0);
+ object73.setText("C1");
+ final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
+ controller.treeTableColumn2 = object74;
+ object74.setPrefWidth(75.0);
+ object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
+ object74.setText("C2");
+ object72.getColumns().addAll(object73, object74);
+ final var object75 = new javafx.scene.control.TreeView();
+ controller.treeView = object75;
+ object75.setOnSwipeDown(controller::onSwipeDown);
+ object75.setOnSwipeLeft(controller::onSwipeLeft);
+ object75.setOnSwipeRight(controller::onSwipeRight);
+ object75.setOnSwipeUp(controller::onSwipeUp);
+ object75.setPrefHeight(200.0);
+ object75.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object75, 17);
+ final var object76 = new javafx.scene.web.WebView();
+ controller.webView = object76;
+ object76.setOnTouchMoved(controller::onTouchMoved);
+ object76.setOnTouchPressed(controller::onTouchPressed);
+ object76.setOnTouchReleased(controller::onTouchReleased);
+ object76.setOnTouchStationary(controller::onTouchStationary);
+ object76.setPrefHeight(200.0);
+ object76.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object76, 17);
+ object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
+ controller.initialize();
+ loaded = true;
+ return object0;
+}
+
+
+
+ /**
+ * @return The controller
+ */
+ public com.github.gtache.fxml.compiler.impl.ControlsController controller() {
+ if (loaded) {
+ return controller;
+ } else {
+ throw new IllegalStateException("Not loaded");
+ }
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-getbundle.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-getbundle.txt
new file mode 100644
index 0000000..fa1aa39
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-getbundle.txt
@@ -0,0 +1,425 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, Object> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controller The controller
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controller The controller
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, Object> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ final var bundle = ResourceBundle.getBundle("com.github.gtache.fxml.compiler.impl.ControlsBundle");
+ controller = (com.github.gtache.fxml.compiler.impl.ControlsController) controllersMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ final var object0 = new javafx.scene.layout.GridPane();
+ controller.gridPane = object0;
+ object0.setOnInputMethodTextChanged(controller::inputMethodTextChanged);
+ object0.setOnKeyPressed(e -> controller.keyPressed());
+ object0.setOnKeyReleased(controller::keyReleased);
+ object0.setOnKeyTyped(controller::keyTyped);
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ controller.button = object22;
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ controller.checkBox = object23;
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ controller.choiceBox = object24;
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ controller.colorPicker = object25;
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ controller.color = object26;
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ controller.comboBox = object28;
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ controller.datePicker = object31;
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ controller.htmlEditor = object32;
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ controller.hyperlink = object33;
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ controller.imageView = object34;
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ controller.label = object35;
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(bundle.getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ controller.listView = object36;
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ controller.mediaView = object37;
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ controller.menuBar = object38;
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ controller.menu1 = object39;
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ controller.menuItem1 = object40;
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ controller.menuButton = object45;
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ controller.pagination = object49;
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ controller.passwordField = object51;
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ controller.progressBar = object52;
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ controller.progressIndicator = object53;
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ controller.radioButton = object55;
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarH = object56;
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarV = object57;
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ controller.separatorH = object58;
+ object58.setOnDragDetected(controller::dragDetected);
+ object58.setOnDragDone(controller::dragDone);
+ object58.setOnDragDropped(controller::dragDropped);
+ object58.setOnDragEntered(controller::dragEntered);
+ object58.setOnDragExited(controller::dragExited);
+ object58.setOnDragOver(controller::dragOver);
+ object58.setOnMouseDragEntered(controller::mouseDragEntered);
+ object58.setOnMouseDragExited(controller::mouseDragExited);
+ object58.setOnMouseDragOver(controller::mouseDragOver);
+ object58.setOnMouseDragReleased(controller::mouseDragReleased);
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ controller.separatorV = object59;
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ controller.sliderH = object60;
+ object60.setOnContextMenuRequested(controller::contextMenuRequested);
+ object60.setOnMouseClicked(e -> controller.mouseClicked());
+ object60.setOnMouseDragged(controller::mouseDragged);
+ object60.setOnMouseEntered(controller::mouseEntered);
+ object60.setOnMouseExited(controller::mouseExited);
+ object60.setOnMouseMoved(controller::mouseMoved);
+ object60.setOnMousePressed(controller::mousePressed);
+ object60.setOnMouseReleased(controller::mouseReleased);
+ object60.setOnScroll(controller::onScroll);
+ object60.setOnScrollFinished(controller::onScrollFinished);
+ object60.setOnScrollStarted(controller::onScrollStarted);
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ controller.sliderV = object61;
+ object61.setOnZoom(controller::onZoom);
+ object61.setOnZoomFinished(controller::onZoomFinished);
+ object61.setOnZoomStarted(controller::onZoomStarted);
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner();
+ controller.spinner = object62;
+ javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object62, 13);
+ final var object63 = new javafx.scene.control.SplitMenuButton();
+ controller.splitMenuButton = object63;
+ object63.setMnemonicParsing(false);
+ object63.setText("SplitMenuButton");
+ javafx.scene.layout.GridPane.setRowIndex(object63, 14);
+ final var object64 = new javafx.scene.control.MenuItem();
+ controller.item1 = object64;
+ object64.setMnemonicParsing(false);
+ object64.setText("Action 1");
+ final var object65 = new javafx.scene.control.MenuItem();
+ controller.item2 = object65;
+ object65.setMnemonicParsing(false);
+ object65.setText("Action 2");
+ object63.getItems().addAll(object64, object65);
+ final var object66 = new javafx.scene.control.TableView();
+ controller.tableView = object66;
+ object66.setPrefHeight(200.0);
+ object66.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object66, 14);
+ final var object67 = new javafx.scene.control.TableColumn();
+ controller.tableColumn1 = object67;
+ object67.setPrefWidth(75.0);
+ object67.setText("C1");
+ final var object68 = new javafx.scene.control.TableColumn();
+ controller.tableColumn2 = object68;
+ object68.setPrefWidth(75.0);
+ object68.setText("C2");
+ object66.getColumns().addAll(object67, object68);
+ final var object69 = new javafx.scene.control.TextArea();
+ controller.textArea = object69;
+ object69.setPrefHeight(200.0);
+ object69.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object69, 15);
+ final var object70 = new javafx.scene.control.TextField();
+ controller.textField = object70;
+ javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object70, 15);
+ final var object71 = new javafx.scene.control.ToggleButton();
+ object71.setMnemonicParsing(false);
+ object71.setOnAction(controller::onAction);
+ object71.setOnRotate(controller::onRotate);
+ object71.setOnRotationFinished(controller::onRotationFinished);
+ object71.setOnRotationStarted(controller::onRotationStarted);
+ object71.setText("ToggleButton");
+ javafx.scene.layout.GridPane.setRowIndex(object71, 16);
+ final var object72 = new javafx.scene.control.TreeTableView>();
+ controller.treeTableView = object72;
+ object72.setPrefHeight(200.0);
+ object72.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object72, 16);
+ final var object73 = new javafx.scene.control.TreeTableColumn, String>();
+ controller.treeTableColumn1 = object73;
+ object73.setOnEditCancel(controller::onEditCancel);
+ object73.setOnEditCommit(controller::onEditCommit);
+ object73.setOnEditStart(controller::onEditStart);
+ object73.setPrefWidth(75.0);
+ object73.setText("C1");
+ final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
+ controller.treeTableColumn2 = object74;
+ object74.setPrefWidth(75.0);
+ object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
+ object74.setText("C2");
+ object72.getColumns().addAll(object73, object74);
+ final var object75 = new javafx.scene.control.TreeView();
+ controller.treeView = object75;
+ object75.setOnSwipeDown(controller::onSwipeDown);
+ object75.setOnSwipeLeft(controller::onSwipeLeft);
+ object75.setOnSwipeRight(controller::onSwipeRight);
+ object75.setOnSwipeUp(controller::onSwipeUp);
+ object75.setPrefHeight(200.0);
+ object75.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object75, 17);
+ final var object76 = new javafx.scene.web.WebView();
+ controller.webView = object76;
+ object76.setOnTouchMoved(controller::onTouchMoved);
+ object76.setOnTouchPressed(controller::onTouchPressed);
+ object76.setOnTouchReleased(controller::onTouchReleased);
+ object76.setOnTouchStationary(controller::onTouchStationary);
+ object76.setPrefHeight(200.0);
+ object76.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object76, 17);
+ object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
+ controller.initialize();
+ loaded = true;
+ return object0;
+}
+
+
+
+ /**
+ * @return The controller
+ */
+ public com.github.gtache.fxml.compiler.impl.ControlsController controller() {
+ if (loaded) {
+ return controller;
+ } else {
+ throw new IllegalStateException("Not loaded");
+ }
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-getter.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-getter.txt
new file mode 100644
index 0000000..81b8de3
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reference-getter.txt
@@ -0,0 +1,424 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, Object> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controller The controller
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controller The controller
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, Object> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ controller = (com.github.gtache.fxml.compiler.impl.ControlsController) controllersMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ final var object0 = new javafx.scene.layout.GridPane();
+ controller.gridPane = object0;
+ object0.setOnInputMethodTextChanged(controller::inputMethodTextChanged);
+ object0.setOnKeyPressed(e -> controller.keyPressed());
+ object0.setOnKeyReleased(controller::keyReleased);
+ object0.setOnKeyTyped(controller::keyTyped);
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ controller.button = object22;
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ controller.checkBox = object23;
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ controller.choiceBox = object24;
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ controller.colorPicker = object25;
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ controller.color = object26;
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ controller.comboBox = object28;
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ controller.datePicker = object31;
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ controller.htmlEditor = object32;
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ controller.hyperlink = object33;
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ controller.imageView = object34;
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ controller.label = object35;
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(controller.resources().getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ controller.listView = object36;
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ controller.mediaView = object37;
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ controller.menuBar = object38;
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ controller.menu1 = object39;
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ controller.menuItem1 = object40;
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ controller.menuButton = object45;
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ controller.pagination = object49;
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ controller.passwordField = object51;
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ controller.progressBar = object52;
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ controller.progressIndicator = object53;
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ controller.radioButton = object55;
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarH = object56;
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarV = object57;
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ controller.separatorH = object58;
+ object58.setOnDragDetected(controller::dragDetected);
+ object58.setOnDragDone(controller::dragDone);
+ object58.setOnDragDropped(controller::dragDropped);
+ object58.setOnDragEntered(controller::dragEntered);
+ object58.setOnDragExited(controller::dragExited);
+ object58.setOnDragOver(controller::dragOver);
+ object58.setOnMouseDragEntered(controller::mouseDragEntered);
+ object58.setOnMouseDragExited(controller::mouseDragExited);
+ object58.setOnMouseDragOver(controller::mouseDragOver);
+ object58.setOnMouseDragReleased(controller::mouseDragReleased);
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ controller.separatorV = object59;
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ controller.sliderH = object60;
+ object60.setOnContextMenuRequested(controller::contextMenuRequested);
+ object60.setOnMouseClicked(e -> controller.mouseClicked());
+ object60.setOnMouseDragged(controller::mouseDragged);
+ object60.setOnMouseEntered(controller::mouseEntered);
+ object60.setOnMouseExited(controller::mouseExited);
+ object60.setOnMouseMoved(controller::mouseMoved);
+ object60.setOnMousePressed(controller::mousePressed);
+ object60.setOnMouseReleased(controller::mouseReleased);
+ object60.setOnScroll(controller::onScroll);
+ object60.setOnScrollFinished(controller::onScrollFinished);
+ object60.setOnScrollStarted(controller::onScrollStarted);
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ controller.sliderV = object61;
+ object61.setOnZoom(controller::onZoom);
+ object61.setOnZoomFinished(controller::onZoomFinished);
+ object61.setOnZoomStarted(controller::onZoomStarted);
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner();
+ controller.spinner = object62;
+ javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object62, 13);
+ final var object63 = new javafx.scene.control.SplitMenuButton();
+ controller.splitMenuButton = object63;
+ object63.setMnemonicParsing(false);
+ object63.setText("SplitMenuButton");
+ javafx.scene.layout.GridPane.setRowIndex(object63, 14);
+ final var object64 = new javafx.scene.control.MenuItem();
+ controller.item1 = object64;
+ object64.setMnemonicParsing(false);
+ object64.setText("Action 1");
+ final var object65 = new javafx.scene.control.MenuItem();
+ controller.item2 = object65;
+ object65.setMnemonicParsing(false);
+ object65.setText("Action 2");
+ object63.getItems().addAll(object64, object65);
+ final var object66 = new javafx.scene.control.TableView();
+ controller.tableView = object66;
+ object66.setPrefHeight(200.0);
+ object66.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object66, 14);
+ final var object67 = new javafx.scene.control.TableColumn();
+ controller.tableColumn1 = object67;
+ object67.setPrefWidth(75.0);
+ object67.setText("C1");
+ final var object68 = new javafx.scene.control.TableColumn();
+ controller.tableColumn2 = object68;
+ object68.setPrefWidth(75.0);
+ object68.setText("C2");
+ object66.getColumns().addAll(object67, object68);
+ final var object69 = new javafx.scene.control.TextArea();
+ controller.textArea = object69;
+ object69.setPrefHeight(200.0);
+ object69.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object69, 15);
+ final var object70 = new javafx.scene.control.TextField();
+ controller.textField = object70;
+ javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object70, 15);
+ final var object71 = new javafx.scene.control.ToggleButton();
+ object71.setMnemonicParsing(false);
+ object71.setOnAction(controller::onAction);
+ object71.setOnRotate(controller::onRotate);
+ object71.setOnRotationFinished(controller::onRotationFinished);
+ object71.setOnRotationStarted(controller::onRotationStarted);
+ object71.setText("ToggleButton");
+ javafx.scene.layout.GridPane.setRowIndex(object71, 16);
+ final var object72 = new javafx.scene.control.TreeTableView>();
+ controller.treeTableView = object72;
+ object72.setPrefHeight(200.0);
+ object72.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object72, 16);
+ final var object73 = new javafx.scene.control.TreeTableColumn, String>();
+ controller.treeTableColumn1 = object73;
+ object73.setOnEditCancel(controller::onEditCancel);
+ object73.setOnEditCommit(controller::onEditCommit);
+ object73.setOnEditStart(controller::onEditStart);
+ object73.setPrefWidth(75.0);
+ object73.setText("C1");
+ final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
+ controller.treeTableColumn2 = object74;
+ object74.setPrefWidth(75.0);
+ object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
+ object74.setText("C2");
+ object72.getColumns().addAll(object73, object74);
+ final var object75 = new javafx.scene.control.TreeView();
+ controller.treeView = object75;
+ object75.setOnSwipeDown(controller::onSwipeDown);
+ object75.setOnSwipeLeft(controller::onSwipeLeft);
+ object75.setOnSwipeRight(controller::onSwipeRight);
+ object75.setOnSwipeUp(controller::onSwipeUp);
+ object75.setPrefHeight(200.0);
+ object75.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object75, 17);
+ final var object76 = new javafx.scene.web.WebView();
+ controller.webView = object76;
+ object76.setOnTouchMoved(controller::onTouchMoved);
+ object76.setOnTouchPressed(controller::onTouchPressed);
+ object76.setOnTouchReleased(controller::onTouchReleased);
+ object76.setOnTouchStationary(controller::onTouchStationary);
+ object76.setPrefHeight(200.0);
+ object76.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object76, 17);
+ object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
+ controller.initialize();
+ loaded = true;
+ return object0;
+}
+
+
+
+ /**
+ * @return The controller
+ */
+ public com.github.gtache.fxml.compiler.impl.ControlsController controller() {
+ if (loaded) {
+ return controller;
+ } else {
+ throw new IllegalStateException("Not loaded");
+ }
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-constructor.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-constructor.txt
new file mode 100644
index 0000000..1d21add
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-constructor.txt
@@ -0,0 +1,469 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import javafx.event.Event;
+import java.lang.reflect.Method;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, Object> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controller The controller
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controller The controller
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, Object> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ controller = (com.github.gtache.fxml.compiler.impl.ControlsController) controllersMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ final var object0 = new javafx.scene.layout.GridPane();
+ controller.gridPane = object0;
+ object0.setOnInputMethodTextChanged(e -> callMethod("inputMethodTextChanged", e));
+ object0.setOnKeyPressed(e -> callMethod("keyPressed", e));
+ object0.setOnKeyReleased(e -> callMethod("keyReleased", e));
+ object0.setOnKeyTyped(e -> callMethod("keyTyped", e));
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ controller.button = object22;
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ controller.checkBox = object23;
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ controller.choiceBox = object24;
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ controller.colorPicker = object25;
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ controller.color = object26;
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ controller.comboBox = object28;
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ controller.datePicker = object31;
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ controller.htmlEditor = object32;
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ controller.hyperlink = object33;
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ controller.imageView = object34;
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ controller.label = object35;
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(bundle.getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ controller.listView = object36;
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ controller.mediaView = object37;
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ controller.menuBar = object38;
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ controller.menu1 = object39;
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ controller.menuItem1 = object40;
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ controller.menuButton = object45;
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ controller.pagination = object49;
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ controller.passwordField = object51;
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ controller.progressBar = object52;
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ controller.progressIndicator = object53;
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ controller.radioButton = object55;
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarH = object56;
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarV = object57;
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ controller.separatorH = object58;
+ object58.setOnDragDetected(e -> callMethod("dragDetected", e));
+ object58.setOnDragDone(e -> callMethod("dragDone", e));
+ object58.setOnDragDropped(e -> callMethod("dragDropped", e));
+ object58.setOnDragEntered(e -> callMethod("dragEntered", e));
+ object58.setOnDragExited(e -> callMethod("dragExited", e));
+ object58.setOnDragOver(e -> callMethod("dragOver", e));
+ object58.setOnMouseDragEntered(e -> callMethod("mouseDragEntered", e));
+ object58.setOnMouseDragExited(e -> callMethod("mouseDragExited", e));
+ object58.setOnMouseDragOver(e -> callMethod("mouseDragOver", e));
+ object58.setOnMouseDragReleased(e -> callMethod("mouseDragReleased", e));
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ controller.separatorV = object59;
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ controller.sliderH = object60;
+ object60.setOnContextMenuRequested(e -> callMethod("contextMenuRequested", e));
+ object60.setOnMouseClicked(e -> callMethod("mouseClicked", e));
+ object60.setOnMouseDragged(e -> callMethod("mouseDragged", e));
+ object60.setOnMouseEntered(e -> callMethod("mouseEntered", e));
+ object60.setOnMouseExited(e -> callMethod("mouseExited", e));
+ object60.setOnMouseMoved(e -> callMethod("mouseMoved", e));
+ object60.setOnMousePressed(e -> callMethod("mousePressed", e));
+ object60.setOnMouseReleased(e -> callMethod("mouseReleased", e));
+ object60.setOnScroll(e -> callMethod("onScroll", e));
+ object60.setOnScrollFinished(e -> callMethod("onScrollFinished", e));
+ object60.setOnScrollStarted(e -> callMethod("onScrollStarted", e));
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ controller.sliderV = object61;
+ object61.setOnZoom(e -> callMethod("onZoom", e));
+ object61.setOnZoomFinished(e -> callMethod("onZoomFinished", e));
+ object61.setOnZoomStarted(e -> callMethod("onZoomStarted", e));
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner();
+ controller.spinner = object62;
+ javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object62, 13);
+ final var object63 = new javafx.scene.control.SplitMenuButton();
+ controller.splitMenuButton = object63;
+ object63.setMnemonicParsing(false);
+ object63.setText("SplitMenuButton");
+ javafx.scene.layout.GridPane.setRowIndex(object63, 14);
+ final var object64 = new javafx.scene.control.MenuItem();
+ controller.item1 = object64;
+ object64.setMnemonicParsing(false);
+ object64.setText("Action 1");
+ final var object65 = new javafx.scene.control.MenuItem();
+ controller.item2 = object65;
+ object65.setMnemonicParsing(false);
+ object65.setText("Action 2");
+ object63.getItems().addAll(object64, object65);
+ final var object66 = new javafx.scene.control.TableView();
+ controller.tableView = object66;
+ object66.setPrefHeight(200.0);
+ object66.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object66, 14);
+ final var object67 = new javafx.scene.control.TableColumn();
+ controller.tableColumn1 = object67;
+ object67.setPrefWidth(75.0);
+ object67.setText("C1");
+ final var object68 = new javafx.scene.control.TableColumn();
+ controller.tableColumn2 = object68;
+ object68.setPrefWidth(75.0);
+ object68.setText("C2");
+ object66.getColumns().addAll(object67, object68);
+ final var object69 = new javafx.scene.control.TextArea();
+ controller.textArea = object69;
+ object69.setPrefHeight(200.0);
+ object69.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object69, 15);
+ final var object70 = new javafx.scene.control.TextField();
+ controller.textField = object70;
+ javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object70, 15);
+ final var object71 = new javafx.scene.control.ToggleButton();
+ object71.setMnemonicParsing(false);
+ object71.setOnAction(e -> callMethod("onAction", e));
+ object71.setOnRotate(e -> callMethod("onRotate", e));
+ object71.setOnRotationFinished(e -> callMethod("onRotationFinished", e));
+ object71.setOnRotationStarted(e -> callMethod("onRotationStarted", e));
+ object71.setText("ToggleButton");
+ javafx.scene.layout.GridPane.setRowIndex(object71, 16);
+ final var object72 = new javafx.scene.control.TreeTableView>();
+ controller.treeTableView = object72;
+ object72.setPrefHeight(200.0);
+ object72.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object72, 16);
+ final var object73 = new javafx.scene.control.TreeTableColumn, String>();
+ controller.treeTableColumn1 = object73;
+ object73.setOnEditCancel(e -> callMethod("onEditCancel", e));
+ object73.setOnEditCommit(e -> callMethod("onEditCommit", e));
+ object73.setOnEditStart(e -> callMethod("onEditStart", e));
+ object73.setPrefWidth(75.0);
+ object73.setText("C1");
+ final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
+ controller.treeTableColumn2 = object74;
+ object74.setPrefWidth(75.0);
+ object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
+ object74.setText("C2");
+ object72.getColumns().addAll(object73, object74);
+ final var object75 = new javafx.scene.control.TreeView();
+ controller.treeView = object75;
+ object75.setOnSwipeDown(e -> callMethod("onSwipeDown", e));
+ object75.setOnSwipeLeft(e -> callMethod("onSwipeLeft", e));
+ object75.setOnSwipeRight(e -> callMethod("onSwipeRight", e));
+ object75.setOnSwipeUp(e -> callMethod("onSwipeUp", e));
+ object75.setPrefHeight(200.0);
+ object75.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object75, 17);
+ final var object76 = new javafx.scene.web.WebView();
+ controller.webView = object76;
+ object76.setOnTouchMoved(e -> callMethod("onTouchMoved", e));
+ object76.setOnTouchPressed(e -> callMethod("onTouchPressed", e));
+ object76.setOnTouchReleased(e -> callMethod("onTouchReleased", e));
+ object76.setOnTouchStationary(e -> callMethod("onTouchStationary", e));
+ object76.setPrefHeight(200.0);
+ object76.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object76, 17);
+ object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
+ try {
+ final var initialize = controller.getClass().getDeclaredMethod("initialize");
+ initialize.setAccessible(true);
+ initialize.invoke(controller);
+ } catch (final InvocationTargetException | IllegalAccessException e) {
+ throw new RuntimeException("Error using reflection", e);
+ } catch (final NoSuchMethodException ignored) {
+ }
+ loaded = true;
+ return object0;
+}
+
+ private void callMethod(final String methodName, final T event) {
+ try {
+ final Method method;
+ final var methods = Arrays.stream(controller.getClass().getDeclaredMethods())
+ .filter(m -> m.getName().equals(methodName)).toList();
+ if (methods.size() > 1) {
+ final var eventMethods = methods.stream().filter(m ->
+ m.getParameterCount() == 1 && Event.class.isAssignableFrom(m.getParameterTypes()[0])).toList();
+ if (eventMethods.size() == 1) {
+ method = eventMethods.getFirst();
+ } else {
+ final var emptyMethods = methods.stream().filter(m -> m.getParameterCount() == 0).toList();
+ if (emptyMethods.size() == 1) {
+ method = emptyMethods.getFirst();
+ } else {
+ throw new IllegalArgumentException("Multiple matching methods for " + methodName);
+ }
+ }
+ } else if (methods.size() == 1) {
+ method = methods.getFirst();
+ } else {
+ throw new IllegalArgumentException("No matching method for " + methodName);
+ }
+ method.setAccessible(true);
+ if (method.getParameterCount() == 0) {
+ method.invoke(controller);
+ } else {
+ method.invoke(controller, event);
+ }
+ } catch (final IllegalAccessException | InvocationTargetException ex) {
+ throw new RuntimeException("Error using reflection on " + methodName, ex);
+ }
+}
+
+
+ /**
+ * @return The controller
+ */
+ public com.github.gtache.fxml.compiler.impl.ControlsController controller() {
+ if (loaded) {
+ return controller;
+ } else {
+ throw new IllegalStateException("Not loaded");
+ }
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-getbundle.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-getbundle.txt
new file mode 100644
index 0000000..55a5da4
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-getbundle.txt
@@ -0,0 +1,469 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import javafx.event.Event;
+import java.lang.reflect.Method;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, Object> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controller The controller
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controller The controller
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, Object> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ final var bundle = ResourceBundle.getBundle("com.github.gtache.fxml.compiler.impl.ControlsBundle");
+ controller = (com.github.gtache.fxml.compiler.impl.ControlsController) controllersMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ final var object0 = new javafx.scene.layout.GridPane();
+ controller.gridPane = object0;
+ object0.setOnInputMethodTextChanged(e -> callMethod("inputMethodTextChanged", e));
+ object0.setOnKeyPressed(e -> callMethod("keyPressed", e));
+ object0.setOnKeyReleased(e -> callMethod("keyReleased", e));
+ object0.setOnKeyTyped(e -> callMethod("keyTyped", e));
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ controller.button = object22;
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ controller.checkBox = object23;
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ controller.choiceBox = object24;
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ controller.colorPicker = object25;
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ controller.color = object26;
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ controller.comboBox = object28;
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ controller.datePicker = object31;
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ controller.htmlEditor = object32;
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ controller.hyperlink = object33;
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ controller.imageView = object34;
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ controller.label = object35;
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(bundle.getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ controller.listView = object36;
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ controller.mediaView = object37;
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ controller.menuBar = object38;
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ controller.menu1 = object39;
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ controller.menuItem1 = object40;
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ controller.menuButton = object45;
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ controller.pagination = object49;
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ controller.passwordField = object51;
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ controller.progressBar = object52;
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ controller.progressIndicator = object53;
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ controller.radioButton = object55;
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarH = object56;
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarV = object57;
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ controller.separatorH = object58;
+ object58.setOnDragDetected(e -> callMethod("dragDetected", e));
+ object58.setOnDragDone(e -> callMethod("dragDone", e));
+ object58.setOnDragDropped(e -> callMethod("dragDropped", e));
+ object58.setOnDragEntered(e -> callMethod("dragEntered", e));
+ object58.setOnDragExited(e -> callMethod("dragExited", e));
+ object58.setOnDragOver(e -> callMethod("dragOver", e));
+ object58.setOnMouseDragEntered(e -> callMethod("mouseDragEntered", e));
+ object58.setOnMouseDragExited(e -> callMethod("mouseDragExited", e));
+ object58.setOnMouseDragOver(e -> callMethod("mouseDragOver", e));
+ object58.setOnMouseDragReleased(e -> callMethod("mouseDragReleased", e));
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ controller.separatorV = object59;
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ controller.sliderH = object60;
+ object60.setOnContextMenuRequested(e -> callMethod("contextMenuRequested", e));
+ object60.setOnMouseClicked(e -> callMethod("mouseClicked", e));
+ object60.setOnMouseDragged(e -> callMethod("mouseDragged", e));
+ object60.setOnMouseEntered(e -> callMethod("mouseEntered", e));
+ object60.setOnMouseExited(e -> callMethod("mouseExited", e));
+ object60.setOnMouseMoved(e -> callMethod("mouseMoved", e));
+ object60.setOnMousePressed(e -> callMethod("mousePressed", e));
+ object60.setOnMouseReleased(e -> callMethod("mouseReleased", e));
+ object60.setOnScroll(e -> callMethod("onScroll", e));
+ object60.setOnScrollFinished(e -> callMethod("onScrollFinished", e));
+ object60.setOnScrollStarted(e -> callMethod("onScrollStarted", e));
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ controller.sliderV = object61;
+ object61.setOnZoom(e -> callMethod("onZoom", e));
+ object61.setOnZoomFinished(e -> callMethod("onZoomFinished", e));
+ object61.setOnZoomStarted(e -> callMethod("onZoomStarted", e));
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner();
+ controller.spinner = object62;
+ javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object62, 13);
+ final var object63 = new javafx.scene.control.SplitMenuButton();
+ controller.splitMenuButton = object63;
+ object63.setMnemonicParsing(false);
+ object63.setText("SplitMenuButton");
+ javafx.scene.layout.GridPane.setRowIndex(object63, 14);
+ final var object64 = new javafx.scene.control.MenuItem();
+ controller.item1 = object64;
+ object64.setMnemonicParsing(false);
+ object64.setText("Action 1");
+ final var object65 = new javafx.scene.control.MenuItem();
+ controller.item2 = object65;
+ object65.setMnemonicParsing(false);
+ object65.setText("Action 2");
+ object63.getItems().addAll(object64, object65);
+ final var object66 = new javafx.scene.control.TableView();
+ controller.tableView = object66;
+ object66.setPrefHeight(200.0);
+ object66.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object66, 14);
+ final var object67 = new javafx.scene.control.TableColumn();
+ controller.tableColumn1 = object67;
+ object67.setPrefWidth(75.0);
+ object67.setText("C1");
+ final var object68 = new javafx.scene.control.TableColumn();
+ controller.tableColumn2 = object68;
+ object68.setPrefWidth(75.0);
+ object68.setText("C2");
+ object66.getColumns().addAll(object67, object68);
+ final var object69 = new javafx.scene.control.TextArea();
+ controller.textArea = object69;
+ object69.setPrefHeight(200.0);
+ object69.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object69, 15);
+ final var object70 = new javafx.scene.control.TextField();
+ controller.textField = object70;
+ javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object70, 15);
+ final var object71 = new javafx.scene.control.ToggleButton();
+ object71.setMnemonicParsing(false);
+ object71.setOnAction(e -> callMethod("onAction", e));
+ object71.setOnRotate(e -> callMethod("onRotate", e));
+ object71.setOnRotationFinished(e -> callMethod("onRotationFinished", e));
+ object71.setOnRotationStarted(e -> callMethod("onRotationStarted", e));
+ object71.setText("ToggleButton");
+ javafx.scene.layout.GridPane.setRowIndex(object71, 16);
+ final var object72 = new javafx.scene.control.TreeTableView>();
+ controller.treeTableView = object72;
+ object72.setPrefHeight(200.0);
+ object72.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object72, 16);
+ final var object73 = new javafx.scene.control.TreeTableColumn, String>();
+ controller.treeTableColumn1 = object73;
+ object73.setOnEditCancel(e -> callMethod("onEditCancel", e));
+ object73.setOnEditCommit(e -> callMethod("onEditCommit", e));
+ object73.setOnEditStart(e -> callMethod("onEditStart", e));
+ object73.setPrefWidth(75.0);
+ object73.setText("C1");
+ final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
+ controller.treeTableColumn2 = object74;
+ object74.setPrefWidth(75.0);
+ object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
+ object74.setText("C2");
+ object72.getColumns().addAll(object73, object74);
+ final var object75 = new javafx.scene.control.TreeView();
+ controller.treeView = object75;
+ object75.setOnSwipeDown(e -> callMethod("onSwipeDown", e));
+ object75.setOnSwipeLeft(e -> callMethod("onSwipeLeft", e));
+ object75.setOnSwipeRight(e -> callMethod("onSwipeRight", e));
+ object75.setOnSwipeUp(e -> callMethod("onSwipeUp", e));
+ object75.setPrefHeight(200.0);
+ object75.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object75, 17);
+ final var object76 = new javafx.scene.web.WebView();
+ controller.webView = object76;
+ object76.setOnTouchMoved(e -> callMethod("onTouchMoved", e));
+ object76.setOnTouchPressed(e -> callMethod("onTouchPressed", e));
+ object76.setOnTouchReleased(e -> callMethod("onTouchReleased", e));
+ object76.setOnTouchStationary(e -> callMethod("onTouchStationary", e));
+ object76.setPrefHeight(200.0);
+ object76.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object76, 17);
+ object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
+ try {
+ final var initialize = controller.getClass().getDeclaredMethod("initialize");
+ initialize.setAccessible(true);
+ initialize.invoke(controller);
+ } catch (final InvocationTargetException | IllegalAccessException e) {
+ throw new RuntimeException("Error using reflection", e);
+ } catch (final NoSuchMethodException ignored) {
+ }
+ loaded = true;
+ return object0;
+}
+
+ private void callMethod(final String methodName, final T event) {
+ try {
+ final Method method;
+ final var methods = Arrays.stream(controller.getClass().getDeclaredMethods())
+ .filter(m -> m.getName().equals(methodName)).toList();
+ if (methods.size() > 1) {
+ final var eventMethods = methods.stream().filter(m ->
+ m.getParameterCount() == 1 && Event.class.isAssignableFrom(m.getParameterTypes()[0])).toList();
+ if (eventMethods.size() == 1) {
+ method = eventMethods.getFirst();
+ } else {
+ final var emptyMethods = methods.stream().filter(m -> m.getParameterCount() == 0).toList();
+ if (emptyMethods.size() == 1) {
+ method = emptyMethods.getFirst();
+ } else {
+ throw new IllegalArgumentException("Multiple matching methods for " + methodName);
+ }
+ }
+ } else if (methods.size() == 1) {
+ method = methods.getFirst();
+ } else {
+ throw new IllegalArgumentException("No matching method for " + methodName);
+ }
+ method.setAccessible(true);
+ if (method.getParameterCount() == 0) {
+ method.invoke(controller);
+ } else {
+ method.invoke(controller, event);
+ }
+ } catch (final IllegalAccessException | InvocationTargetException ex) {
+ throw new RuntimeException("Error using reflection on " + methodName, ex);
+ }
+}
+
+
+ /**
+ * @return The controller
+ */
+ public com.github.gtache.fxml.compiler.impl.ControlsController controller() {
+ if (loaded) {
+ return controller;
+ } else {
+ throw new IllegalStateException("Not loaded");
+ }
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-getter.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-getter.txt
new file mode 100644
index 0000000..9732a42
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-assign-reflection-getter.txt
@@ -0,0 +1,468 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import javafx.event.Event;
+import java.lang.reflect.Method;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, Object> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controller The controller
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controller The controller
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final com.github.gtache.fxml.compiler.impl.ControlsController controller, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controller), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, Object> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ controller = (com.github.gtache.fxml.compiler.impl.ControlsController) controllersMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ final var object0 = new javafx.scene.layout.GridPane();
+ controller.gridPane = object0;
+ object0.setOnInputMethodTextChanged(e -> callMethod("inputMethodTextChanged", e));
+ object0.setOnKeyPressed(e -> callMethod("keyPressed", e));
+ object0.setOnKeyReleased(e -> callMethod("keyReleased", e));
+ object0.setOnKeyTyped(e -> callMethod("keyTyped", e));
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ controller.button = object22;
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ controller.checkBox = object23;
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ controller.choiceBox = object24;
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ controller.colorPicker = object25;
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ controller.color = object26;
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ controller.comboBox = object28;
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ controller.datePicker = object31;
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ controller.htmlEditor = object32;
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ controller.hyperlink = object33;
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ controller.imageView = object34;
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ controller.label = object35;
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(controller.resources().getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ controller.listView = object36;
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ controller.mediaView = object37;
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ controller.menuBar = object38;
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ controller.menu1 = object39;
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ controller.menuItem1 = object40;
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ controller.menuButton = object45;
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ controller.pagination = object49;
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ controller.passwordField = object51;
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ controller.progressBar = object52;
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ controller.progressIndicator = object53;
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ controller.radioButton = object55;
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarH = object56;
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ controller.scrollBarV = object57;
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ controller.separatorH = object58;
+ object58.setOnDragDetected(e -> callMethod("dragDetected", e));
+ object58.setOnDragDone(e -> callMethod("dragDone", e));
+ object58.setOnDragDropped(e -> callMethod("dragDropped", e));
+ object58.setOnDragEntered(e -> callMethod("dragEntered", e));
+ object58.setOnDragExited(e -> callMethod("dragExited", e));
+ object58.setOnDragOver(e -> callMethod("dragOver", e));
+ object58.setOnMouseDragEntered(e -> callMethod("mouseDragEntered", e));
+ object58.setOnMouseDragExited(e -> callMethod("mouseDragExited", e));
+ object58.setOnMouseDragOver(e -> callMethod("mouseDragOver", e));
+ object58.setOnMouseDragReleased(e -> callMethod("mouseDragReleased", e));
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ controller.separatorV = object59;
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ controller.sliderH = object60;
+ object60.setOnContextMenuRequested(e -> callMethod("contextMenuRequested", e));
+ object60.setOnMouseClicked(e -> callMethod("mouseClicked", e));
+ object60.setOnMouseDragged(e -> callMethod("mouseDragged", e));
+ object60.setOnMouseEntered(e -> callMethod("mouseEntered", e));
+ object60.setOnMouseExited(e -> callMethod("mouseExited", e));
+ object60.setOnMouseMoved(e -> callMethod("mouseMoved", e));
+ object60.setOnMousePressed(e -> callMethod("mousePressed", e));
+ object60.setOnMouseReleased(e -> callMethod("mouseReleased", e));
+ object60.setOnScroll(e -> callMethod("onScroll", e));
+ object60.setOnScrollFinished(e -> callMethod("onScrollFinished", e));
+ object60.setOnScrollStarted(e -> callMethod("onScrollStarted", e));
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ controller.sliderV = object61;
+ object61.setOnZoom(e -> callMethod("onZoom", e));
+ object61.setOnZoomFinished(e -> callMethod("onZoomFinished", e));
+ object61.setOnZoomStarted(e -> callMethod("onZoomStarted", e));
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner();
+ controller.spinner = object62;
+ javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object62, 13);
+ final var object63 = new javafx.scene.control.SplitMenuButton();
+ controller.splitMenuButton = object63;
+ object63.setMnemonicParsing(false);
+ object63.setText("SplitMenuButton");
+ javafx.scene.layout.GridPane.setRowIndex(object63, 14);
+ final var object64 = new javafx.scene.control.MenuItem();
+ controller.item1 = object64;
+ object64.setMnemonicParsing(false);
+ object64.setText("Action 1");
+ final var object65 = new javafx.scene.control.MenuItem();
+ controller.item2 = object65;
+ object65.setMnemonicParsing(false);
+ object65.setText("Action 2");
+ object63.getItems().addAll(object64, object65);
+ final var object66 = new javafx.scene.control.TableView();
+ controller.tableView = object66;
+ object66.setPrefHeight(200.0);
+ object66.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object66, 14);
+ final var object67 = new javafx.scene.control.TableColumn();
+ controller.tableColumn1 = object67;
+ object67.setPrefWidth(75.0);
+ object67.setText("C1");
+ final var object68 = new javafx.scene.control.TableColumn();
+ controller.tableColumn2 = object68;
+ object68.setPrefWidth(75.0);
+ object68.setText("C2");
+ object66.getColumns().addAll(object67, object68);
+ final var object69 = new javafx.scene.control.TextArea();
+ controller.textArea = object69;
+ object69.setPrefHeight(200.0);
+ object69.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object69, 15);
+ final var object70 = new javafx.scene.control.TextField();
+ controller.textField = object70;
+ javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object70, 15);
+ final var object71 = new javafx.scene.control.ToggleButton();
+ object71.setMnemonicParsing(false);
+ object71.setOnAction(e -> callMethod("onAction", e));
+ object71.setOnRotate(e -> callMethod("onRotate", e));
+ object71.setOnRotationFinished(e -> callMethod("onRotationFinished", e));
+ object71.setOnRotationStarted(e -> callMethod("onRotationStarted", e));
+ object71.setText("ToggleButton");
+ javafx.scene.layout.GridPane.setRowIndex(object71, 16);
+ final var object72 = new javafx.scene.control.TreeTableView>();
+ controller.treeTableView = object72;
+ object72.setPrefHeight(200.0);
+ object72.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object72, 16);
+ final var object73 = new javafx.scene.control.TreeTableColumn, String>();
+ controller.treeTableColumn1 = object73;
+ object73.setOnEditCancel(e -> callMethod("onEditCancel", e));
+ object73.setOnEditCommit(e -> callMethod("onEditCommit", e));
+ object73.setOnEditStart(e -> callMethod("onEditStart", e));
+ object73.setPrefWidth(75.0);
+ object73.setText("C1");
+ final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
+ controller.treeTableColumn2 = object74;
+ object74.setPrefWidth(75.0);
+ object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
+ object74.setText("C2");
+ object72.getColumns().addAll(object73, object74);
+ final var object75 = new javafx.scene.control.TreeView();
+ controller.treeView = object75;
+ object75.setOnSwipeDown(e -> callMethod("onSwipeDown", e));
+ object75.setOnSwipeLeft(e -> callMethod("onSwipeLeft", e));
+ object75.setOnSwipeRight(e -> callMethod("onSwipeRight", e));
+ object75.setOnSwipeUp(e -> callMethod("onSwipeUp", e));
+ object75.setPrefHeight(200.0);
+ object75.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object75, 17);
+ final var object76 = new javafx.scene.web.WebView();
+ controller.webView = object76;
+ object76.setOnTouchMoved(e -> callMethod("onTouchMoved", e));
+ object76.setOnTouchPressed(e -> callMethod("onTouchPressed", e));
+ object76.setOnTouchReleased(e -> callMethod("onTouchReleased", e));
+ object76.setOnTouchStationary(e -> callMethod("onTouchStationary", e));
+ object76.setPrefHeight(200.0);
+ object76.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object76, 17);
+ object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
+ try {
+ final var initialize = controller.getClass().getDeclaredMethod("initialize");
+ initialize.setAccessible(true);
+ initialize.invoke(controller);
+ } catch (final InvocationTargetException | IllegalAccessException e) {
+ throw new RuntimeException("Error using reflection", e);
+ } catch (final NoSuchMethodException ignored) {
+ }
+ loaded = true;
+ return object0;
+}
+
+ private void callMethod(final String methodName, final T event) {
+ try {
+ final Method method;
+ final var methods = Arrays.stream(controller.getClass().getDeclaredMethods())
+ .filter(m -> m.getName().equals(methodName)).toList();
+ if (methods.size() > 1) {
+ final var eventMethods = methods.stream().filter(m ->
+ m.getParameterCount() == 1 && Event.class.isAssignableFrom(m.getParameterTypes()[0])).toList();
+ if (eventMethods.size() == 1) {
+ method = eventMethods.getFirst();
+ } else {
+ final var emptyMethods = methods.stream().filter(m -> m.getParameterCount() == 0).toList();
+ if (emptyMethods.size() == 1) {
+ method = emptyMethods.getFirst();
+ } else {
+ throw new IllegalArgumentException("Multiple matching methods for " + methodName);
+ }
+ }
+ } else if (methods.size() == 1) {
+ method = methods.getFirst();
+ } else {
+ throw new IllegalArgumentException("No matching method for " + methodName);
+ }
+ method.setAccessible(true);
+ if (method.getParameterCount() == 0) {
+ method.invoke(controller);
+ } else {
+ method.invoke(controller, event);
+ }
+ } catch (final IllegalAccessException | InvocationTargetException ex) {
+ throw new RuntimeException("Error using reflection on " + methodName, ex);
+ }
+}
+
+
+ /**
+ * @return The controller
+ */
+ public com.github.gtache.fxml.compiler.impl.ControlsController controller() {
+ if (loaded) {
+ return controller;
+ } else {
+ throw new IllegalStateException("Not loaded");
+ }
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-factory-reference-constructor.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-factory-reference-constructor.txt
new file mode 100644
index 0000000..28000ab
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-factory-reference-constructor.txt
@@ -0,0 +1,428 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+import com.github.gtache.fxml.compiler.ControllerFactory;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, ControllerFactory>> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controllerFactory The controller factory
+ */
+ public ControlsController(final ControllerFactory controllerFactory) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controllerFactory), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controllerFactory The controller factory
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final ControllerFactory controllerFactory, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controllerFactory), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller factory
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, ControllerFactory>> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ final var bundle = resourceBundlesMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ final var fieldMap = new HashMap();
+ final var object0 = new javafx.scene.layout.GridPane();
+ fieldMap.put("gridPane", object0);
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ fieldMap.put("button", object22);
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ fieldMap.put("checkBox", object23);
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ fieldMap.put("choiceBox", object24);
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ fieldMap.put("colorPicker", object25);
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ fieldMap.put("color", object26);
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ fieldMap.put("comboBox", object28);
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ fieldMap.put("datePicker", object31);
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ fieldMap.put("htmlEditor", object32);
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ fieldMap.put("hyperlink", object33);
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ fieldMap.put("imageView", object34);
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ fieldMap.put("label", object35);
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(bundle.getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ fieldMap.put("listView", object36);
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ fieldMap.put("mediaView", object37);
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ fieldMap.put("menuBar", object38);
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ fieldMap.put("menu1", object39);
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ fieldMap.put("menuItem1", object40);
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ fieldMap.put("menuButton", object45);
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ fieldMap.put("pagination", object49);
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ fieldMap.put("passwordField", object51);
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ fieldMap.put("progressBar", object52);
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ fieldMap.put("progressIndicator", object53);
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ fieldMap.put("radioButton", object55);
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ fieldMap.put("scrollBarH", object56);
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ fieldMap.put("scrollBarV", object57);
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ fieldMap.put("separatorH", object58);
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ fieldMap.put("separatorV", object59);
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ fieldMap.put("sliderH", object60);
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ fieldMap.put("sliderV", object61);
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner();
+ fieldMap.put("spinner", object62);
+ javafx.scene.layout.GridPane.setColumnIndex(object62, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object62, 13);
+ final var object63 = new javafx.scene.control.SplitMenuButton();
+ fieldMap.put("splitMenuButton", object63);
+ object63.setMnemonicParsing(false);
+ object63.setText("SplitMenuButton");
+ javafx.scene.layout.GridPane.setRowIndex(object63, 14);
+ final var object64 = new javafx.scene.control.MenuItem();
+ fieldMap.put("item1", object64);
+ object64.setMnemonicParsing(false);
+ object64.setText("Action 1");
+ final var object65 = new javafx.scene.control.MenuItem();
+ fieldMap.put("item2", object65);
+ object65.setMnemonicParsing(false);
+ object65.setText("Action 2");
+ object63.getItems().addAll(object64, object65);
+ final var object66 = new javafx.scene.control.TableView();
+ fieldMap.put("tableView", object66);
+ object66.setPrefHeight(200.0);
+ object66.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object66, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object66, 14);
+ final var object67 = new javafx.scene.control.TableColumn();
+ fieldMap.put("tableColumn1", object67);
+ object67.setPrefWidth(75.0);
+ object67.setText("C1");
+ final var object68 = new javafx.scene.control.TableColumn();
+ fieldMap.put("tableColumn2", object68);
+ object68.setPrefWidth(75.0);
+ object68.setText("C2");
+ object66.getColumns().addAll(object67, object68);
+ final var object69 = new javafx.scene.control.TextArea();
+ fieldMap.put("textArea", object69);
+ object69.setPrefHeight(200.0);
+ object69.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object69, 15);
+ final var object70 = new javafx.scene.control.TextField();
+ fieldMap.put("textField", object70);
+ javafx.scene.layout.GridPane.setColumnIndex(object70, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object70, 15);
+ final var object71 = new javafx.scene.control.ToggleButton();
+ object71.setMnemonicParsing(false);
+ object71.setText("ToggleButton");
+ javafx.scene.layout.GridPane.setRowIndex(object71, 16);
+ final var object72 = new javafx.scene.control.TreeTableView>();
+ fieldMap.put("treeTableView", object72);
+ object72.setPrefHeight(200.0);
+ object72.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object72, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object72, 16);
+ final var object73 = new javafx.scene.control.TreeTableColumn, String>();
+ fieldMap.put("treeTableColumn1", object73);
+ object73.setPrefWidth(75.0);
+ object73.setText("C1");
+ final var object74 = new javafx.scene.control.TreeTableColumn, Integer>();
+ fieldMap.put("treeTableColumn2", object74);
+ object74.setPrefWidth(75.0);
+ object74.setSortType(javafx.scene.control.TreeTableColumn.SortType.DESCENDING);
+ object74.setText("C2");
+ object72.getColumns().addAll(object73, object74);
+ final var object75 = new javafx.scene.control.TreeView();
+ fieldMap.put("treeView", object75);
+ object75.setPrefHeight(200.0);
+ object75.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object75, 17);
+ final var object76 = new javafx.scene.web.WebView();
+ fieldMap.put("webView", object76);
+ object76.setPrefHeight(200.0);
+ object76.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object76, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object76, 17);
+ object0.getChildren().addAll(object22, object23, object24, object25, object28, object31, object32, object33, object34, object35, object36, object37, object38, object45, object49, object51, object52, object53, object55, object56, object57, object58, object59, object60, object61, object62, object63, object66, object69, object70, object71, object72, object75, object76);
+ final var controllerFactory = controllersMap.get(com.github.gtache.fxml.compiler.impl.ControlsController.class);
+ controller = (com.github.gtache.fxml.compiler.impl.ControlsController) controllerFactory.create(fieldMap);
+ object0.setOnInputMethodTextChanged(controller::inputMethodTextChanged);
+ object0.setOnKeyPressed(e -> controller.keyPressed());
+ object0.setOnKeyReleased(controller::keyReleased);
+ object0.setOnKeyTyped(controller::keyTyped);
+ object58.setOnDragDetected(controller::dragDetected);
+ object58.setOnDragDone(controller::dragDone);
+ object58.setOnDragDropped(controller::dragDropped);
+ object58.setOnDragEntered(controller::dragEntered);
+ object58.setOnDragExited(controller::dragExited);
+ object58.setOnDragOver(controller::dragOver);
+ object58.setOnMouseDragEntered(controller::mouseDragEntered);
+ object58.setOnMouseDragExited(controller::mouseDragExited);
+ object58.setOnMouseDragOver(controller::mouseDragOver);
+ object58.setOnMouseDragReleased(controller::mouseDragReleased);
+ object60.setOnContextMenuRequested(controller::contextMenuRequested);
+ object60.setOnMouseClicked(e -> controller.mouseClicked());
+ object60.setOnMouseDragged(controller::mouseDragged);
+ object60.setOnMouseEntered(controller::mouseEntered);
+ object60.setOnMouseExited(controller::mouseExited);
+ object60.setOnMouseMoved(controller::mouseMoved);
+ object60.setOnMousePressed(controller::mousePressed);
+ object60.setOnMouseReleased(controller::mouseReleased);
+ object60.setOnScroll(controller::onScroll);
+ object60.setOnScrollFinished(controller::onScrollFinished);
+ object60.setOnScrollStarted(controller::onScrollStarted);
+ object61.setOnZoom(controller::onZoom);
+ object61.setOnZoomFinished(controller::onZoomFinished);
+ object61.setOnZoomStarted(controller::onZoomStarted);
+ object71.setOnAction(controller::onAction);
+ object71.setOnRotate(controller::onRotate);
+ object71.setOnRotationFinished(controller::onRotationFinished);
+ object71.setOnRotationStarted(controller::onRotationStarted);
+ object73.setOnEditCancel(controller::onEditCancel);
+ object73.setOnEditCommit(controller::onEditCommit);
+ object73.setOnEditStart(controller::onEditStart);
+ object75.setOnSwipeDown(controller::onSwipeDown);
+ object75.setOnSwipeLeft(controller::onSwipeLeft);
+ object75.setOnSwipeRight(controller::onSwipeRight);
+ object75.setOnSwipeUp(controller::onSwipeUp);
+ object76.setOnTouchMoved(controller::onTouchMoved);
+ object76.setOnTouchPressed(controller::onTouchPressed);
+ object76.setOnTouchReleased(controller::onTouchReleased);
+ object76.setOnTouchStationary(controller::onTouchStationary);
+ controller.initialize();
+ loaded = true;
+ return object0;
+}
+
+
+
+ /**
+ * @return The controller
+ */
+ public com.github.gtache.fxml.compiler.impl.ControlsController controller() {
+ if (loaded) {
+ return controller;
+ } else {
+ throw new IllegalStateException("Not loaded");
+ }
+ }
+}
diff --git a/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-factory-reference-getbundle.txt b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-factory-reference-getbundle.txt
new file mode 100644
index 0000000..cebc5f5
--- /dev/null
+++ b/loader/src/test/resources/com/github/gtache/fxml/compiler/impl/expected-controls-factory-reference-getbundle.txt
@@ -0,0 +1,428 @@
+package com.github.gtache.fxml.compiler.impl;
+
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.HashMap;
+import com.github.gtache.fxml.compiler.ControllerFactory;
+
+
+/**
+ * Generated code, not thread-safe
+ */
+public final class ControlsController {
+
+ private final Map, ControllerFactory>> controllersMap;
+ private final Map, ResourceBundle> resourceBundlesMap;
+ private boolean loaded;
+ private com.github.gtache.fxml.compiler.impl.ControlsController controller;
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers and no resource bundle
+ * @param controllerFactory The controller factory
+ */
+ public ControlsController(final ControllerFactory controllerFactory) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controllerFactory), Map.of());
+ }
+
+ /**
+ * Instantiates a new ControlsController with no nested controllers
+ * @param controllerFactory The controller factory
+ * @param resourceBundle The resource bundle
+ */
+ public ControlsController(final ControllerFactory controllerFactory, final ResourceBundle resourceBundle) {
+ this(Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, controllerFactory), Map.of(com.github.gtache.fxml.compiler.impl.ControlsController.class, resourceBundle));
+ }
+
+ /**
+ * Instantiates a new ControlsController with nested controllers
+ * @param controllersMap The map of controller class to controller factory
+ * @param resourceBundlesMap The map of controller class to resource bundle
+ */
+ public ControlsController(final Map, ControllerFactory>> controllersMap, final Map, ResourceBundle> resourceBundlesMap) {
+ this.controllersMap = Map.copyOf(controllersMap);
+ this.resourceBundlesMap = Map.copyOf(resourceBundlesMap);
+ }
+
+ public javafx.scene.Parent load() {
+ if (loaded) {
+ throw new IllegalStateException("Already loaded");
+ }
+ final var bundle = ResourceBundle.getBundle("com.github.gtache.fxml.compiler.impl.ControlsBundle");
+ final var fieldMap = new HashMap();
+ final var object0 = new javafx.scene.layout.GridPane();
+ fieldMap.put("gridPane", object0);
+ final var object1 = new javafx.scene.layout.RowConstraints();
+ final var object2 = new javafx.scene.layout.RowConstraints();
+ final var object3 = new javafx.scene.layout.RowConstraints();
+ final var object4 = new javafx.scene.layout.RowConstraints();
+ final var object5 = new javafx.scene.layout.RowConstraints();
+ final var object6 = new javafx.scene.layout.RowConstraints();
+ final var object7 = new javafx.scene.layout.RowConstraints();
+ final var object8 = new javafx.scene.layout.RowConstraints();
+ final var object9 = new javafx.scene.layout.RowConstraints();
+ final var object10 = new javafx.scene.layout.RowConstraints();
+ final var object11 = new javafx.scene.layout.RowConstraints();
+ final var object12 = new javafx.scene.layout.RowConstraints();
+ final var object13 = new javafx.scene.layout.RowConstraints();
+ final var object14 = new javafx.scene.layout.RowConstraints();
+ final var object15 = new javafx.scene.layout.RowConstraints();
+ final var object16 = new javafx.scene.layout.RowConstraints();
+ final var object17 = new javafx.scene.layout.RowConstraints();
+ final var object18 = new javafx.scene.layout.RowConstraints();
+ object0.getRowConstraints().addAll(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13, object14, object15, object16, object17, object18);
+ final var object19 = new javafx.scene.layout.ColumnConstraints();
+ final var object20 = new javafx.scene.layout.ColumnConstraints();
+ final var object21 = new javafx.scene.layout.ColumnConstraints();
+ object21.setMinWidth(10.0);
+ object21.setPrefWidth(100.0);
+ object0.getColumnConstraints().addAll(object19, object20, object21);
+ final var object22 = new javafx.scene.control.Button();
+ fieldMap.put("button", object22);
+ object22.setMnemonicParsing(false);
+ object22.setText("Button");
+ final var object23 = new javafx.scene.control.CheckBox();
+ fieldMap.put("checkBox", object23);
+ object23.setIndeterminate(true);
+ object23.setMnemonicParsing(false);
+ object23.setText("CheckBox");
+ javafx.scene.layout.GridPane.setColumnIndex(object23, 1);
+ final var object24 = new javafx.scene.control.ChoiceBox();
+ fieldMap.put("choiceBox", object24);
+ object24.setCacheShape(false);
+ object24.setCenterShape(false);
+ object24.setDisable(true);
+ object24.setFocusTraversable(false);
+ object24.setPrefWidth(150.0);
+ object24.setScaleShape(false);
+ object24.setVisible(false);
+ javafx.scene.layout.GridPane.setRowIndex(object24, 1);
+ final var object25 = new javafx.scene.control.ColorPicker();
+ fieldMap.put("colorPicker", object25);
+ object25.setNodeOrientation(javafx.geometry.NodeOrientation.LEFT_TO_RIGHT);
+ object25.setOpacity(0.5);
+ javafx.scene.layout.GridPane.setColumnIndex(object25, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object25, 1);
+ final var object26 = new javafx.scene.paint.Color(0.7894737124443054, 0.08771929889917374, 0.08771929889917374, 1);
+ fieldMap.put("color", object26);
+ object25.setValue(object26);
+ final var object27 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object25.setOpaqueInsets(object27);
+ final var object28 = new javafx.scene.control.ComboBox();
+ fieldMap.put("comboBox", object28);
+ object28.setEditable(true);
+ object28.setPrefWidth(150.0);
+ object28.setPromptText("Text");
+ object28.setVisibleRowCount(5);
+ javafx.scene.layout.GridPane.setRowIndex(object28, 2);
+ final var object29 = javafx.scene.Cursor.CLOSED_HAND;
+ object28.setCursor(object29);
+ final var object30 = new javafx.scene.effect.Bloom();
+ object28.setEffect(object30);
+ final var object31 = new javafx.scene.control.DatePicker();
+ fieldMap.put("datePicker", object31);
+ object31.setShowWeekNumbers(true);
+ object31.setStyle("-fx-background-color: #ffffff;");
+ javafx.scene.layout.GridPane.setColumnIndex(object31, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object31, 2);
+ final var object32 = new javafx.scene.web.HTMLEditor();
+ fieldMap.put("htmlEditor", object32);
+ object32.setHtmlText("");
+ object32.setPrefHeight(200.0);
+ object32.setPrefWidth(506.0);
+ object32.getStyleClass().addAll("clazz");
+ object32.getStylesheets().addAll("@style.css");
+ javafx.scene.layout.GridPane.setRowIndex(object32, 3);
+ final var object33 = new javafx.scene.control.Hyperlink();
+ fieldMap.put("hyperlink", object33);
+ object33.setText("Hyperlink");
+ javafx.scene.layout.GridPane.setColumnIndex(object33, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object33, 3);
+ final var object34 = new javafx.scene.image.ImageView();
+ fieldMap.put("imageView", object34);
+ object34.setFitHeight(150.0);
+ object34.setFitWidth(200.0);
+ object34.setPickOnBounds(true);
+ object34.setPreserveRatio(true);
+ javafx.scene.layout.GridPane.setRowIndex(object34, 4);
+ final var object35 = new javafx.scene.control.Label();
+ fieldMap.put("label", object35);
+ object35.setAccessibleHelp("TTTTT");
+ object35.setAccessibleText("TTT");
+ object35.setBlendMode(javafx.scene.effect.BlendMode.ADD);
+ object35.setCache(true);
+ object35.setCacheHint(javafx.scene.CacheHint.QUALITY);
+ object35.setDepthTest(javafx.scene.DepthTest.ENABLE);
+ object35.setMnemonicParsing(true);
+ object35.setMouseTransparent(true);
+ object35.setText(bundle.getString("include.label"));
+ javafx.scene.layout.GridPane.setColumnIndex(object35, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object35, 4);
+ final var object36 = new javafx.scene.control.ListView();
+ fieldMap.put("listView", object36);
+ object36.setFixedCellSize(20.0);
+ object36.setNodeOrientation(javafx.geometry.NodeOrientation.RIGHT_TO_LEFT);
+ object36.setOrientation(javafx.geometry.Orientation.HORIZONTAL);
+ object36.setPrefHeight(200.0);
+ object36.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object36, 5);
+ final var object37 = new javafx.scene.media.MediaView();
+ fieldMap.put("mediaView", object37);
+ object37.setFitHeight(200.0);
+ object37.setFitWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object37, 1);
+ javafx.scene.layout.GridPane.setColumnSpan(object37, 2);
+ javafx.scene.layout.GridPane.setRowIndex(object37, 5);
+ javafx.scene.layout.GridPane.setRowSpan(object37, 2);
+ final var object38 = new javafx.scene.control.MenuBar();
+ fieldMap.put("menuBar", object38);
+ javafx.scene.layout.GridPane.setHalignment(object38, javafx.geometry.HPos.RIGHT);
+ javafx.scene.layout.GridPane.setHgrow(object38, javafx.scene.layout.Priority.ALWAYS);
+ javafx.scene.layout.GridPane.setRowIndex(object38, 7);
+ javafx.scene.layout.GridPane.setValignment(object38, javafx.geometry.VPos.BASELINE);
+ javafx.scene.layout.GridPane.setVgrow(object38, javafx.scene.layout.Priority.SOMETIMES);
+ final var object39 = new javafx.scene.control.Menu();
+ fieldMap.put("menu1", object39);
+ object39.setMnemonicParsing(false);
+ object39.setText("File");
+ final var object40 = new javafx.scene.control.MenuItem();
+ fieldMap.put("menuItem1", object40);
+ object40.setMnemonicParsing(false);
+ object40.setText("Close");
+ object39.getItems().addAll(object40);
+ final var object41 = new javafx.scene.control.Menu();
+ object41.setMnemonicParsing(false);
+ object41.setText("Edit");
+ final var object42 = new javafx.scene.control.MenuItem();
+ object42.setMnemonicParsing(false);
+ object42.setText("Delete");
+ object41.getItems().addAll(object42);
+ final var object43 = new javafx.scene.control.Menu();
+ object43.setMnemonicParsing(false);
+ object43.setText("Help");
+ final var object44 = new javafx.scene.control.MenuItem();
+ object44.setMnemonicParsing(false);
+ object44.setText("About");
+ object43.getItems().addAll(object44);
+ object38.getMenus().addAll(object39, object41, object43);
+ final var object45 = new javafx.scene.control.MenuButton();
+ fieldMap.put("menuButton", object45);
+ object45.setMnemonicParsing(false);
+ object45.setText("MenuButton");
+ javafx.scene.layout.GridPane.setColumnIndex(object45, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object45, 7);
+ final var object46 = new javafx.scene.control.MenuItem();
+ object46.setMnemonicParsing(false);
+ object46.setText("Action 1");
+ final var object47 = new javafx.scene.control.MenuItem();
+ object47.setMnemonicParsing(false);
+ object47.setText("Action 2");
+ object45.getItems().addAll(object46, object47);
+ final var object48 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ javafx.scene.layout.GridPane.setMargin(object45, object48);
+ final var object49 = new javafx.scene.control.Pagination();
+ fieldMap.put("pagination", object49);
+ object49.setPrefHeight(200.0);
+ object49.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object49, 8);
+ final var object50 = new javafx.geometry.Insets(5.0, 4.0, 3.0, 2.0);
+ object49.setPadding(object50);
+ final var object51 = new javafx.scene.control.PasswordField();
+ fieldMap.put("passwordField", object51);
+ object51.setMaxHeight(6.0);
+ object51.setMaxWidth(5.0);
+ object51.setMinHeight(2.0);
+ object51.setMinWidth(1.0);
+ object51.setPrefColumnCount(7);
+ object51.setPrefHeight(4.0);
+ object51.setPrefWidth(3.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object51, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object51, 8);
+ final var object52 = new javafx.scene.control.ProgressBar();
+ fieldMap.put("progressBar", object52);
+ object52.setLayoutX(10.0);
+ object52.setLayoutY(20.0);
+ object52.setPrefWidth(200.0);
+ object52.setProgress(0.0);
+ javafx.scene.layout.GridPane.setRowIndex(object52, 9);
+ final var object53 = new javafx.scene.control.ProgressIndicator();
+ fieldMap.put("progressIndicator", object53);
+ object53.setProgress(0.0);
+ object53.setRotate(2.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object53, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object53, 9);
+ final var object54 = new javafx.geometry.Point3D(4.0, 5.0, 6.0);
+ object53.setRotationAxis(object54);
+ final var object55 = new javafx.scene.control.RadioButton();
+ fieldMap.put("radioButton", object55);
+ object55.setMnemonicParsing(false);
+ object55.setScaleX(7.0);
+ object55.setScaleY(2.0);
+ object55.setScaleZ(3.0);
+ object55.setText("RadioButton");
+ object55.setTranslateX(4.0);
+ object55.setTranslateY(5.0);
+ object55.setTranslateZ(6.0);
+ javafx.scene.layout.GridPane.setRowIndex(object55, 10);
+ final var object56 = new javafx.scene.control.ScrollBar();
+ fieldMap.put("scrollBarH", object56);
+ javafx.scene.layout.GridPane.setColumnIndex(object56, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object56, 10);
+ final var object57 = new javafx.scene.control.ScrollBar();
+ fieldMap.put("scrollBarV", object57);
+ object57.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object57, 11);
+ final var object58 = new javafx.scene.control.Separator();
+ fieldMap.put("separatorH", object58);
+ object58.setPrefWidth(200.0);
+ javafx.scene.layout.GridPane.setColumnIndex(object58, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object58, 11);
+ final var object59 = new javafx.scene.control.Separator();
+ fieldMap.put("separatorV", object59);
+ object59.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ object59.setPrefHeight(200.0);
+ javafx.scene.layout.GridPane.setRowIndex(object59, 12);
+ final var object60 = new javafx.scene.control.Slider();
+ fieldMap.put("sliderH", object60);
+ javafx.scene.layout.GridPane.setColumnIndex(object60, 1);
+ javafx.scene.layout.GridPane.setRowIndex(object60, 12);
+ final var object61 = new javafx.scene.control.Slider();
+ fieldMap.put("sliderV", object61);
+ object61.setOrientation(javafx.geometry.Orientation.VERTICAL);
+ javafx.scene.layout.GridPane.setRowIndex(object61, 13);
+ final var object62 = new javafx.scene.control.Spinner