How are the pieces presented, using a common layout, based on policy decisions for their placement?Here we answer questions like:

Where in the UI do the pieces show up? Where do contributed items show up?

Which pieces can be rearranged and moved by the user, and in which way?

CoolBar:

Rearrange groups by dragging (within the CoolBar only)

Perspective Switcher:

Location can be changed using the "Dock On" entry in its context menu

Drag the perspective entries to rearrange them

Drag an entry outside the workbench window to create a new window showing that perspective (not true in version 3.6 or possibly earlier)

Trim:

Drag the trim element to any trim area

View Stacks:

Drag a view/stack to another stack to merge the two

Drag a view to a 'new' site to create a new stack containing the view (dragging a view stack this way is a rearrangement since the old stack will disappear once all the views have been moved to the new one).

Drag a view/stack outside the workbench to create a Detached Window (only on platforms that support reparenting)

Drag a view/stack to the Fast View Bar (FVB) to make all the views in the stack fast views The entries are added at the drop insertion point (i.e. you can drop between two existing icons in the FVB)

Drag a single view icon within the FVB to rearrange. Dragging outside the FVB acts like any other view drag

Things like menus, context menus, and toolbar items are also contributed declaratively through:

org.eclipse.ui.actionSets

org.eclipse.ui.editorActions

org.eclipse.ui.viewActions

org.eclipse.ui.popupMenus

org.eclipse.ui.menus (this is destined to replace all four of the above)

Thoughts

Why does trim not show up in the class hierarchy for views and editors, e.g. as in:

Piece
Trim
Part
View
Editor

We should look at the persistence life-cycle. Currently we're in a state where the trim order gets read and applied after we've already loaded and arranged the trim in its default location. This is clearly non-optimal and leaves us open to flashing etc. Ensuring that all cached info is read and used during the workbench's initial construction might be better.