Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarin Wright2006-01-30 20:35:51 +0000
committerDarin Wright2006-01-30 20:35:51 +0000
commita099d661ec9956f6cf7efe62c4ff070f80097286 (patch)
tree1dae58fc9fe483db2aba150608bd1208815d6624
parent00a71a262175c23637e45a5ef7bc70b1127181f2 (diff)
downloadeclipse.platform.debug-a099d661ec9956f6cf7efe62c4ff070f80097286.tar.gz
eclipse.platform.debug-a099d661ec9956f6cf7efe62c4ff070f80097286.tar.xz
eclipse.platform.debug-a099d661ec9956f6cf7efe62c4ff070f80097286.zip
Bug 122743 - ToggleBreakpointAction must implement IUpdate
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java55
1 files changed, 53 insertions, 2 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java
index b0c74e038..071942652 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
* 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
@@ -25,6 +25,7 @@ import org.eclipse.jface.text.source.IVerticalRulerInfo;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.IUpdate;
/**
* Action to toggle a breakpoint in a vertical ruler of a workbench part
@@ -37,7 +38,7 @@ import org.eclipse.ui.texteditor.ITextEditor;
* @since 3.1
* @see org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate
*/
-public class ToggleBreakpointAction extends Action {
+public class ToggleBreakpointAction extends Action implements IUpdate {
private IWorkbenchPart fPart;
private IDocument fDocument;
@@ -159,5 +160,55 @@ public class ToggleBreakpointAction extends Action {
return null;
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.texteditor.IUpdate#update()
+ */
+ public void update() {
+ IDocument document= getDocument();
+ if (document != null) {
+ IToggleBreakpointsTarget adapter = (IToggleBreakpointsTarget) fPart.getAdapter(IToggleBreakpointsTarget.class);
+ if (adapter == null) {
+ // attempt to force load adapter
+ IAdapterManager manager = Platform.getAdapterManager();
+ if (manager.hasAdapter(fPart, IToggleBreakpointsTarget.class.getName())) {
+ adapter = (IToggleBreakpointsTarget) manager.loadAdapter(fPart, IToggleBreakpointsTarget.class.getName());
+ }
+ }
+ if (adapter != null) {
+ int line = fRulerInfo.getLineOfLastMouseButtonActivity();
+
+ // Test if line is valid
+ if (line > 0) {
+ /*
+ * XXX: remove once the following bug is fixed:
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=99234
+ */
+ if (line < document.getNumberOfLines()) {
+ try {
+ IRegion region = document.getLineInformation(line);
+ ITextSelection selection = new TextSelection(document, region.getOffset(), 0);
+ if (adapter instanceof IToggleBreakpointsTargetExtension) {
+ IToggleBreakpointsTargetExtension extension = (IToggleBreakpointsTargetExtension) adapter;
+ if (extension.canToggleBreakpoints(fPart, selection)) {
+ setEnabled(true);
+ return;
+ }
+ }
+ if (adapter.canToggleLineBreakpoints(fPart, selection) |
+ adapter.canToggleWatchpoints(fPart, selection) |
+ adapter.canToggleMethodBreakpoints(fPart, selection)) {
+ setEnabled(true);
+ return;
+ }
+ } catch (BadLocationException e) {
+ reportException(e);
+ }
+ }
+ }
+ }
+ }
+ setEnabled(false);
+ }
}

Back to the top