<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.wst.common.frameworks.ui">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.wst.common.frameworks.ui" id="wtpuiAction" name="WTP UI Action"/>
      </appInfo>
      <documentation>
         This extension point is for WTP Operations which need to be tied to a generic UI action, such as CUT, COPY, PASTE, DELETE, and RENAME.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <choice>
               <element ref="masterOperation"/>
               <element ref="slaveOperation"/>
            </choice>
         </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="masterOperation">
      <annotation>
         <documentation>
            A masterOperation enables an existing WTP Operation to be used in a UI action. Generic Ids aggregate a set of masterOperations for the same Abstract action (like a &quot;CUT&quot; operation). WTP Operations are themselves extendible, so for any masterOperation defined, there may be any number of pre|post operations. These pre|post operation can have slaveOperation elements defined which indicate the pre|post operation may be run independently.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="selectionEnablement"/>
         </sequence>
         <attribute name="extendedGenericId" type="string" use="required">
            <annotation>
               <documentation>
                  The ID of the Generic Action you would like to contribute to. (e.g. The id for CUT, COPY, PASTE, DELETE, RENAME).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="operationClass" type="string">
            <annotation>
               <documentation>
                  The fully qualified class of your operation. Your operation must be a WTPOperation and must provide a no-arguments default constructor. If this attribute is not provided, the getDefaultOperation() returned by the dataModel will be used.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  A name to display in the dialog for your action (if the operation is optional). You can use the standard &quot;%key&quot; for translatable text stored in plugin.properties.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A description to display in the dialog for your action (if the operation is optional). You can use the standard &quot;%key&quot; for translatable text stored in plugin.properties.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="populatorClass" type="string" use="required">
            <annotation>
               <documentation>
                  The populatorClass knows how to provide a WTP Operation Data Model based on a given selection. The getDefaultOperation() method of the data model will be ignored if the operationClass is provided.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="alwaysExecute" type="boolean">
            <annotation>
               <documentation>
                  optional setting to determine execution context
               </documentation>
            </annotation>
         </attribute>
         <attribute name="overrideId" type="string">
            <annotation>
               <documentation>
                  optional setting to define an overridable id
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  optional identification for operation instance
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="selectionEnablement">
      <annotation>
         <documentation>
            The selectionEnablement element allows you to filter which kinds of selection your object is applicable to using Standard Eclipse Action Expresions.
         </documentation>
      </annotation>
      <complexType>
         <choice>
            <element ref="objectClass"/>
            <element ref="or"/>
         </choice>
      </complexType>
   </element>

   <element name="slaveOperation">
      <annotation>
         <documentation>
            The slaveOperation element defines display information for operations which extend a declared master operation. If a pre|post operation of a master does not have a corresponding slaveOperation element, then the pre|post operation will be consider required, and not be displayed to the user.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="operationClass" type="string" use="required">
            <annotation>
               <documentation>
                  The fully qualified class of your operation. Your operation must be a WTPOperation and must provide a no-arguments default constructor. For slave operations, the data model of the master operation will be provided. Therefore, slaves cannot override the data model using a seperate populatorClass.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  A name to display in the dialog for your action (if the operation is optional). You can use the standard &quot;%key&quot; for translatable text stored in plugin.properties.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A description to display in the dialog for your action (if the operation is optional). You can use the standard &quot;%key&quot; for translatable text stored in plugin.properties.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="or">
      <complexType>
         <choice>
            <element ref="objectClass"/>
            <element ref="and"/>
            <element ref="objectState"/>
         </choice>
      </complexType>
   </element>

   <element name="objectClass">
      <complexType>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  fully qualified name of the object class
               </documentation>
            </annotation>
         </attribute>
         <attribute name="adaptable" type="string">
            <annotation>
               <documentation>
                  optional setting to specify the object class as adaptable
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="and">
      <complexType>
         <choice>
            <element ref="objectClass"/>
            <element ref="or"/>
         </choice>
      </complexType>
   </element>

   <element name="objectState">
      <complexType>
         <attribute name="value" type="string">
            <annotation>
               <documentation>
                  optional setting for the value of a specific object state
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  optional setting for an object state name to check the selected object&apos;s value is matching with
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         1.0
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;!-- The examples in this section have been commented out because they reference only extension point IDs. These examples must be corrected before being included in the documentation. --&gt;
&lt;!--
The following example declares two Master Operations (&lt;code&gt;com.acme.ui.operation.MasterOperationA&lt;/code&gt; and &lt;code&gt;com.acme.ui.operation.MasterOperationB&lt;/code&gt;) which are attached to the Generic ID &lt;code&gt;com.acme.ui.WTPOptionalOperationTest&lt;/code&gt;. 
The scenario has Master A which has as a pre-operation of Slave A and a post-operation of Slave C. Slave A is made optional by the &lt;code&gt;slaveOperation&lt;/code&gt; element, while Slave C will always be run (no &lt;code&gt;slaveOperation&lt;/code&gt; is given to run it seperately). Slave A further has an optional pre-operation (Slave B) that can be executed indepently of either Slave A or Master A.
--&gt;
&lt;!--
&lt;pre&gt;
   &lt;extension
         point=&quot;org.eclipse.wst.common.frameworks.ui.wtpuiAction&quot;&gt;
      &lt;masterOperation
            populatorClass=&quot;com.acme.ui.operation.AcmeOperationPopulator&quot;
            name=&quot;%master_a_name&quot;
            operationClass=&quot;com.acme.ui.operation.MasterOperationA&quot;
            extendedGenericId=&quot;com.acme.ui.WTPOptionalOperationTest&quot;
            description=&quot;%master_a_description&quot;&gt;
      &lt;/masterOperation&gt; 
   &lt;slaveOperation
            name=&quot;Slave A&quot;
            operationClass=&quot;com.acme.ui.operation.SlaveOperationA&quot;&gt;
      &lt;/slaveOperation&gt; 
      &lt;slaveOperation
            name=&quot;Slave B&quot;
            operationClass=&quot;com.acme.ui.operation.SlaveOperationB&quot;&gt;
      &lt;/slaveOperation&gt;      
      &lt;masterOperation
            populatorClass=&quot;com.acme.ui.operation.AcmeOperationPopulator&quot;
            name=&quot;EAR Project Action&quot;
            operationClass=&quot;com.acme.ui.operation.MasterOperationB&quot;
            extendedGenericId=&quot;com.acme.ui.WTPOptionalOperationTest&quot;&gt;
            &lt;selectionEnablement&gt; 
             &lt;objectState name=&quot;projectNature&quot; value=&quot;org.eclipse.jst.j2ee.EARNature&quot; /&gt;
            &lt;/selectionEnablement&gt;
      &lt;/masterOperation&gt;   
   &lt;/extension&gt;
&lt;/pre&gt;   
--&gt;
&lt;!--
For each of the slaveOperations referenced above, you must have a corresponding WTP Operation Extension declared similar to the following:
--&gt;
&lt;!--
&lt;pre&gt; 
   &lt;extension
         id=&quot;wtpuiAciton.Acme.Extensions&quot;
         point=&quot;org.eclipse.wst.common.frameworks.ExtendableOperation&quot;&gt;
      &lt;extendableOperation
            class=&quot;com.acme.ui.operation.MasterOperationA&quot;
            id=&quot;com.acme.ui.operation.MasterOperationA&quot;&gt;
      &lt;/extendableOperation&gt;
      &lt;extendableOperation
            class=&quot;com.acme.ui.operation.SlaveOperationA&quot;
            id=&quot;com.acme.ui.operation.SlaveOperationA&quot;&gt;
      &lt;/extendableOperation&gt;
   &lt;/extension&gt;
   &lt;extension
         point=&quot;org.eclipse.wst.common.frameworks.OperationExtension&quot;&gt;--&gt;
      &lt;!-- Made optional by the above declaration --&gt;
      &lt;!--&lt;operationExtension
            preOperationClass=&quot;com.acme.ui.operation.SlaveOperationA&quot;
            id=&quot;com.acme.ui.operation.MasterOperationA&quot;&gt;
      &lt;/operationExtension&gt;--&gt;
      &lt;!-- Made optional by the above declaration --&gt;
      &lt;!--&lt;operationExtension
            postOperationClass=&quot;com.acme.ui.operation.SlaveOperationB&quot;
            id=&quot;com.acme.ui.operation.SlaveOperationA&quot;&gt;
      &lt;/operationExtension&gt;--&gt;   
      &lt;!-- Non-optional operation, will always run --&gt;
      &lt;!--&lt;operationExtension
            postOperationClass=&quot;com.acme.ui.operation.SlaveOperationC&quot;
            id=&quot;com.acme.ui.operation.MasterOperationA&quot;&gt;
      &lt;/operationExtension&gt;  
   &lt;/extension&gt; 
&lt;/pre&gt;
--&gt;
&lt;!--
In general, users extending existing actions only need to declare the following: 
--&gt;
&lt;!--
&lt;pre&gt;
 &lt;extension
         point=&quot;org.eclipse.wst.common.frameworks.OperationExtension&quot;&gt;--&gt; 
 &lt;!-- The action referenced must be declared as extensible by the   org.eclipse.wst.common.frameworks.ExtendableOperation extension point --&gt;         
      &lt;!--&lt;operationExtension
            preOperationClass=&quot;...YOUR CLASS...&quot;            
            id=&quot;...ID OF EXISTING OPERATION...&quot;&gt; 
      &lt;/operationExtension&gt; 
 &lt;/extension&gt;      
&lt;/pre&gt;      
--&gt;
&lt;!--
And if your operation is optional declare the slaveOperation:
--&gt;
&lt;!--
&lt;pre&gt; 
   &lt;extension
         point=&quot;org.eclipse.wst.common.frameworks.ui.wtpuiAction&quot;&gt; 
   &lt;slaveOperation
            name=&quot;..NAME OF YOUR OPERATION...&quot;
            description=&quot;...DESCRIPTION OF YOUR ACTION...&quot;
            operationClass=&quot;...YOUR CLASS...&quot;&gt;
      &lt;/slaveOperation&gt; 
   &lt;/extension&gt;      
&lt;/pre&gt;
--&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) 2005 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>
