1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Implementation of 'Run To Line' action.

This commit is contained in:
Mikhail Khodjaiants 2002-09-19 21:12:37 +00:00
parent 5c2a979441
commit c0691323a6
5 changed files with 244 additions and 5 deletions

View file

@ -206,6 +206,14 @@
<viewerContribution
targetID="#CEditorRulerContext"
id="org.eclipse.cdt.debug.ui.CEditorRulerActions">
<action
label="%RunToLineAction.label"
icon="icons/full/clcl16/runtoline_co.gif"
helpContextId="run_to_line_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.RunToLineRulerActionDelegate"
menubarPath="debug"
id="org.eclipse.cdt.debug.internal.ui.actions.RunToLineRulerActionDelegate">
</action>
<action
label="%BreakpointProperties.label"
helpContextId="breakpoint_properties_action_context"
@ -246,13 +254,13 @@
</enablement>
</action>
<action
menubarPath="additions"
label="%RunToLineAction.label"
icon="icons/full/clcl16/runtoline_co.gif"
helpContextId="run_to_line_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.RunToLineActionDelegate"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.RunToLineActionDelegate"
helpContextId="run_to_line_action_context">
id="org.eclipse.cdt.debug.internal.ui.actions.RunToLineActionDelegate">
<enablement>
<pluginState
value="activated"

View file

@ -28,12 +28,13 @@ public class CBreakpointPropertiesRulerAction extends AbstractBreakpointRulerAct
setTextEditor( editor );
setText( "Breakpoint &Properties..." );
}
/**
* @see Action#run()
*/
public void run()
{
if (getBreakpoint() != null)
if ( getBreakpoint() != null )
{
Dialog d = new CBreakpointPropertiesDialog( getTextEditor().getEditorSite().getShell(), (ICBreakpoint)getBreakpoint() );
d.open();

View file

@ -21,10 +21,11 @@ import org.eclipse.ui.texteditor.ITextEditor;
public class ManageBreakpointRulerActionDelegate extends AbstractRulerActionDelegate
{
static final private String C_EDITOR_ID = "org.eclipse.cdt.ui.editor.CEditor"; //$NON-NLS-1$
/**
* @see IEditorActionDelegate#setActiveEditor(IAction, IEditorPart)
*/
public void setActiveEditor(IAction callerAction, IEditorPart targetEditor)
public void setActiveEditor( IAction callerAction, IEditorPart targetEditor )
{
if ( targetEditor != null )
{

View file

@ -0,0 +1,184 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui.actions;
import org.eclipse.cdt.debug.core.IRunToLine;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.source.IVerticalRulerInfo;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.INullSelectionListener;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.IUpdate;
import sun.security.krb5.internal.crypto.e;
/**
*
* Enter type comment.
*
* @since Sep 19, 2002
*/
public class RunToLineRulerAction extends Action
implements IUpdate,
ISelectionListener,
INullSelectionListener
{
private IVerticalRulerInfo fInfo;
private ITextEditor fTextEditor;
private IDebugTarget fDebugTarget = null;
/**
* Constructor for RunToLineRulerAction.
*/
public RunToLineRulerAction( IVerticalRulerInfo info, ITextEditor editor )
{
setInfo( info );
setTextEditor( editor );
setText( "Run To Line" );
initializeDebugTarget();
update();
}
/* (non-Javadoc)
* @see org.eclipse.ui.texteditor.IUpdate#update()
*/
public void update()
{
boolean enabled = false;
IResource resource = getResource();
int lineNumber = getLineNumber();
IDocumentProvider provider = getTextEditor().getDocumentProvider();
IDocument doc = provider.getDocument( getTextEditor().getEditorInput() );
if ( resource != null && lineNumber <= doc.getNumberOfLines() && lineNumber > 0 )
{
enabled = ( getDebugTarget() != null && ((IRunToLine)getDebugTarget()).canRunToLine( resource, lineNumber ) );
}
setEnabled( enabled );
}
/**
* @see Action#run()
*/
public void run()
{
runToLine( getResource(), getLineNumber() );
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionListener#selectionChanged(IWorkbenchPart, ISelection)
*/
public void selectionChanged( IWorkbenchPart part, ISelection selection )
{
IDebugTarget target = null;
if ( part.getSite().getId().equals( IDebugUIConstants.ID_DEBUG_VIEW ) )
{
if ( selection != null && selection instanceof IStructuredSelection )
{
Object element = ((IStructuredSelection)selection).getFirstElement();
if ( element != null && element instanceof IDebugElement )
{
IDebugTarget target1 = ((IDebugElement)element).getDebugTarget();
if ( target1 != null && target1 instanceof IRunToLine )
{
target = target1;
}
}
}
setDebugTarget( target );
update();
}
}
protected void initializeDebugTarget()
{
setDebugTarget( null );
IAdaptable context = DebugUITools.getDebugContext();
if ( context != null && context instanceof IDebugElement )
{
IDebugTarget target = ((IDebugElement)context).getDebugTarget();
if ( target != null && target instanceof IRunToLine )
{
setDebugTarget( target );
}
}
}
protected void setDebugTarget( IDebugTarget target )
{
fDebugTarget = target;
}
protected IDebugTarget getDebugTarget()
{
return fDebugTarget;
}
protected IVerticalRulerInfo getInfo()
{
return fInfo;
}
protected void setInfo( IVerticalRulerInfo info )
{
fInfo = info;
}
protected ITextEditor getTextEditor()
{
return fTextEditor;
}
protected void setTextEditor( ITextEditor textEditor )
{
fTextEditor = textEditor;
}
protected IResource getResource()
{
IEditorInput input = getTextEditor().getEditorInput();
if ( input != null && input instanceof IFileEditorInput )
{
return ((IFileEditorInput)input).getFile();
}
return null;
}
protected int getLineNumber()
{
return getInfo().getLineOfLastMouseButtonActivity() + 1;
}
protected void runToLine( IResource resource, int lineNumber )
{
if ( !((IRunToLine)getDebugTarget()).canRunToLine( resource, lineNumber ) )
{
getTextEditor().getSite().getShell().getDisplay().beep();
return;
}
try
{
((IRunToLine)getDebugTarget()).runToLine( resource, lineNumber );
}
catch( DebugException e )
{
CDebugUIPlugin.errorDialog( e.getMessage(), e );
}
}
}

View file

@ -0,0 +1,45 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.source.IVerticalRulerInfo;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.texteditor.AbstractRulerActionDelegate;
import org.eclipse.ui.texteditor.ITextEditor;
/**
*
* Enter type comment.
*
* @since Sep 19, 2002
*/
public class RunToLineRulerActionDelegate extends AbstractRulerActionDelegate
{
static final private String C_EDITOR_ID = "org.eclipse.cdt.ui.editor.CEditor"; //$NON-NLS-1$
/**
* @see IEditorActionDelegate#setActiveEditor(IAction, IEditorPart)
*/
public void setActiveEditor( IAction callerAction, IEditorPart targetEditor )
{
if ( targetEditor != null )
{
String id = targetEditor.getSite().getId();
if ( !id.equals( C_EDITOR_ID ) )
targetEditor = null;
}
super.setActiveEditor( callerAction, targetEditor );
}
/* (non-Javadoc)
* @see org.eclipse.ui.texteditor.AbstractRulerActionDelegate#createAction(ITextEditor, IVerticalRulerInfo)
*/
public IAction createAction( ITextEditor editor, IVerticalRulerInfo rulerInfo )
{
return new RunToLineRulerAction( rulerInfo, editor );
}
}