Files
NeitzelFXDesigner/docs/table-column-inspector.md
T

4.3 KiB

Shared Table / Column authoring

Open Bindings → Table / Columns in either host. Select an existing Table or use New Table, edit its collection and Row Component class, then Apply Table. A new Table is inserted at the end of the root Pane's children (including an existing children wrapper). Other placements use Source. The root Pane must be one of the supported standard layout containers. Existing Tables can be configured wherever they occur in the document; a root Table cannot be removed through the inspector.

Columns expose Attribute, header and optional starting width. New Column, Apply Column, Remove Column, Column up and Column down each produce one host-owned undo command. Blank width removes the width attribute and restores the runtime's equal-share default. Table removal removes its complete declaration and Columns. It does not repair other binding references; those remain visible to existing diagnostics.

Open selected Row Component uses the same shared navigation service as canvas Component navigation. Column order is positional in NeitzelLib. Reordering Columns never rearranges or edits the shared Row FXML. The inspector explicitly marks Column/Row alignment and type compatibility as unverified and offers Row navigation for review. Detecting correspondence between Row fields and Column Attributes is a later discovery slice.

Source and history

The authoritative host document remains the only persisted representation. Table and Column changes use lexical attribute/element ranges, preserving unrelated XML, comments, processing instructions, imports, namespaces, quote styles and unknown attributes. Reordering swaps complete Column element ranges; surrounding comments remain in their original positions. Both direct Column children and an explicit columns wrapper are supported. New declarations use fully qualified names and need no import changes.

Nested property syntax is retained and remains Source-only for field edits. Mixed Column containers are rejected rather than rewritten. Source changes invalidate the form's captured source; stale or read-only edits are refused. Each Apply, removal or move is one ordinary standalone/IntelliJ Undo/Redo transaction. Discovery or form typing does not change source.

Structural diagnostics cover missing/invalid collection and Row names, empty Column lists, invalid or duplicate Attributes, missing headers, and nonpositive/nonfinite widths. Invalid drafts remain editable and saveable, while these errors block new previews. Runtime collection types, simple Column Attribute types, Row construction and positional field alignment are not certified by this authoring slice; target preview remains the execution check. No application reflection or classes enter either host.

Automated qualification

TableDocumentTest covers lexical preservation, escaping, width removal, direct/wrapped child creation, exact reorder behavior, unsupported nested declarations, ambiguous containers, root removal, unrelated imported names and invalid declarations. The shared live host scenario exercises Table/Column creation, changes, deletion, both reorder directions, single-step exact Undo/Redo, save, invalid-preview blocking and successful target loading. It runs in standalone and registered IntelliJ, each with classpath and named-module fixtures, through the existing bootstrap and IDE qualification commands.

No manual tests are required for this slice. Previously skipped human checks remain skipped. See the bootstrap plan and Repeat discovery for preceding work and known automation reliability follow-ups.

Qualification on 2026-11-13 passed: 109 unit/adapter tests with no failures, 36 target processes with 498 fixture assertions, both native standalone modes, 48 lifecycle cycles, connected document adapters and plugin packaging. Registered IntelliJ classpath and module-path runs passed the shared Table/Column scenario, exclusive JavaFX 26 native-library checks and worker shutdown. No manual testing was used. The earlier intermittent save/render failures did not reproduce in these runs; this slice does not claim to fix them.

Local evidence: /tmp/table-bootstrap.log, /tmp/table-registered-ide.log, target/connected-workflow/ and target/ide-workflow/. Generated qualification outputs are not repository inputs.