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

26 lines
4.3 KiB
Markdown

# 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 subsequent [Table discovery slice](table-compatibility.md) now checks Table-specific types and declared Column/Row correspondence, retaining warnings where evidence is incomplete.
## 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. The [Table discovery slice](table-compatibility.md) now checks declared collection/Attribute types and positional binding evidence. Row construction and runtime layout remain preview checks. 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](repository-bootstrap-plan.md) and [Repeat discovery](repeat-compatibility.md) 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.