Skip to content

Extension point: custom resource list rendering #333

Description

@hpehl

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions