Interface ContainerMixin

All Superinterfaces:
ComponentMixin, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasEnabled, com.vaadin.flow.component.HasSize, Serializable
All Known Subinterfaces:
AbstractButtonMixin, JComponentMixin, JTextComponentMixin
All Known Implementing Classes:
SFrame, SJButton, SJCheckBox, SJColorChooser, SJComboBox, SJDialog, SJEditorPane, SJFormattedDatePicker, SJFormattedIntegerField, SJFormattedLongField, SJFormattedNumberField, SJFormattedTextField, SJFrame, SJInternalFrame, SJLabel, SJList, SJMenuBar, SJPanel, SJPasswordField, SJPopupMenu, SJProgressBar, SJRadioButton, SJRootPane, SJScrollPane, SJSeparator, SJSlider, SJSpinner, SJSplitPane, SJTabbedPane, SJTable, SJTextArea, SJTextField, SJToggleButton, SJToolBar, SJTree, SJWindow, SScrollPane, SWindow

public interface ContainerMixin extends ComponentMixin
Mixin that adds the Container API surface on top of ComponentMixin.

Excluded entirely: add(Component), remove(Component), getComponent(int), getComponents(), getComponentCount(), isAncestorOf(Component) — Vaadin's own child-management API on HasComponents wins.

setLayout stores the LayoutManager via LayoutStore and applies layout CSS to the surrogate's element for the two built-in LayoutManager types (FlowLayout / BorderLayout). Per-child grid-area writes for BorderLayout's region constraints aren't covered here — pure-surrogate users that need region-anchored layout currently rebuild the DOM in concrete-surrogate code; the :emulators.BorderLayout.addLayoutComponent path keeps owning that for emulator-stage migrators.

addContainerListener / removeContainerListener / getContainerListeners are Bucket B SHelper.onNoop(Object, String) (see SD_listeners_without_analog): Vaadin 25 has no server-side child-list mutation event. Vaadin 8's ComponentContainer.addComponentAttachListener() was removed in the Flow rewrite and never reinstated — we cannot observe our own children being added or removed from a generic mixin. A concrete container surrogate (e.g. an SPanel) could override HasComponents.add / remove and fire the event itself; that's scope-bound per-surrogate work. getContainerListeners() returns an empty array — honestly reflecting the fact that a registered listener on this mixin would never fire.