<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ui" id="commands" name="Commands"/>
      </appInfo>
      <documentation>
         &lt;p&gt;
The &lt;code&gt;org.eclipse.ui.commands&lt;/code&gt; extension point is used to declare commands and command categories, using the &lt;code&gt;command&lt;/code&gt; and &lt;code&gt;category&lt;/code&gt; elements. Through this extension point, one can also assign key sequences to commands using the &lt;code&gt;keyBinding&lt;/code&gt; element. Key sequences are bound to commands based on key configurations and contexts which are declared here as well, using the &lt;code&gt;keyConfiguration&lt;/code&gt; and &lt;code&gt;context&lt;/code&gt; elements.
&lt;/p&gt;
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="activeKeyConfiguration"/>
            <element ref="category"/>
            <element ref="command"/>
            <element ref="keyBinding"/>
            <element ref="keyConfiguration"/>
            <element ref="context"/>
         </sequence>
         <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>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  A fully qualified identifier of the target extension point.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="activeKeyConfiguration">
      <annotation>
         <documentation>
            This element is used to define the initial active key configuration for Eclipse. If more than one of these elements exist, only the last declared element (in order of reading the plugin registry) is considered valid.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="value" type="string">
            <annotation>
               <documentation>
                  The unique id (&lt;code&gt;id&lt;/code&gt;attribute) of the keyConfiguration element one wishes to be initially active.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="keyConfigurationId" type="string">
            <annotation>
               <documentation>
                  The unique id (&lt;code&gt;id&lt;/code&gt;attribute) of the keyConfiguration element one wishes to be initially active.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="category">
      <annotation>
         <documentation>
            In the UI, commands are often organized by category to make them more manageable. This element is used to define these categories. Commands can add themselves to at most one category. If more than one of these elements exist with the same &lt;code&gt;id&lt;/code&gt; attribute, only the last declared element (in order of reading the plugin registry) is considered valid.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A translatable short description of this category for display in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The unique identifier of this category.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The translatable name of this category for display in the UI.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="command">
      <annotation>
         <documentation>
            This element is used to define commands. A command represents an request from the user that can be handled by an action, and should be semantically unique among other commands. Do not define a command if there is already one defined with the same meaning. If more than one of these elements exist with the same &lt;code&gt;id&lt;/code&gt; attribute, only the last declared element (in order of reading the plugin registry) is considered valid. See the extension points &lt;a href=&quot;org_eclipse_ui_actionSets.html&quot;&gt;org.eclipse.ui.actionSets&lt;/a&gt; and &lt;a href=&quot;org_eclipse_ui_editorActions.html&quot;&gt;org.eclipse.ui.editorActions&lt;/a&gt; to understand how actions are connected to commands.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="category" type="string">
            <annotation>
               <documentation>
                  The unique id of the category for this command. If this command does not specify a category, it will still appear in all UI, alongside other specifically categorized commands.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A translatable short description of this command for display in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The unique identifier of this command.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The translatable name of this command for display in the UI. Command are typically named in the form of an imperative verb.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="categoryId" type="string">
            <annotation>
               <documentation>
                  The unique id of the category for this command. If this command does not specify a category, it will still appear in all UI, alongside other specifically categorized commands.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="keyBinding">
      <annotation>
         <documentation>
            This element allows one to assign key sequences to commands.
         </documentation>
      </annotation>
      <complexType>
<!--sequence>
            <element ref="sequence" minOccurs="0" maxOccurs="1"/>
         </sequence-->
         <attribute name="configuration" type="string">
            <annotation>
               <documentation>
                  The unique id of the key configuration of this key binding.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="command" type="string">
            <annotation>
               <documentation>
                  The unique identifier of the command to which the key sequence specified by this key binding is assigned. If the value of this attribute is an empty string, the key sequence is assigned to an internal &apos;no operation&apos; command. This is useful for &apos;undefining&apos; key bindings in specific key configurations and contexts which may have been borrowed from their parents.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="locale" type="string">
            <annotation>
               <documentation>
                  An optional attribute indicating that this key binding is only defined for the specified locale. Locales are specified according to the format declared in &lt;code&gt;java.util.Locale&lt;/code&gt;.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="platform" type="string">
            <annotation>
               <documentation>
                  An optional attribute indicating that this key binding is only defined for the specified platform. The possible values of the &lt;code&gt;platform&lt;/code&gt; attribute are the set of the possible values returned by &lt;code&gt;org.eclipse.swt.SWT.getPlatform()&lt;/code&gt;.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="contextId" type="string">
            <annotation>
               <documentation>
                  The unique id of the context of this key binding.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="string" type="string">
            <annotation>
               <documentation>
                  The key sequence to assign to the command. Key sequences consist of one or more key strokes, where a key stroke consists of a key on the keyboard, optionally pressed in combination with one or more of the following modifiers: Ctrl, Alt, Shift, and Command. Key strokes are separated by spaces, and modifiers are separated by &apos;+&apos; characters.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="scope" type="string">
            <annotation>
               <documentation>
                  The unique id of the context of this key binding.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="keyConfigurationId" type="string">
            <annotation>
               <documentation>
                  The unique id of the key configuration of this key binding.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="commandId" type="string">
            <annotation>
               <documentation>
                  The unique identifier of the command to which the key sequence specified by this key binding is assigned. If the value of this attribute is an empty string, the key sequence is assigned to an internal &apos;no operation&apos; command. This is useful for &apos;undefining&apos; key bindings in specific key configurations and contexts which may have been borrowed from their parents.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="keySequence" type="string">
            <annotation>
               <documentation>
                  The key sequence to assign to the command. Key sequences consist of one or more key strokes, where a key stroke consists of a key on the keyboard, optionally pressed in combination with one or more of the following modifiers: Ctrl, Alt, Shift, and Command. Key strokes are separated by spaces, and modifiers are separated by &apos;+&apos; characters.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="keyConfiguration">
      <annotation>
         <documentation>
            This element is used to define key configurations. If more than one of these elements exist with the same &lt;code&gt;id&lt;/code&gt; attribute, only the last declared element (in order of reading the plugin registry) is considered valid.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A translatable short description of this key configuration for display in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The unique identifier of this key configuration.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The translatable name of this key configuration for display in the UI. If this key configuration has a parent, it is not necessary to add &quot;(extends ...)&quot; to the name. This will be automatically added by the UI where necessary.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="parent" type="string">
            <annotation>
               <documentation>
                  The unique id of the parent key configuration. If this key configuration has a parent, it will borrow all key bindings from its parent, in addition to the key bindings defined in its own key configuration.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="parentId" type="string">
            <annotation>
               <documentation>
                  The unique id of the parent key configuration. If this key configuration has a parent, it will borrow all key bindings from its parent, in addition to the key bindings defined in its own key configuration.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

<!--element name="stroke">
      <complexType>
         <attribute name="value" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element-->
<!--element name="sequence">
      <complexType>
         <sequence>
            <element ref="stroke" minOccurs="1" maxOccurs="unbounded"/>
         </sequence>
      </complexType>
   </element-->
   <element name="context">
      <annotation>
         <documentation>
            This element is used to define contexts. If more than one of these elements exist with the same &lt;code&gt;id&lt;/code&gt; attribute, only the last declared element (in order of reading the plugin registry) is considered valid.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A translatable short description of this context for display in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The unique identifier of this context.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The translatable name of this context for display in the UI. If this context has a parent, it is not necessary to add &quot;(extends parent)&quot; to the name. This will be automatically added by the UI where necessary.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="parent" type="string">
            <annotation>
               <documentation>
                  The unique id of the parent context. If this context has a parent, it will borrow all key bindings from its parent, in addition to the key bindings defined in its own context.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="parentId" type="string">
            <annotation>
               <documentation>
                  The unique id of the parent context. If this context has a parent, it will borrow all key bindings from its parent, in addition to the key bindings defined in its own context.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="handlerSubmission">
      <annotation>
         <documentation>
            &lt;p&gt;
This element declares a handler for a command.  This handler is then associated with the command with the given restrictions.  This association is done at start-up.  Associating a handler does not mean that this handler will always be the one chosen by the workbench; the actual choice is done by examining the workbench state and comparing with the various handler submissions.
&lt;/p&gt;
&lt;p&gt;
This particular API should still be considered experimental.  While you may use it, you must be willing to accept that this API may change radically or be removed entirely at some point in the future.  We appreciate feedback on this API to &lt;a href=&quot;mailto:platform-ui-dev@eclipse.org&quot;&gt;platform-ui-dev@eclipse.org&lt;/a&gt;.
&lt;/p&gt;
         </documentation>
      </annotation>
      <complexType>
         <attribute name="commandId" type="string" use="required">
            <annotation>
               <documentation>
                  The identifier of the command to which this handler should be associated.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="handler" type="string" use="required">
            <annotation>
               <documentation>
                  The name of the class of the handler.  If the class is an implementation of IExecutableExtension, then it is possible to pass data into the object.  This handler will be proxied until the handler is queried for information -- at which point the class will be loaded, and an instance created.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="java.lang.Object"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         &lt;p&gt;
2.1
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;p&gt;
The &lt;code&gt;plugin.xml&lt;/code&gt; file in the &lt;code&gt;org.eclipse.ui&lt;/code&gt; plugin makes extensive use of the &lt;code&gt;org.eclipse.ui.commands&lt;/code&gt; extension point.
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         &lt;p&gt;
This is no public API for declaring commands, categories, key bindings, key configurations, or contexts other than this extension point. Public API for querying and setting contexts, as well as registering actions to handle specific commands can be found in &lt;code&gt;org.eclipse.ui.IKeyBindingService&lt;/code&gt;.
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         
      </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>
