### Launch configuration dialog

Launch configurations can most easily be visualized by looking at their corresponding UI. Users interact with a launch configuration dialog to create instances of the different types of launch configurations that have been contributed by plug-ins. Each type of launch configuration defines a group of tabs that collect and display information about the configuration. The tab group for running a local Java application is shown below.

The tabs are contributed using the org.eclipse.debug.ui.launchConfigurationTabGroups extension point. In this extension, the id of a configuration type (defined using org.eclipse.debug.core.launchConfigurationTypes) is associated with the class that implements ILaunchConfigurationTabGroup.

It's possible that a some tab groups are only appropriate when launching the configuration in a particular mode. If this is the case, then one or more mode elements can be specified along with the class. For each mode, the tab group can be given a unique description. If no mode is specified, then the tab group will be shown on all modes that do not have a mode-specific tab group contribution. The Java application tab group is defined for run and debug modes:

       <extension
             point="org.eclipse.debug.ui.launchConfigurationTabGroups">
          <launchConfigurationTabGroup
                type="org.eclipse.jdt.launching.localJavaApplication"
                helpContextId="org.eclipse.jdt.debug.ui.launchConfigHelpContext.local_java_application"
                class="org.eclipse.jdt.internal.debug.ui.launcher.LocalJavaApplicationTabGroup"
                id="org.eclipse.jdt.debug.ui.launchConfigurationTabGroup.localJavaApplication"
                bannerImage="icons/full/wizban/java_app_wiz.png">
                <launchMode
                      mode="debug"
                      perspective="org.eclipse.debug.ui.DebugPerspective"
                      description="%localJavaApplicationTabGroupDescription.debug">
                </launchMode>
                <launchMode
                      mode="run"
                      description="%localJavaApplicationTabGroupDescription.run">
                </launchMode>
          </launchConfigurationTabGroup>
          ...

Note that a perspective may also be specified with a mode. This will cause the platform to switch to the specified perspective when the program is launched in that mode.

Your tab group class is responsible for creating the necessary tabs and displaying and saving the relevant data from the launch configuration attributes. A tab that is common to all configurations, CommonTab, is already implemented and can be created by any configuration. This tab manages the saving of the launch configuration as well as collecting common preferences.