<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.debug.ui">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.debug.ui" id="launchShortcuts" name="Launch Shortcuts"/>
      </appInfo>
      <documentation>
         This extension point provides support for selection sensitive launching.  Extensions register a shortcut which
appears in the run and/or debug cascade menus to launch the workbench selection or active editor.
      </documentation>
   </annotation>

   <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="shortcut" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  a fully qualified identifier of the target extension point
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  an optional identifier of the extension instance
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  an optional name of the extension instance
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="shortcut">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="label"/>
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="perspective" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="contextualLaunch" minOccurs="0" maxOccurs="1"/>
            <element ref="enablement" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  specifies a unique identifier for this launch shortcut.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="modes" type="string" use="required">
            <annotation>
               <documentation>
                  specifies a comma-separated list of modes this shortcut supports.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  specifies the fully qualified name of a class which implements
&lt;samp&gt;org.eclipse.debug.ui.ILaunchShortcut&lt;/samp&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.debug.ui.ILaunchShortcut"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="label" type="string" use="required">
            <annotation>
               <documentation>
                  specifies a label used to render this shortcut.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="icon" type="string">
            <annotation>
               <documentation>
                  specifies a plugin-relative path to an image used to render this shortcut. Icon is optional because it is up to other plugins (i.e. Views) to render it.
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="category" type="string">
            <annotation>
               <documentation>
                  specifies the launch configuration type category this shortcut is applicable for. When unspecified, the category is null (default).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="helpContextId" type="string">
            <annotation>
               <documentation>
                  an optional identifier that specifies the help context to associate with this launch shortcut
               </documentation>
            </annotation>
         </attribute>
         <attribute name="path" type="string">
            <annotation>
               <documentation>
                  an optional menu path used to group launch shortcuts in menus. Launch shortcuts are grouped alphabetically based on the &lt;code&gt;path&lt;/code&gt; attribute, and then sorted alphabetically within groups based on the &lt;code&gt;label&lt;/code&gt; attribute. When unspecified, a shortcut appears in the last group. This attribute was added in the 3.0.1 release.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="perspective">
      <annotation>
         <documentation>
            The &lt;code&gt;perspective&lt;/code&gt; element has been &lt;b&gt;deprecated&lt;/b&gt; in the 3.1 release. The top level Run/Debug/Profile cascade menus now support contextual (selection sensitive) launching, and clients should provide a &lt;code&gt;contextualLaunch&lt;/code&gt; element instead.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  the unique identifier of a perspective in which a menu shortcut for this launch shortcut will appear.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="contextualLaunch">
      <annotation>
         <documentation>
            Holds all descriptions for adding shortcuts to the selection sensitive Run/Debug/Profile cascade menus.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="contextLabel" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="enablement" minOccurs="0" maxOccurs="1"/>
         </sequence>
      </complexType>
   </element>

   <element name="contextLabel">
      <annotation>
         <documentation>
            Specify the label for a contextual launch mode.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="mode" use="required">
            <annotation>
               <documentation>
                  specifies a mode from the set {&quot;run&quot;,&quot;debug&quot;,&quot;profile&quot;}
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="run">
                  </enumeration>
                  <enumeration value="debug">
                  </enumeration>
                  <enumeration value="profile">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
         <attribute name="label" type="string" use="required">
            <annotation>
               <documentation>
                  specifies the label to appear in the contextual launch menu.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of a launch shortcut extension point:

&lt;p&gt;
&lt;pre&gt;
 &lt;extension point=&quot;org.eclipse.debug.ui.launchShortcuts&quot;&gt;
  &lt;shortcut
     id=&quot;com.example.ExampleLaunchShortcutId&quot;
     modes=&quot;run,debug&quot;
     class=&quot;com.example.ExampleLaunchShortcutImpl&quot;
     label=&quot;Example Launch Shortcut&quot;
     icon=&quot;icons/examples.gif&quot;&gt;
     &lt;perspective id=&quot;org.eclipse.jdt.ui.JavaPerspective&quot;/&gt;
     &lt;perspective id=&quot;org.eclipse.debug.ui.DebugPerspective&quot;/&gt;
  &lt;/shortcut&gt;
 &lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;

In the above example, a launch shortcut will be shown in the run and debug cascade menus with the label
&quot;Example Launch Shortcut&quot;, in the JavaPerspective and the DebugPerspective.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         Value of the attribute &lt;b&gt;class&lt;/b&gt; must be a fully qualified name of a Java class that implements the 
interface &lt;b&gt;org.eclipse.debug.ui.ILaunchShortcut&lt;/b&gt;.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2000, 2003 IBM Corporation and others.&lt;br&gt;
All rights reserved. This program and the accompanying materials are made 
available under the terms of the Common Public License v1.0 which 
accompanies this distribution, and is available at 
&lt;a href=&quot;http://www.eclipse.org/legal/cpl-v10.html&quot;&gt;http://www.eclipse.org/legal/cpl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
