debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/breakpoint/actions/ToggleHwBreakpointAdapter.java
--- a/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/breakpoint/actions/ToggleHwBreakpointAdapter.java Fri Mar 12 13:12:46 2010 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.cdt.debug.cw.symbian.breakpoint.actions;
-
-import org.eclipse.cdt.core.IAddress;
-import org.eclipse.cdt.debug.core.CDIDebugModel;
-import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint;
-import org.eclipse.cdt.debug.core.model.ICBreakpointType;
-import org.eclipse.cdt.debug.core.model.ICLineBreakpoint;
-import org.eclipse.cdt.debug.internal.ui.CDebugUIUtils;
-import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants;
-import org.eclipse.cdt.debug.internal.ui.actions.BreakpointLocationVerifier;
-import org.eclipse.cdt.debug.internal.ui.actions.ToggleBreakpointAdapter;
-import org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyEditorInput;
-import org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyView;
-import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-import com.freescale.cdt.debug.cw.core.cdi.BreakpointManager;
-
-public class ToggleHwBreakpointAdapter extends ToggleBreakpointAdapter {
-
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#toggleLineBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- * This function is overridden only for the purpose of setting a breakpoint attribute to hardware.
- *
- * TODO: there's a hardware breakpoint type, but we're setting the type as regular and then another attribute
- * as hardware. I don't know the history around this so for now I'm just going to make it work as it did
- * before, but fix the fact that the wrong CDIDebugModel.create... methods are being called with CDT 5.0
- * changes. But it looks like perhaps we don't need this class anymore?
- */
- public void toggleLineBreakpoints( IWorkbenchPart part, ISelection selection ) throws CoreException {
- String errorMessage = null;
- if ( part instanceof ITextEditor ) {
- ITextEditor textEditor = (ITextEditor)part;
- IEditorInput input = textEditor.getEditorInput();
-
- if ( input == null ) {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Empty_editor_1" ); //$NON-NLS-1$
- }
- else {
- IDocument document = textEditor.getDocumentProvider().getDocument( input );
- if ( document == null ) {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Missing_document_1" ); //$NON-NLS-1$
- }
- else {
- IResource resource = getResource( textEditor );
- if ( resource == null ) {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Missing_resource_1" ); //$NON-NLS-1$
- }
- else {
- BreakpointLocationVerifier bv = new BreakpointLocationVerifier();
- int lineNumber = bv.getValidLineBreakpointLocation( document, ((ITextSelection)selection).getStartLine() );
- if ( lineNumber == -1 ) {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Invalid_line_1" ); //$NON-NLS-1$
- }
- else {
- String sourceHandle = getSourceHandle( input );
- ICLineBreakpoint breakpoint = CDIDebugModel.lineBreakpointExists( sourceHandle, resource, lineNumber );
- if ( breakpoint != null ) {
- DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true );
- }
- else {
- ICLineBreakpoint lineBreakpoint = CDIDebugModel.createLineBreakpoint( sourceHandle,
- resource,
- ICBreakpointType.REGULAR,
- lineNumber,
- true,
- 0,
- "", //$NON-NLS-1$
- true );
- if (lineBreakpoint != null) {
- setHwBreakAttribute(lineBreakpoint);
- }
- }
- return;
- }
- }
- }
- }
- }
- else if ( part instanceof DisassemblyView ) {
- IEditorInput input = ((DisassemblyView)part).getInput();
- if ( !(input instanceof DisassemblyEditorInput) ) {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Empty_editor_1" ); //$NON-NLS-1$
- }
- else {
- BreakpointLocationVerifier bv = new BreakpointLocationVerifier();
- int lineNumber = bv.getValidAddressBreakpointLocation( null, ((ITextSelection)selection).getStartLine() );
- if ( lineNumber == -1 ) {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Invalid_line_1" ); //$NON-NLS-1$
- }
- else {
- IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
- if ( address == null ) {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Invalid_line_1" ); //$NON-NLS-1$
- }
- else {
- ICLineBreakpoint breakpoint = ((DisassemblyEditorInput)input).breakpointExists( address );
- if ( breakpoint != null ) {
- DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true );
- }
- else {
- String module = ((DisassemblyEditorInput)input).getModuleFile();
- IResource resource = getAddressBreakpointResource( ((DisassemblyEditorInput)input).getSourceFile() );
- String sourceHandle = getSourceHandle( input );
- ICAddressBreakpoint addressBreakpoint = CDIDebugModel.createAddressBreakpoint( module,
- sourceHandle,
- resource,
- ICBreakpointType.REGULAR,
- ((DisassemblyEditorInput)input).getSourceLine( lineNumber ),
- address,
- true,
- 0,
- "", //$NON-NLS-1$
- true );
- if (addressBreakpoint != null) {
- setHwBreakAttribute(addressBreakpoint);
- }
- }
- return;
- }
- }
- }
- }
- else {
- errorMessage = Messages.getString( "ToggleHwBreakpointAdapter.Operation_is_not_supported_1" ); //$NON-NLS-1$
- }
- throw new CoreException( new Status( IStatus.ERROR, CDebugUIPlugin.getUniqueIdentifier(), IInternalCDebugUIConstants.INTERNAL_ERROR, errorMessage, null ) );
- }
-
- private String getSourceHandle( IEditorInput input ) throws CoreException {
- return CDebugUIUtils.getEditorFilePath(input);
- }
-
- private IResource getAddressBreakpointResource( String fileName ) {
- if ( fileName != null ) {
- IPath path = new Path( fileName );
- if ( path.isValidPath( fileName ) ) {
- IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation( path );
- if ( files.length > 0 )
- return files[0];
- }
- }
- return ResourcesPlugin.getWorkspace().getRoot();
- }
-
- private void setHwBreakAttribute(IBreakpoint bkpt) {
-
- try {
- IMarker bkptMarker = bkpt.getMarker();
- bkptMarker.setAttribute(BreakpointManager.IS_BREAK_TYPE_HARDWARE, true);
-
- } catch (CoreException ce) {
- // Should never happen, just incase.
- ce.printStackTrace();
- }
- }
-}