JavaFX · FXML · Groovy · GroovyFX
GrooveFX agrega controles de flujo a FXML: iteración, condicionales y bifurcadores multi-caso directamente en el marcado XML. Sin DSL. Sin reemplazar FXML.
Ejemplos
<?import page.codeberg.rrangelo.groovefx.IterablePane?> <VBox> <IterablePane items="{myList}"> <HBox> <Label text="{item.name}" /> <Label text="{item.email}" /> </HBox> </IterablePane> </VBox>
<?import page.codeberg.rrangelo.groovefx.ConditionalPane?> <ConditionalPane test="{condition}"> <then> ... </then> <else> ... </else> </ConditionalPane>
<?import page.codeberg.rrangelo.groovefx.DynamicPane?> <DynamicPane test="{user.role}"> <when value="ADMIN"> ... </when> <when value="USER"> ... </when> <default> ... </default> </DynamicPane>
// En memoria PaginatedList<User> paginated = new PaginatedList<>(allUsers); paginated.setPage(0, 10); // Desde base de datos PaginatedList<User> paginated = new PaginatedList<>(); paginated.setAction((page, size, filters, sort) -> { Page<User> result = userRepository.findAll( PageRequest.of(page, size) ); paginated.setTotalItems((int) result.getTotalElements()); paginated.setTotalPages(result.getTotalPages()); return result.getContent(); }); paginated.setPage(0, 10);
¿Por qué GrooveFX?
Iteración, condicionales y bifurcadores multi-caso directamente en el marcado XML, sin código de plomería en el controller.
Los componentes escuchan ObservableValue y se actualizan automáticamente ante cambios de estado.
Modelo de paginación listo para usar, compatible con listas en memoria y con cualquier ORM o repositorio de base de datos.
Funciona con Java, Groovy y GroovyFX. Compatible con GraalVM y GluonFX. Sin DSL, sin hacks de reflexión.
Componentes
IterablePane
Itera una lista usando el layout del contenedor padre.
ConditionalPane
Bifurcador booleano con ramas <then> y <else>.
DynamicPane
Multi-caso con <when> y <default>.
PaginatedList
Modelo de datos puro para paginación en memoria o DB.
ConditionPane
Clase base con deepClone y render compartidos.
PaginateAction
Interfaz implementable con lambda en Java o closure en Groovy.
Requisitos
Java
17 o superior (LTS)
Apache Groovy
4.x
JavaFX
17 o superior
provided por la aplicación
GraalVM / GluonFX
Compatible
opcional
Instalación
<dependency> <groupId>page.codeberg.rrangelo</groupId> <artifactId>groovefx</artifactId> <version><!-- version --></version> </dependency>
Soporte al proyecto
Si GrooveFX te resulta útil, podés apoyar su desarrollo.