Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java')
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java104
1 files changed, 104 insertions, 0 deletions
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java
new file mode 100644
index 00000000000..9aabb8dfa09
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2008 ARM Limited 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * ARM Limited - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.debug.internal.ui.disassembly.commands;
+
+import java.util.Map;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.core.ICDebugConstants;
+import org.eclipse.cdt.debug.core.model.ISteppingModeTarget;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.commands.IElementUpdater;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.menus.UIElement;
+
+/**
+ * org.eclipse.cdt.debug.internal.ui.disassembly.commands.SetSteppingModeHandler:
+ * //TODO Add description.
+ */
+public class SetSteppingModeHandler extends AbstractHandler implements IElementUpdater {
+
+ private static final String ID_PARAMETER_MODE = "com.arm.eclipse.rvd.ui.command.steppingMode.parameterMode"; //$NON-NLS-1$
+
+ private String fCurrentValue = null;
+
+ public SetSteppingModeHandler() {
+ super();
+ fCurrentValue = CDebugCorePlugin.getDefault().getPluginPreferences().getString( ICDebugConstants.PREF_STEP_MODE );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ public Object execute( ExecutionEvent event ) throws ExecutionException {
+ String param = event.getParameter( ID_PARAMETER_MODE );
+ if ( param == null || param.equals( fCurrentValue ) )
+ return null;
+
+ fCurrentValue = param;
+ CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_STEP_MODE, fCurrentValue );
+
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked( event );
+ ICommandService service = (ICommandService)window.getService( ICommandService.class );
+ service.refreshElements( event.getCommand().getId(), null );
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.commands.IElementUpdater#updateElement(org.eclipse.ui.menus.UIElement, java.util.Map)
+ */
+ @SuppressWarnings("unchecked")
+ public void updateElement( UIElement element, Map parameters ) {
+ String param = (String)parameters.get( ID_PARAMETER_MODE );
+ if ( param != null ) {
+ element.setChecked( ( fCurrentValue != null && fCurrentValue.equals( param ) ) );
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ */
+ @Override
+ public boolean isEnabled() {
+ IWorkbenchWindow window = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return ( window != null && getSteppingModeTarget( window ) != null );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#isHandled()
+ */
+ @Override
+ public boolean isHandled() {
+ IWorkbenchWindow window = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return ( window != null && getSteppingModeTarget( window ) != null );
+ }
+
+ private ISteppingModeTarget getSteppingModeTarget( IWorkbenchWindow window ) {
+ ISelection selection = DebugUITools.getDebugContextManager().getContextService( window ).getActiveContext();
+ if ( selection instanceof IStructuredSelection ) {
+ Object element = ((IStructuredSelection)selection).getFirstElement();
+ if ( element instanceof IAdaptable )
+ return (ISteppingModeTarget)((IAdaptable)element).getAdapter( ISteppingModeTarget.class );
+ }
+ return null;
+ }
+}

Back to the top