<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<!--
 #=============================================================================#
 # Copyright (c) 2012, 2020 Stephan Wahlbrink and others.
 # 
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License 2.0 which is available at
 # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 # which is available at https://www.apache.org/licenses/LICENSE-2.0.
 # 
 # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 # 
 # Contributors:
 #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
 #=============================================================================#
-->

<plugin>
   
   <extension
         point="org.eclipse.ui.commands">
      <category
            id="org.eclipse.statet.rtm.commands.RTasksCategory"
            name="R Tasks">
      </category>
      <command
            id="org.eclipse.statet.rtm.commands.RunRTask"
            categoryId="org.eclipse.statet.rtm.commands.RTasksCategory"
            name="Run R Task">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.commandImages">
      <image
            commandId="org.eclipse.statet.rtm.commands.RunRTask"
            icon="icons/tool_16/run_rtask.png">
      </image>
   </extension>
   <extension
         point="org.eclipse.ui.contexts">
      <context
            id="org.eclipse.statet.rtm.contexts.RTaskEditor"
            name="%contexts_RTaskEditor_name"
            description="%contexts_RTaskEditor_description">
      </context>
   </extension>
   <extension
         point="org.eclipse.ui.bindings">
      <key
            commandId="org.eclipse.statet.rtm.commands.RunRTask"
            contextId="org.eclipse.statet.rtm.contexts.RTaskEditor"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
            sequence="F9">
      </key>
   </extension>
   
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="menu:org.eclipse.statet.r.menus.RMain?after=r_tasks">
         <separator
               name="r_tasks.tables">
         </separator>
         <separator
               name="r_tasks.graphics">
         </separator>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.newWizards">
      <category
            id="org.eclipse.statet.rtm.base.newWizards.RTasksCategory"
            name="%newWizards_RTasksCategory_name"
            parentCategory="org.eclipse.statet.r.newWizards.RCategory">
      </category>
   </extension>
   
   <extension
         point="org.eclipse.ui.perspectives">
      <perspective
            id="org.eclipse.statet.rtm.base.perspectives.RGraphics"
            class="org.eclipse.statet.internal.rtm.base.ui.RGraphPerspectiveFactory"
            name="%perspectives_RGraphics_name"
            icon="icons/view_16/graph_perspective.png">
      </perspective>
   </extension>
   <extension
         point="org.eclipse.ui.perspectiveExtensions">
      <perspectiveExtension
            targetID="org.eclipse.statet.rtm.base.perspectives.RGraphics">
         <actionSet
               id="org.eclipse.statet.r.actionSets.RMainMenu">
         </actionSet>
      </perspectiveExtension>
   </extension>
   
</plugin>
