<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<!--
 #=============================================================================#
 # Copyright (c) 2007, 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.core.runtime.adapters">
      <factory
            adaptableType="org.eclipse.statet.internal.redocs.tex.r.ui.editors.LtxRweaveDocEditor"
            class="org.eclipse.statet.internal.redocs.tex.r.ui.debug.RetargettableActionAdapterFactory">
         <adapter
               type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget">
         </adapter>
      </factory>
   </extension>
   
   <extension
         point="org.eclipse.ui.popupMenus">
      <viewerContribution
            id="org.eclipse.statet.redocs.legacy.LtxRweaveEditorRulerMenuDebugContribution"
            targetID="org.eclipse.statet.redocs.menus.LtxRweaveEditorRulerMenu">
         <action
               id=".EnableDisableBreakpoint"
               class="org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
               label="%menus_EnableDisableBreakpoint_label"
               menubarPath="debug">
         </action>
         <action
               id=".ToggleBreakpoint"
               class="org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
               definitionId="org.eclipse.debug.ui.commands.ToggleBreakpoint"
               icon="platform:/plugin/org.eclipse.statet.r.debug.ui//icons/obj_16/r_breakpoint.png"
               label="%menus_ToggleBreakpoint_label"
               menubarPath="debug">
         </action>
      </viewerContribution>
   </extension>
   <extension
         point="org.eclipse.ui.editorActions">
      <editorContribution
            id="org.eclipse.statet.redocs.legacy.LtxRweaveEditorRulerDebugActions"
            targetID="org.eclipse.statet.redocs.editors.LtxRweave">
         <action
               id="org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction"
               actionID="RulerDoubleClick"
               class="org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
               label="ToggleBreakpoint">
         </action>
      </editorContribution>
   </extension>
   
</plugin>
