Files

4.3 KiB
Raw Permalink Blame History

Neitzel FX Designer developer guide

Neitzel FX Designer edits ordinary FXML while understanding NeitzelLib Models, bindings and reusable Components. The standalone application and the IntelliJ editor share the same Scene Builder Kit UI. This guide describes the current implementation; the older work-package documents record implementation history and test evidence.

Start with the Person desk quick start. It uses the real fx-example module in NeitzelLib, rather than a separate imitation. The module shows direct and computed bindings, converters, nested/repeated Components, a Table, selection, messages and dependency injection. The optional Designer profile adds sample previews and generated metadata without putting the Designer in the application's runtime dependencies.

I want to… Read
Run the example and open it in the Designer Quick start
Start a JavaFX project and connect it to the Designer Projects and configuration
Understand sample Models, build snapshots and previews Preview and build workflow
Edit layouts, Components, bindings and collections Authoring reference
Generate metadata, Java ViewModels or a starter View Generation
Install/use the IntelliJ editor IntelliJ setup
Understand the modules or diagnose a failure Architecture and troubleshooting

What is available now

  • Source, Design and Split views over the same authoritative FXML document.
  • Editable target-rendered Component/Repeat/Table placeholders, sizing and Component/Row navigation.
  • Direct, Computed, Repeat and Table/Column inspectors, compatible-target discovery and validation.
  • Reference-aware identifier rename, subtree copy/paste and deletion with one host Undo/Redo command per operation.
  • Shared Problems and source highlighting; native IntelliJ Problems and supported Alt+Enter fixes.
  • Independent interactive preview with fresh sample Models and explicit outdated-build/draft handling.
  • Opt-in generated Model metadata, generated Java ViewModel subclasses/registries and reviewed creation of a new editable FXML View.
  • A native macOS app/ZIP containing its own Java runtime and Kit, plus an IntelliJ plugin for the tested IDE build.

The tested host baseline is macOS arm64, Java 25 and JavaFX/Kit 26. The reference application uses Java 21 and JavaFX 21.0.7. IntelliJ is qualified against build 263.7307.200. These are tested combinations, not a claim that arbitrary JavaFX, JDK, IDE or OS versions work.

The current artifacts are development snapshots: NeitzelLib 1.0-SNAPSHOT and Designer tooling 0.1.0-SNAPSHOT. They must be built/installed locally or obtained from an explicitly provided development build. There is no published stable runtime minimum, public Maven repository or signed/notarized release implied by these instructions.

Scope and conventions

A Model is an ordinary application object. A ViewModel is the NeitzelLib object exposing its Attributes as observable properties. A View is an FXML document. A Component is an application node/controller with its own matching ClassName.fxml. A Row Component is the reusable row implementation selected by a NeitzelLib Table. A Designer context chooses a Maven application and its build/target runtimes. A preview example chooses a fresh Model graph and services for one View resource.

Application classes execute only in target JVMs. They do not enter the standalone or IntelliJ host classloader. Discovery uses metadata and signatures; preview executes the application and therefore requires trusted project code. Separate processes are a runtime-isolation boundary, not a security sandbox.

Configuration files and explicit command-line selection are the supported setup workflow. A graphical project/context wizard is not required. Production IntelliJ–standalone ownership handoff, broader native structural editing, signed installation/update, and other platform combinations remain follow-up work. Both hosts can already edit independently; do not infer a coordinated transfer protocol from that fact.

The documentation validation record maps this guide to reference-example checks and states what was not rerun.