<?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>
