Bug 569135 - "Toggle Tracepoint" should be in editor ruler and have
distinct icon
Change-Id: I0155e296fd8f5da90510d6f03b6bfe8408fffefb
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.jdt.debug.ui/plugin.properties b/org.eclipse.jdt.debug.ui/plugin.properties
index db85c36..513fdd6 100644
--- a/org.eclipse.jdt.debug.ui/plugin.properties
+++ b/org.eclipse.jdt.debug.ui/plugin.properties
@@ -17,6 +17,7 @@
vmInstallPage=VM Install Page
vmCapabilitiesPageName=VM Capabilities
AddBreakpoint.label=Toggle &Breakpoint
+AddTracepoint.label=Toggle &Tracepoint
addTypeStepFilterAction.label=&Filter Type
addTypeStepFilterAction.tooltip=Filter the selected type(s)
diff --git a/org.eclipse.jdt.debug.ui/plugin.xml b/org.eclipse.jdt.debug.ui/plugin.xml
index 287975f..877e24c 100644
--- a/org.eclipse.jdt.debug.ui/plugin.xml
+++ b/org.eclipse.jdt.debug.ui/plugin.xml
@@ -152,8 +152,8 @@
<action
definitionId="org.eclipse.jdt.debug.ui.commands.ToggleTracepoint"
label="%ToggleTracepointAction.label"
- icon="$nl$/icons/full/obj16/brkp_obj.png"
- disabledIcon="$nl$/icons/full/obj16/brkpd_obj.png"
+ icon="platform:/plugin/org.eclipse.debug.ui/icons/full/obj16/read_obj.png"
+ disabledIcon="platform:/plugin/org.eclipse.debug.ui/icons/full/obj16/read_obj_disabled.png"
helpContextId="toggle_tracepoint_action_context"
class="org.eclipse.jdt.internal.debug.ui.actions.RetargetToggleTracepointAction"
menubarPath="org.eclipse.ui.run/lineBreakpointBeforeGroup"
@@ -972,6 +972,15 @@
menubarPath="debug">
</action>
<action
+ class="org.eclipse.jdt.internal.debug.ui.actions.RulerToggleTracepointActionDelegate"
+ helpContextId="manage_breakpoint_action_context"
+ icon="platform:/plugin/org.eclipse.debug.ui/icons/full/obj16/read_obj.png"
+ id="org.eclipse.jdt.debug.ui.actions.RulerToggleTracepointAction"
+ definitionId="org.eclipse.jdt.debug.ui.commands.ToggleTracepoint"
+ label="%AddTracepoint.label"
+ menubarPath="debug">
+ </action>
+ <action
label="%EnableBreakpoint.label"
helpContextId="enable_disable_breakpoint_action_context"
class="org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
@@ -1007,6 +1016,15 @@
menubarPath="debug">
</action>
<action
+ class="org.eclipse.jdt.internal.debug.ui.actions.RulerToggleTracepointActionDelegate"
+ helpContextId="toggle_tracepoint_action_context"
+ icon="platform:/plugin/org.eclipse.debug.ui/icons/full/obj16/read_obj.png"
+ id="org.eclipse.jdt.debug.ui.actions.RulerToggleTracepointAction"
+ definitionId="org.eclipse.jdt.debug.ui.commands.ToggleTracepoint"
+ label="%AddTracepoint.label"
+ menubarPath="debug">
+ </action>
+ <action
label="%EnableBreakpoint.label"
helpContextId="enable_disable_breakpoint_action_context"
class="org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/RulerToggleTracepointActionDelegate.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/RulerToggleTracepointActionDelegate.java
new file mode 100644
index 0000000..6edd6a7
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/RulerToggleTracepointActionDelegate.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2020, Andrey Loskutov <loskutov@gmx.de> and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Andrey Loskutov <loskutov@gmx.de> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.debug.ui.actions;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.NotEnabledException;
+import org.eclipse.core.commands.NotHandledException;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.text.source.IVerticalRulerInfo;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IActionDelegate2;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.texteditor.AbstractRulerActionDelegate;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+public class RulerToggleTracepointActionDelegate extends AbstractRulerActionDelegate implements IActionDelegate2 {
+
+ private static final String TOGGLE_TRACEPOINT_COMMAND = "org.eclipse.jdt.debug.ui.commands.ToggleTracepoint"; //$NON-NLS-1$
+ private IEditorPart currentEditor;
+ private IAction dummyAction;
+
+ @Override
+ protected IAction createAction(ITextEditor editor, IVerticalRulerInfo rulerInfo) {
+ dummyAction = new Action() {
+ // empty implementation to make compiler happy
+ };
+ return dummyAction;
+ }
+
+ @Override
+ public void setActiveEditor(IAction callerAction, IEditorPart targetEditor) {
+ currentEditor = targetEditor;
+ }
+
+ @Override
+ public void init(IAction action) {
+ }
+
+ @Override
+ public void dispose() {
+ currentEditor = null;
+ dummyAction = null;
+ super.dispose();
+ }
+
+ @Override
+ public void runWithEvent(IAction action, Event event) {
+ if (currentEditor == null) {
+ return;
+ }
+ IWorkbenchPartSite partSite = currentEditor.getSite();
+ IHandlerService hservice = partSite.getService(IHandlerService.class);
+ ICommandService cservice = partSite.getService(ICommandService.class);
+ try {
+ Command command = cservice.getCommand(TOGGLE_TRACEPOINT_COMMAND);
+ ExecutionEvent exevent = hservice.createExecutionEvent(command, event);
+ command.executeWithChecks(exevent);
+ } catch (ExecutionException | NotDefinedException | NotEnabledException | NotHandledException e) {
+ DebugUIPlugin.log(e);
+ }
+ }
+
+}