<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<!--
 #=============================================================================#
 # Copyright (c) 2007, 2021 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.redocs.wikitext.r.ui.editors.WikidocRweaveDocEditor"
            class="org.eclipse.statet.internal.redocs.wikitext.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.WikidocRweaveEditorRulerMenuDebugContribution"
            targetID="org.eclipse.statet.redocs.menus.WikidocRweaveEditorRulerMenu">
         <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.WikidocRweaveEditorRulerDebugActions"
            targetID="org.eclipse.statet.redocs.editors.CommonmarkRweave">
         <action
               id="org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction"
               actionID="RulerDoubleClick"
               class="org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
               label="ToggleBreakpoint">
         </action>
      </editorContribution>
   </extension>
   <extension
         point="org.eclipse.ui.editorActions">
      <editorContribution
            id="org.eclipse.statet.redocs.legacy.WikidocRweaveEditorRulerDebugActions"
            targetID="org.eclipse.statet.redocs.editors.TextileRweave">
         <action
               id="org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction"
               actionID="RulerDoubleClick"
               class="org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
               label="ToggleBreakpoint">
         </action>
      </editorContribution>
   </extension>
   
</plugin>
