<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui.cheatsheets">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ui.cheatsheets" id="cheat_sheet_schema" name="Cheat Sheet Content File XML Format"/>
      </appInfo>
      <documentation>
         &lt;p&gt;This document describes the cheat sheet content file structure as a series of
DTD fragments (&lt;a href=&quot;cheatSheetContentFileSpec.exsd&quot;&gt;machine readable XML schema&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;A cheat sheet consists of a series of items (steps) which must be completed in order. Items can be divided into subitems and can launch commands or actions which will perform some of the steps for the user.&lt;/p&gt;
      </documentation>
   </annotation>

   <element name="cheatsheet">
      <annotation>
         <documentation>
            The root element of a cheatsheet.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="intro"/>
            <element ref="item" minOccurs="1" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="title" type="string" use="required">
            <annotation>
               <documentation>
                  The title of this cheat sheet. The title will be displayed at the head of the cheat sheet view when the cheat sheet is opened.
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="intro">
      <annotation>
         <documentation>
            The &amp;lt;intro&amp;gt; element is used to define the introductory text to be displayed when the cheat sheet is opened.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="description"/>
         </sequence>
         <attribute name="contextId" type="string">
            <annotation>
               <documentation>
                  The optional help context id of the documentation for this cheat sheet. If supplied, context help for the given fully-qualified context id is shown to the user (typically in a small pop-up window) when they clicks the introduction&apos;s help link. If this attribute is supplied, the &lt;b&gt;href&lt;/b&gt; attribute should not be supplied (&lt;b&gt;href&lt;/b&gt; will be ignored if both are present).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="href" type="string">
            <annotation>
               <documentation>
                  The optional help document describing this cheat sheet. If supplied, this help document is shown to the user (typically in a help browser shown in a separate window) when they clicks the introduction&apos;s help link. If this attribute is supplied, the &lt;b&gt;contextId&lt;/b&gt; attribute should not be supplied (&lt;b&gt;href&lt;/b&gt; will be ignored if both are present).
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="description" type="string">
      <annotation>
         <documentation>
            The &amp;lt;description&amp;gt; element holds the description of a cheat sheet or of
a cheat sheet item. The description consists of text interspersed with &lt;a href=&quot;../../../org.eclipse.platform.doc.isv/guide/forms_controls_text_markup.htm&quot;&gt;form text markup&lt;/a&gt;. The cheat sheet automatically formats and lays out the text to
make it show up reasonably in the UI. Within the text, balanced &lt;b&gt;&amp;lt;b&amp;gt;&lt;/b&gt;...&lt;b&gt;&amp;lt;/b&amp;gt;&lt;/b&gt;
tags cause the enclosed text to be rendered in a bold font, and the &lt;b&gt;&amp;lt;br/&amp;gt;&lt;/b&gt;
element can be used to force a line break. These are the only formatting tags
supported at this time (however, others may be added in the future). Certain
characters in the text have special significance for XML parsers; in particular,
to write &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;amp;&amp;quot;, &amp;quot;&apos;&amp;quot;, and
&amp;quot;&amp;quot;&amp;quot; (quotation mark) instead write &amp;quot;&amp;amp;lt;&amp;quot;,
&amp;quot;&amp;amp;gt;&amp;quot;, &amp;quot;&amp;amp;amp;&amp;quot;, &amp;quot;&amp;amp;apos;&amp;quot;, and &amp;quot;&amp;amp;quot;&amp;quot;
respectively. Whitespace (spaces and line breaks) is treated as a word
separator; adjacent spaces and line breaks are treated as single unit and
rendered as a single space or a line break. Whitespace immediately after the
&amp;lt;&lt;b&gt;description&lt;/b&gt;&amp;gt; and &amp;lt;&lt;b&gt;br/&lt;/b&gt;&amp;gt; tags is ignored, as is
whitespace immediately before the &amp;lt;&lt;b&gt;/description&lt;/b&gt;&amp;gt; tag.
         </documentation>
      </annotation>
   </element>

   <element name="item">
      <annotation>
         <documentation>
            &lt;p&gt;Each &amp;lt;item&amp;gt; element describes one top-level step in a cheat sheet. An
&amp;lt;item&amp;gt; may contain &amp;lt;subitem&amp;gt; elements. 

&lt;p&gt;The org.eclipse.ui.cheatsheets.cheatSheetItemExtension allows additional
custom controls for the item to be displayed in the UI. Contributions to this
extension point declare the names of additional, string-valued attributes that
may appear on &amp;lt;item&amp;gt; elements.&lt;/p&gt;
&lt;p&gt;Simple items have a description and an optional action or command. In the typical
presentation, the titles of cheat sheet items are shown to the user most of the
time. An item&apos;s description is only shown while the step is in the process of
being executed. The presence of an &amp;lt;action&amp;gt;, &amp;lt;command&amp;gt; or &amp;lt;perform-when&amp;gt;)element is  associated with a button that the user can press to perform
the step&apos;s action or command. If no action or command is present, the step is one that the user must
carry out manually and then overtly indicate that they have successfully
completed the step.&lt;/p&gt;
&lt;p&gt;Steps may be broken down into sub-steps as specified by the &amp;lt;subitem&amp;gt; subelements. Unlike items, which the user must follow in strict sequence, the
sub-items of a given item can be performed in any order. All sub-items within an
item have to be attempted (or skipped) before progressing to the next item.
(Which means actions that must be performed in a required sequence cannot be
represented as sub-items.)&lt;/p&gt;
&lt;p&gt;A &amp;lt;conditional-subitem&amp;gt; subelement allow a step to tailor the
presentation of a sub-step based on cheat sheet variables whose values are
acquired in earlier steps. A &amp;lt;repeated-subitem&amp;gt; subelement allows a step
to include a set of similar sub-steps. Again, the exact set of sub-steps may be
based on cheat sheet variables whose value are acquired in earlier steps.&lt;/p&gt;
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="description"/>
            <choice>
               <element ref="action"/>
               <element ref="command"/>
               <element ref="perform-when"/>
               <choice minOccurs="0" maxOccurs="unbounded">
                  <element ref="subitem"/>
                  <element ref="conditional-subitem"/>
                  <element ref="repeated-subitem"/>
               </choice>
            </choice>
            <element ref="onCompletion" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="title" type="string" use="required">
            <annotation>
               <documentation>
                  The title of this step.
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="dialog" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  if &amp;quot;true&amp;quot; means this step involves opening a modal dialog. This is a hint to the system that it should allow the user to continue using the cheat sheet while in the modal dialog. This attribute will only affect dialogs launched from a command or action.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="skip" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  if &amp;quot;true&amp;quot; means that the whole step can be skipped; the UI generally shows a button that the user can press to indicate that they are skipping this step
               </documentation>
            </annotation>
         </attribute>
         <attribute name="contextId" type="string">
            <annotation>
               <documentation>
                  The optional help context id of the documentation for this cheat sheet step. If supplied, context help for the given&amp;nbsp; fully-qualified context id is shown to the user (typically in a small pop-up window) when they clicks the step&apos;s help link. If this attribute is supplied, the &lt;b&gt;href&lt;/b&gt; attribute should not be supplied (&lt;b&gt;href&lt;/b&gt; will be ignored if both are present).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="href" type="string">
            <annotation>
               <documentation>
                  The optional help document describing this cheat sheet step. If supplied, this help document is shown to the user (typically in a help browser shown in a separate window) when they clicks the step&apos;s help link. If this attribute is supplied, the &lt;b&gt;contextId&lt;/b&gt; attribute should not be supplied (&lt;b&gt;href&lt;/b&gt; will be ignored if both are present).
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="subitem">
      <annotation>
         <documentation>
            &lt;p&gt;Each &amp;lt;subitem&amp;gt; element describes a sub-step in a cheat sheet. A &amp;lt;subitem&amp;gt;
carries a simple text label, but has neither a lengthy description nor further
sub-items.
&lt;p&gt;Sub-items may have an optional action or command. The presence of an &amp;lt;action&amp;gt;, 
&amp;lt;command&amp;gt; or
&amp;lt;perform-when&amp;gt; element is associated with a button that the
user can press to perform the sub-step&apos;s action or command. If no action or 
command is present, the
sub-step is one that the user must carry out manually and then overtly indicate
that they have successfully completed the step.&lt;/p&gt;
&lt;p&gt;Unlike items, which must be followed in strict sequence, the sub-items of a
given item can be performed in any order. All sub-items within an item have to
be completed or skipped before progressing to the next item. (Which means
actions that must be performed in a required sequence should not be represented
as sub-items.)&lt;/p&gt;
         </documentation>
      </annotation>
      <complexType>
         <choice minOccurs="0" maxOccurs="1">
            <element ref="action"/>
            <element ref="command"/>
            <element ref="perform-when"/>
         </choice>
         <attribute name="label" type="string" use="required">
            <annotation>
               <documentation>
                  The title of the cheat sheet sub-item. If the string
    contains substring occurrences of the form &amp;quot;${&lt;i&gt;var&lt;/i&gt;}&amp;quot;, they
    are considered references to cheat sheet variables. All such occurrences in
    the string value will be replaced by the value of the corresponding variable
    in the context of the execution of the cheat sheet, or the empty string for
    variables that are unbound. The values of the variables are as of the
    beginning of the execution of the main step (when the &amp;lt;item&amp;gt; element
    is elaborated), rather than when the individual sub-step are run.
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="skip" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  if &amp;quot;true&amp;quot; this sub-step can be
    skipped. The UI generally shows a button that the user can press to indicate
    that they are skipping this sub-step.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="when" type="string">
            <annotation>
               <documentation>
                  Indicates this subitem is to be used if and only if the
    value of the condition attribute of the containing &amp;lt;conditional-subitem&amp;gt;
    element matches this string value. This attribute is ignored if the &amp;lt;subitem&amp;gt;
    element is not a child of&amp;nbsp; a &amp;lt;conditional-subitem&amp;gt; element.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="conditional-subitem">
      <annotation>
         <documentation>
            &lt;p&gt;Each &amp;lt;conditional-subitem&amp;gt; element describes a single sub-step whose
form can differ based on a condition known at the time the item is expanded.
&lt;p&gt;The &lt;b&gt;condition&lt;/b&gt; attribute on the &amp;lt;conditional-subitem&amp;gt; element
provides a string value (invariably this value comes from a cheat sheet
variable). Each of the &amp;lt;subitem&amp;gt; children must carry a &lt;b&gt;when&lt;/b&gt;
attribute with a distinct string value. When the item is expanded, the
&amp;lt;conditional-subitem&amp;gt; element is replaced by the &amp;lt;subitem&amp;gt; element
with the matching value. It is considered an error if there is no &amp;lt;subitem&amp;gt;
element with a matching value.&lt;/p&gt;
&lt;p&gt;For example, if the cheat sheet variable named &amp;quot;v1&amp;quot; has the value
&amp;quot;b&amp;quot; when the following item is expanded&lt;/p&gt;
&lt;pre&gt;&lt;item ...&gt; 
  &lt;conditional-subitem condition=&quot;${v1}&quot;&gt;
     &lt;subitem when=&quot;a&quot; label=&quot;Step for A.&quot; /&gt;
     &lt;subitem when=&quot;b&quot; label=&quot;Step for B.&quot; /&gt;
  &lt;/conditional-subitem&gt;
&lt;/item&gt;&lt;/pre&gt;
then the second sub-item is selected and the item expands to something
equivalent to
&lt;pre&gt;&lt;item ...&gt; 
  &lt;subitem label=&quot;Step for B.&quot;/&gt;
&lt;/item&gt;&lt;/pre&gt;
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="subitem" minOccurs="1" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="condition" type="string" use="required">
            <annotation>
               <documentation>
                  Arbitrary string value used to select which child &amp;lt;subitem&amp;gt;
    will be used. If the attribute string has the form &amp;quot;${&lt;i&gt;var&lt;/i&gt;}&amp;quot;,
    it is considered a reference to a cheat sheet variable &lt;i&gt;var&lt;/i&gt;, and value
    of the condition will be the value of the variable for the cheat sheet at
    the start of execution of the containing &amp;lt;item&amp;gt; element (or the empty
    string if the variable is unbound at that time).
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="repeated-subitem">
      <annotation>
         <documentation>
            &lt;p&gt;Each &amp;lt;repeated-subitem&amp;gt; element describes a sub-item that expands into
0, 1, or more similar sub-steps. 
  
&lt;p&gt;The &lt;b&gt;values&lt;/b&gt; attribute provides a list of comma-separated strings; the
&amp;lt;subitem&amp;gt; child provide the template. When the item is expanded, the
&amp;lt;repeated-subitem&amp;gt; element is replaced by copies of the &amp;lt;subitem&amp;gt;
element with occurrences of the variable &amp;quot;this&amp;quot; replaced by the
corresponding string value.&lt;/p&gt;
&lt;p&gt;For example, if the cheat sheet variable named &amp;quot;v1&amp;quot; has the value
&amp;quot;1,b,three&amp;quot; when the following item is expanded&lt;/p&gt;
&lt;pre&gt;&lt;item ...&gt; 
  &lt;repeated-subitem values=&quot;${v1}&quot;&gt;
     &lt;subitem label=&quot;Step ${this}.&quot;&gt;
        &lt;action class=&quot;com.xyz.myaction&quot; pluginId=&quot;com.xyz&quot; param1=&quot;${this}&quot;/&gt;
     &lt;/subitem&gt;
  &lt;/repeated-subitem&gt;
&lt;/item&gt;&lt;/pre&gt;
then the item expands to something equivalent to:
&lt;pre&gt;&lt;item ...&gt; 
  &lt;subitem label=&quot;Step 1.&quot;&gt;
     &lt;action class=&quot;com.xyz.myaction&quot; pluginId=&quot;com.xyz&quot; param1=&quot;1&quot;/&gt;
  &lt;/subitem&gt;
  &lt;subitem label=&quot;Step b.&quot;&gt;
     &lt;action class=&quot;com.xyz.myaction&quot; pluginId=&quot;com.xyz&quot; param1=&quot;b&quot;/&gt;
  &lt;/subitem&gt;
  &lt;subitem label=&quot;Step three.&quot;&gt;
     &lt;action class=&quot;com.xyz.myaction&quot; pluginId=&quot;com.xyz&quot; param1=&quot;three&quot;/&gt;
  &lt;/subitem&gt;
&lt;/item&gt;&lt;/pre&gt;
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="subitem"/>
         </sequence>
         <attribute name="values" type="string" use="required">
            <annotation>
               <documentation>
                  A string containing a comma-separated list of values. If
    the attribute string has the form &amp;quot;${&lt;i&gt;var&lt;/i&gt;}&amp;quot;, it is
    considered a reference to a cheat sheet variable &lt;i&gt;var&lt;/i&gt;, and value of
    the condition will be the value of the variable for the cheat sheet at the
    start of execution of the containing &amp;lt;item&amp;gt; element (or the empty
    string if the variable is unbound at that time).
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="action">
      <annotation>
         <documentation>
            Each &amp;lt;action&amp;gt; element describes an action in a cheat sheet.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The fully-qualified name of the Java class implementing &lt;code&gt;org.eclipse.jface.action.IAction&lt;/code&gt;.
    If this action also implements &lt;code&gt;org.eclipse.ui.cheatsheets.ICheatSheetAction&lt;/code&gt;
    it will be invoked via its run(String[],ICheatSheetManager) method and be
    passed the cheat sheet manager and action parameters. The pluginId attribute
    must be present whenever this attribute is present. It is strongly
    recommended that actions intended to be invoked from cheat sheets should
    report success/fail outcome if running the action might fail (perhaps
    because the user cancels the action from its dialog). (See
    org.eclipse.jface.action.Action.notifyResult(boolean) for details.)
               </documentation>
            </annotation>
         </attribute>
         <attribute name="pluginId" type="string" use="required">
            <annotation>
               <documentation>
                  The id of the plug-in which contains the Java class of
    the action class. This attribute must be present.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="paramN" type="string">
            <annotation>
               <documentation>
                  For action classes that also implement &lt;code&gt;org.eclipse.ui.cheatsheets.ICheatSheetAction&lt;/code&gt;,
    the string values of attributes &lt;b&gt;param1&lt;/b&gt;,
    &lt;b&gt;param2&lt;/b&gt; up to &lt;b&gt;param9&lt;/b&gt; are passed to the action when it is
    invoked. You can pass up to 9 parameters to a cheat sheet action , etc. The parameters supplied must start with parameter 1
    and be contiguous; that is, it is illegal to specify &lt;b&gt;param2&lt;/b&gt; without &lt;b&gt;param1&lt;/b&gt;
    also being present. If the attribute string has the form &amp;quot;${&lt;i&gt;var&lt;/i&gt;}&amp;quot;,
    it is considered a reference to a cheat sheet variable &lt;i&gt;var&lt;/i&gt;, and value
    of the condition will be the value of the variable for the cheat sheet at
    the start of execution of the containing &amp;lt;item&amp;gt; element (or the empty
    string if the variable is unbound at that time).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="confirm" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  If &amp;quot;true&amp;quot; indicates this step (or sub-step)
    requires the user to manually confirm that the action has been completed.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="when" type="string">
            <annotation>
               <documentation>
                  Indicates this action is to be used if and only if the value
    of the condition attribute of the containing &amp;lt;perform-when&amp;gt; element
    matches this string value. This attribute is ignored if the &amp;lt;action&amp;gt;
    element is not a child of&amp;nbsp; a &amp;lt;perform-when&amp;gt; element.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="required" type="boolean" use="default" value="true">
            <annotation>
               <documentation>
                  if &quot;true&quot; this item or subitem can only be completed by performing this action (it may still be skipped if skip=&quot;true&quot;). If &quot;false&quot; two buttons will be created, one to perform the task and one to mark it as complete, either will complete this step or substep.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="translate" type="string">
            <annotation>
               <documentation>
                  A comma separated list of parameters which are translatable. Any parameters not in the list are considered non-translatable. While this attribute is optional it is strongly recommended that it be provided for any cheat sheat which may end up being translated. If this attribute is not specified it means that there is no translation hint.
&lt;br&gt;
Examples:
&lt;br&gt;
&lt;code&gt;translate = &quot;param2, param3&quot;&lt;/code&gt;  means translate param2 and param3 only.
&lt;br&gt;
&lt;code&gt;translate = &quot;&quot;&lt;/code&gt; means do not translate any parameters for this action.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="command">
      <annotation>
         <documentation>
            &lt;p&gt;Each &amp;lt;command&amp;gt; element describes an command in a cheat sheet.
&lt;p&gt;Below is an example of an item with a command which opens a dialog box and 
stores the result in the cheat sheet variable &amp;quot;result&amp;quot;.&lt;/p&gt;
&lt;pre&gt;&lt;item title=&quot;View Selection&quot;&gt;
     &lt;description&gt;Select a view which will be opened in the next step.&lt;/description&gt;
     &lt;command returns = &quot;result&quot;
      serialization=&quot;org.eclipse.ui.dialogs.openMessageDialog(title=Select View,buttonLabel0=Package Explorer,message=Select a view ,buttonLabel1=Search View)&quot;/&gt;  
      &lt;onCompletion&gt; Selected the ${result}. &lt;/onCompletion&gt;
&lt;/item&gt;&lt;/pre&gt;
         </documentation>
      </annotation>
      <complexType>
         <attribute name="serialization" type="string" use="required">
            <annotation>
               <documentation>
                  A serialized
  &lt;a href=&quot;../api/org/eclipse/core/commands/ParameterizedCommand.html&quot;&gt;
  ParameterizedCommand&lt;/a&gt;,&amp;nbsp; which is a string containing the command name 
  and parameters. See the
  &lt;a href=&quot;../api/org/eclipse/core/commands/ParameterizedCommand.html#serialize()&quot;&gt;
  ParameterizedCommand.serialize()&lt;/a&gt; method for full details on this format.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="returns" type="string">
            <annotation>
               <documentation>
                  An optional attribute which specifies the name of a cheat 
  sheet variable which will be used to store the return value of the command. 
  This allows a command to set a cheat sheet variable which is used in 
  a later &amp;lt;perform-when&amp;gt;, &amp;lt;conditional-subitem&amp;gt; or &amp;lt;repeated-subitem&amp;gt;.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="confirm" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  if &amp;quot;true&amp;quot; indicates that this step (or sub-step)
    requires the user to manually confirm that the command has been completed.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="when" type="string">
            <annotation>
               <documentation>
                  Indicates this command is to be used if and only if the value
    of the condition attribute of the containing &amp;lt;perform-when&amp;gt; element
    matches this string value. This attribute is ignored if the &amp;lt;command&amp;gt;
    element is not a child of&amp;nbsp; a &amp;lt;perform-when&amp;gt; element.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="required" type="boolean" use="default" value="true">
            <annotation>
               <documentation>
                  if &quot;true&quot; this item or subitem can only be completed by performing this command (it may still be skipped if skip=&quot;true&quot;). If &quot;false&quot; two buttons will be created, one to perform the task and one to mark it as complete, either will complete this step or substep.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="translate" type="string">
            <annotation>
               <documentation>
                  A comma separated list of parameters which are translatable. Any parameters not in the list are considered non-translatable. While this attribute is optional it is strongly recommended that it be provided for any cheat sheat which may end up being translated. If this attribute is not specified it means that there is no translation hint.
&lt;br&gt;
Examples:
&lt;br&gt;
&lt;code&gt;translate = &quot;param2, param3&quot;&lt;/code&gt;  means translate param2 and param3 only.
&lt;br&gt;
&lt;code&gt;translate = &quot;&quot;&lt;/code&gt; means do not translate any parameters for this command.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="onCompletion" type="string">
      <annotation>
         <documentation>
            Contains text which will be displayed when 
an item is completed. This is particularly useful in the final step of the cheat 
sheet to acknowledge completion of the entire task. The description consists of text interspersed with &lt;a href=&quot;../../../org.eclipse.platform.doc.isv/guide/forms_controls_text_markup.htm&quot;&gt;form text markup&lt;/a&gt; following the same rules as for a &amp;lt;description&amp;gt; element. 
&amp;lt;onCompletion&amp;gt; elements may also contain references to cheat sheet variables of 
the form&amp;nbsp; &amp;quot;${&lt;i&gt;var&lt;/i&gt;}&amp;quot;, which will be expanded using the actual value of 
the cheat sheet variable &lt;i&gt;var&lt;/i&gt; at the time this step was completed.
         </documentation>
      </annotation>
   </element>

   <element name="perform-when">
      <annotation>
         <documentation>
            &lt;p&gt;Each &amp;lt;perform-when&amp;gt; element describes an action in a cheat sheet.
&lt;p&gt;The &lt;b&gt;condition&lt;/b&gt; attribute on the &amp;lt;conditional-subitem&amp;gt; element
provides a string value (invariably this value comes from a cheat sheet
variable). Each of the &amp;lt;subitem&amp;gt; children must carry a &lt;b&gt;when&lt;/b&gt;
attribute with a distinct string value. When the item is expanded, the
&amp;lt;conditional-subitem&amp;gt; element is replaced by the &amp;lt;subitem&amp;gt; element
with the matching value. It is considered an error if there is no &amp;lt;subitem&amp;gt;
element with a matching value.&lt;/p&gt;
&lt;p&gt;For example, if the cheat sheet variable named &amp;quot;v1&amp;quot; has the value
&amp;quot;b&amp;quot; when the following item is expanded&lt;/p&gt;
&lt;pre&gt;&lt;item ...&gt;
  &lt;subitem label=&quot;Main step&quot;&gt;
     &lt;perform-when condition=&quot;${v1}&quot;&gt;
        &lt;action when=&quot;a&quot; class=&quot;com.xyz.action1&quot; pluginId=&quot;com.xyz&quot; /&gt;
        &lt;action when=&quot;b&quot; class=&quot;com.xyz.action2&quot; pluginId=&quot;com.xyz&quot; /&gt;
        &lt;command when=&quot;c&quot; serialization=&quot;org.eclipse.search.ui.views.SearchView&quot;/&gt;
     &lt;/perform-when&gt;
  &lt;/subitem&gt;
&lt;/item&gt;
&lt;/pre&gt;
then the second action is selected and the item expands to something equivalent
to
&lt;pre&gt;&lt;item ...&gt; 
  &lt;subitem label=&quot;Main step&quot;&gt;
     &lt;action class=&quot;com.xyz.action2&quot; pluginId=&quot;com.xyz&quot; /&gt;
  &lt;/subitem&gt;
&lt;/item&gt;
&lt;/pre&gt;
         </documentation>
      </annotation>
      <complexType>
         <choice minOccurs="1" maxOccurs="unbounded">
            <element ref="action"/>
            <element ref="command"/>
         </choice>
         <attribute name="condition" type="string" use="required">
            <annotation>
               <documentation>
                  Arbitrary string value used to select which child
    &amp;lt;action&amp;gt; or &amp;lt;command&amp;gt; will be performed. If the attribute string has the form
    &amp;quot;${&lt;i&gt;var&lt;/i&gt;}&amp;quot;, it is considered a reference to a cheat sheet
    variable &lt;i&gt;var&lt;/i&gt;, and value of the condition will be the value of the
    variable for the cheat sheet at the start of execution of the containing
    &amp;lt;item&amp;gt; element (or the empty string if the variable is unbound at that
    time).
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         3.2
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;p&gt;The following is an example of a simple cheat sheet content file which 
demonstrates the use of commands, perform-when and conditional subitems.&lt;/p&gt;

&lt;pre&gt; 
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 
&lt;cheatsheet title=&quot;Sample Cheat Sheet&quot;&gt;
  &lt;intro&gt;
    &lt;description&gt;A cheat sheet which demonstrates the use of perform-when and conditional subitems&lt;/description&gt;
  &lt;/intro&gt;
  &lt;item title=&quot;View Selection&quot;&gt;
     &lt;description&gt;Select a view which will be opened in the following steps.&lt;/description&gt;
     &lt;command returns = &quot;result&quot;
      serialization=&quot;org.eclipse.ui.dialogs.openMessageDialog(title=Select View,buttonLabel0=Package Explorer,message=Select a view ,buttonLabel1=Search View)&quot;/&gt;  
      &lt;onCompletion&gt; Selected the ${result}. &lt;/onCompletion&gt;
  &lt;/item&gt; 
  &lt;item title=&quot;Close Views&quot;&gt;
     &lt;description&gt;Close the search view and package explorer if open&lt;/description&gt;
  &lt;/item&gt;
  &lt;item title=&quot;Open the view from a perform when item&quot; skip = &quot;true&quot;&gt;
     &lt;description&gt;Uses perform when to open the view seleted previously.&lt;/description&gt; 
     &lt;perform-when condition = &quot;${result}&quot;&gt;
           &lt;command when = &quot;Package Explorer&quot; 
            serialization=&quot;org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.jdt.ui.PackageExplorer)&quot;/&gt;
           &lt;command when = &quot;Search View&quot; 
            serialization=&quot;org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.search.ui.views.SearchView)&quot;/&gt;      
     &lt;/perform-when&gt;
  &lt;/item&gt; 
  &lt;item title=&quot;Close Views&quot;&gt;
     &lt;description&gt;Close the search view and package explorer if open&lt;/description&gt;
  &lt;/item&gt;
  &lt;item title=&quot;Open the view from a perform when subitem&quot;&gt;
     &lt;description&gt;Uses perform when to open the view seleted previously.&lt;/description&gt; 
     &lt;subitem label=&quot;Perform when subitem&quot; skip = &quot;true&quot;&gt;
     &lt;perform-when condition = &quot;${result}&quot;&gt;
           &lt;command when = &quot;Package Explorer&quot; 
            serialization=&quot;org.eclipse.jdt.ui.PackageExplorer&quot;/&gt;
           &lt;command when = &quot;Search View&quot; 
            serialization=&quot;org.eclipse.search.ui.views.SearchView&quot;/&gt;      
     &lt;/perform-when&gt;
     &lt;/subitem&gt;
  &lt;/item&gt; 
  &lt;item title=&quot;Close Views&quot;&gt;
     &lt;description&gt;Close the search view and package explorer if open&lt;/description&gt;
  &lt;/item&gt;
  &lt;item title=&quot;Open the view from a conditional subitem&quot;&gt;
     &lt;description&gt;Uses perform when to open the view seleted previously.&lt;/description&gt; 
      &lt;conditional-subitem condition=&quot;${result}&quot;&gt;
         &lt;subitem when=&quot;Package Explorer&quot; label=&quot;Open package explorer.&quot;&gt;
             &lt;command serialization = &quot;org.eclipse.jdt.ui.PackageExplorer&quot;/&gt;
         &lt;/subitem&gt;
         &lt;subitem when=&quot;Search View&quot; label=&quot;Open Search View&quot;&gt;
             &lt;command serialization = &quot;org.eclipse.search.ui.views.SearchView&quot;/&gt;
         &lt;/subitem&gt;
     &lt;/conditional-subitem&gt;
  &lt;/item&gt;
&lt;/cheatsheet&gt;
&lt;/pre&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2004, 2007 IBM Corporation and others.&lt;br&gt;
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 &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
