Package vaadinx.awt


package vaadinx.awt
AWT-layer emulation: vaadinx.awt reproduces the Component / Container hierarchy the vaadinx.swing emulators build on. Each emulator holds one Vaadin peer by composition (D_emulator_surrogate_split) and drives it to match the Swing-side state it stores (R_swing_is_truth); EHelper holds the hand-written plumbing shared across the generated scaffolds.

This is the overview, not the authority — see CLAUDE.md and emulators/architecture.md for the whole picture. It lives at package level because the hierarchy root Component is a regenerated scaffold: a class-level home for the contract below would be clobbered on the next generator run.

UI-thread-confined. Every emulator (and the Vaadin peer beneath it) is a Vaadin component, so all methods must run on the session's UI thread — the emulated EDT. Migrated code reaching in from a background thread marshals through SwingUtilities.invokeLater(Runnable) / UI.access, exactly as real Swing requires the EDT; peer→Swing event callbacks re-enter on the UI thread through EHelper.callSwing(Runnable) (R_callswing_envelope). The concurrency primitives in vaadinx.swing (Timer, SwingWorker, SwingUtilities) are the deviations — they self-marshal delivery onto the UI thread — and carry their own thread contracts.