Skip to content

Extension point: custom add-resource dialog #330

Description

@hpehl

Parent: #320

Summary

Allow resources to replace the generic metadata-driven add dialog with a resource-specific wizard or custom dialog. Currently, AddResourceDialogs auto-generates form items from the :add operation's parameter descriptions with no way to customize the dialog.

Motivation

The classic example is a multi-step datasource wizard that walks the user through connection settings, pool configuration, validation, and timeouts — instead of presenting all parameters in a single flat form. Similar use cases exist for:

  • Security domains (multi-step authentication/authorization setup)
  • Credential stores (key store selection + alias configuration)
  • Messaging destinations (topic/queue with specific defaults)
  • Any resource where the generic form doesn't provide enough guidance or where parameters have complex interdependencies

Capabilities

  • Replace the add dialog entirely — provide a custom Promise<ModelNode> factory that replaces DialogBricks.addResourceModal()
  • The custom dialog receives the same inputs (parent template, child name, singleton flag) and returns the same Promise<ModelNode> result

Registration

A registry keyed by Environment + AddressTemplate. When DialogBricks.addResourceModal() is called for a matching template, the registry delegates to the custom dialog factory instead.

Affected Call Sites

  • ModelBrowser.add() — model browser add button
  • FinderBricks — finder column add action
  • ResourceList — resource list add button
  • CapabilityReferenceSupport / PathSupport — inline "create new" from form fields

Open Questions

  • Should the custom dialog factory also handle the wizard variant (addResourceWizard) for multi-template scenarios?
  • Should there be a base class that provides common wizard infrastructure (step navigation, validation, progress) that custom wizards can extend?

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