# Launch Delegates

###### Identifier:

org.eclipse.debug.core.launchDelegates

###### Since:

3.0

###### Description:

This extension point provides a mechanism for contributing a launch delegate to an existing launch configuration type for one or more launch modes. Since launch modes are extensible, it may be neccessary to contribute additional launch delegates to an existing launch configuration type. Each launch delegate is contributed for a specific launch configuration type. A launch delegate supports one or more launch modes, and specifies a delegate responsible for the implementation of launching.

###### Configuration Markup:

<!ELEMENT extension (launchDelegate+)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

- point - a fully qualified identifier of the target extension point
- id - an optional identifier of the extension instance
- name - an optional name of the extension instance

<!ELEMENT launchDelegate (modeCombination+)?>

<!ATTLIST launchDelegate

id CDATA #REQUIRED

name CDATA #IMPLIED

delegate CDATA #REQUIRED

modes CDATA #IMPLIED

type IDREF #IMPLIED

sourcePathComputerId IDREF #IMPLIED

sourceLocatorId IDREF #IMPLIED

delegateDescription CDATA #IMPLIED>

- id - specifies a unique identifier for this launch delegate.
- name - A human readable name for this delegate - for example, "Eclipse JDT Launcher". This name is presented to the user when more than one launcher is available for a launch configuration and the user must choose a preferred launcher. This attribute was added in the 3.3. release.
- delegate - specifies the fully qualified name of the Java class that implements `ILaunchConfigurationDelegate`. Launch configuration instances of this delegate's type will delegate to instances of this class to perform launching in the modes this launch delegate supports - see the `modes` attribute and the `modeCombination` element.
- modes - A comma-separated list of the individual launch modes this delegate supports.

  This attribute should be used when a launch delegate supports single launch modes - for example launching in run mode or debug mode. When a launch delegate supports launching in mixed mode (for example, debug and profile), the `modeCombination` element should be used to specify supported launch mode combinations.

  This attribute can be used in conjunction with `modeCombination` elements. It is suggested practice to provide one or the other (either a comma seperated listing in the `modes` attribute, or `modeCombinations`). Specifying 'run,debug' in the modes attribute is analogous to specifying two `modeCombination` contributions, one for 'run' and another for 'debug'.

- type - identifier of an existing launch configuration type that this launch delegate is capable of launching.
- sourcePathComputerId - The unique identifier of a sourcePathComputer extension that is used to compute a default source lookup path for launch configurations of this type. Since 3.1, this attribute cab be specified in a launchDelegate extension when unspecified in the assocaited launchConfigurationType extension. Only one source path computer can be specified per launch configuration type.
- sourceLocatorId - The unique identifier of a sourceLocator extension that is used to create the source locator for sessions launched using launch configurations of this type. Since 3.1, this attribute can be specified in a launchDelegate extension when unspecified in the assocaited launchConfigurationType extension. Only one source locater can be specified per launch configuration type.
- delegateDescription - A description of this launch delegate - for example "The Eclipse JDT Java Application Launcher supports running and debugging local Java applications". This description is presented to the user when more than one launcher is available for a launch configuration and the user must choose a preferred launcher. This attribute was added in the 3.3 release.

<!ELEMENT modeCombination EMPTY>

<!ATTLIST modeCombination

modes CDATA #REQUIRED

perspective CDATA #IMPLIED>

This element specifies a launch mode combination this delegate supports. Each `modeCombination` element specifies a comma seperated list of modes specifying a supported mixed launch mode. For example, a delegate that supports debugging, profiling and code coverage at the same time would specify a `modes` element of consisting of 'debug, profile, coverage'. This element can also be used to specify single launch modes that are supported - for example a `modes` attribute of 'debug'. This element was added in the 3.3 release.

- modes - a comma seperated list specifying a combination of modes the associated delegate supportes.

  Unlike the modes attribute of the `launchDeleaget` element definition, this comma seperated list represents a mixed launch mode rather than the single supported launch modes. For example: a `modeCombination` element specifying `modes` of 'profile,debug' indicates the delegate can debug and profile at the same time. In contrast, if 'profile,debug' was specified by the `modes` attribute of the `launchDelegate` element, it would indicate the delegate could debug or profile, but not at the same time.

- perspective - a string representing the id of a persepctive to switch to when launching.

###### Examples:

The following is an example of a launch delegate extension point:

     <extension point="org.eclipse.debug.core.launchDelegates">
      <launchDelegate
        id="com.example.ExampleProfileDelegate"
        delegate="com.example.ExampleProfileDelegate"
        type="org.eclipse.jdt.launching.localJavaApplication"
        name="Eclipse JDT Java Profile Tooling">
       <modeCombination
        modes="run, profile"
        perspective="com.example.Perspective">
       </modeCombination>
       <modeCombination modes="debug, profile, coverage"></modeCombination>
      </launchDelegate>
     </extension>

In the example above, the specified launch delegate is contributed to launch Java applications in profile mode. The delegate supports mixed mode launching. The delegate supports profiling when launching in run or debug mode, with code coverage in debug mode only. When the mode combination or run and profile is used, in this example, the perspective com.example.Perspective can also be opened.

###### API Information:

Value of the attribute delegate must be a fully qualified name of a Java class that implements the interface org.eclipse.debug.core.model.ILaunchConfigurationDelegate.

Copyright (c) 2000, 2013 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html