Exploring the Flexibility of Perspectives
When all the options are turned off through the custmization of the perspective, the views that remain are the contributions of the defining perspectives extension. The extension references a class file that is responsible for adding the various views, action sets, and shortcuts. The common method for adding views is to create an IFolderLayout with some position relative to the editor area and use the methods IFolderLayout.addView(String viewId) or IFolderLayout.addPlaceholder(String viewId) (adding a placeholder sets where the view will show up if it is enabled by the user at a later time). The best way of finding view ids is to look through the ui packages for the various platform components and find the id given in the views extension; additionally, the ids are sometimes given as API constants for the various packages. Then, calls to IPageLayout.addActionSet(String actionSetId) will provide the content for the menus and the toolbar and calls to IPageLayout.addNewWizardShortcut(String id) will provide the options shown when the user selects File > New. Again, the required ids can often be found as API constants or by looking at the id given in the respective extension of the various ui packages.Finally, calls to IPageLayout.addShowViewShortcut(String id) will populate the list of rapid navigation views in the Window> Show View submenu and calls to IPageLayout.addPerspectiveShortcut(String id) will generate the list of perspective options for the Window > Open Perspective submenu.
An example of this process can be seen in the class PDEPerspective where the steps are laid out quite logically and are easy to follow. I highly recommend playing with perspectives in order to experience just how much control is provided over the layout and presentation of the user interface.
For more information regarding perspectives, visit the online Help documentation.