Perspective Extension Points
An extension point is an agreed upon menu/page/area/region that the Perspective Service will modify/replace with custom content provided by a given perspective. In other words the Perspective Developers use Extension Points to customize the user experience while leveraging the RHQ UI (Core UI). Abstractly, extension points are meant to be addressing points so that a perspective developer can unambiguously define what region of the UI they are providing a replacement for. Once an extension point is identified you should be able to(where it makes sense):
- enable(default)/disable
- replace the content for a given area
- add to the default rendered content
The Core UI : Jon 2.3

Leveraging the existing UI as a reference to lay future functionality on top of, the following high level Extension Point regions are identified as useful for Perspective Developers.
Meeting the Extension Points
CoreMenu

The bulk of extension points off the core UI are likely to be under the parent MENU extension point as reuse of the existing pages is assumed to be easier than reconstructing from scratch.
Menu(top level) item removal (CoreMenu.Administration)

Ex. Adminitration menu item removed
*) Menu (top level) item addition
*) Menu (top level) item replace
*) Menu (top level) item removal
Ex. Core menu item example (CoreMenu.Administration.Reports.Resource)

v) Menu item addition (CoreMenu.Administration.Reports.End)

Ex. Core UI tab item (Dashboard.Resource.Monitor)

vi) Menu item replace (Dashboard.Resource.Monitor)

vii) Tab Removal
(insert example)
viii) Tab Addition
ix) Tab Replace
vii) Sub-Tab Removal
viii) Sub-Tab Addition
ix) Sub-Tab Replace (Dashboard.Resource.Monitor.Traits)

SubMenu Extension Point examples
There are numerous extension points that exists in the menu, we will only outline the types of extensions that can occur.
 | When overriding an existing attachment point, the perspective subsystem will postpend all the original URL arguments to the URL of the replacement web component. |
CorePage
The bulk of remaining browser page is divided into frames/regions.

CorePage.LeftNavigation

- enable | disable : disable if moving nav only to CorePage.Details section..
- replace: the content for a given area
- add: N/A. Does not make sense to add a whole new region... new content would fit in existing region.
CorePage.Details

- enable : no-op as one has to start somewhere.
- disable : meaning do not show. Not sure this is useful.
- replace: the content for a given point
- add: N/A. Does not make sense to add a whole new region... new content would fit in existing region.
ResourceView.TasksPane
This region is an addition to the existing Core UI framework added to make utilizing new Tasks and Perspectives easier without additional work. In this layer, depending upon the Perspectives and Actions assigned to the logged in user, this new "Tasks Pane" region exists in the lower right area of the dashboard to provide a consistent area for users to always see Actions and Tasks specified for them.

The contents of the Task UI Pane will likely resemble the right most "Action " and "Getting Started" section in the following wireframe.

Perspective Descriptor elements related to extension points:
PERSPECTIVE DEVELOPER: must define each of these things for extension points
Extension point syntax:
verbose way of specifying the address of an extension point for which new content will be provided.
- CoreMenu
- CoreMenu.Logo
- CoreMenu.Overview : defined only replaces actual menu item.
- CoreMenu.Overview.SubSystemViews
- CoreMenu.Overview.SubSystemViews.ConfigurationChange
- CoreMenu.Overview.AutoDiscovery
- CoreMenu.Overview.Dashboard
- CoreMenu.Overview.End
- CorePage
- CorePage.LeftNavigation : Provide and alternative to tree navigation
- CorePage.Details : Provide an alternative to resource view of any one resource.