Parent: #320
Summary
Allow resources to customize how child resources are displayed in folder views. Currently, ResourceList renders each child with a generic name + stability label + View/Remove buttons, with no way to show resource-specific information or actions.
Motivation
- Custom list item rendering — show resource-specific info in each row (e.g., JNDI name for datasources, bound address:port for socket bindings, enabled/disabled badge for deployments, pool statistics)
- Custom actions per item — add resource-specific action buttons beyond View/Remove (e.g., "Enable", "Disable", "Test Connection", "Flush Pool", "Send Test Message")
- Custom toolbar actions — add buttons to the list toolbar beyond "Add" (e.g., bulk enable/disable, import/export, "Add from JDBC Driver")
- Custom empty state — resource-specific guidance when no children exist (e.g., "No datasources configured. Add a datasource to connect to a database." with a link to documentation)
Capabilities
- Custom item renderer — provide a function that adds extra content to each
DataListItem based on the child's ModelNode data
- Custom action buttons — inject additional action buttons per item
- Custom toolbar — add toolbar items beyond the default filter + "Add" button
- Custom empty state — replace the default empty state with resource-specific content
Registration
A registry keyed by Environment + AddressTemplate. When ResourceList loads children for a matching template, the registry provides the rendering customizations.
Open Questions
- Should the custom renderer receive the full
ModelNode of each child, or just the name? Loading full resources for the list could be expensive.
- How should custom actions interact with the existing
onSelect/onAdd/onDelete callbacks?
- Should the list support different layout modes (e.g., card view vs list view) as an extension?
Parent: #320
Summary
Allow resources to customize how child resources are displayed in folder views. Currently,
ResourceListrenders each child with a generic name + stability label + View/Remove buttons, with no way to show resource-specific information or actions.Motivation
Capabilities
DataListItembased on the child'sModelNodedataRegistration
A registry keyed by
Environment+AddressTemplate. WhenResourceListloads children for a matching template, the registry provides the rendering customizations.Open Questions
ModelNodeof each child, or just the name? Loading full resources for the list could be expensive.onSelect/onAdd/onDeletecallbacks?