1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-29 03:45:35 +02:00

Core support of 'Auto-Refresh' and 'Refresh' actions.

This commit is contained in:
Mikhail Khodjaiants 2003-03-31 22:49:06 +00:00
parent 903e1c11d8
commit f0b4f5668f
8 changed files with 354 additions and 155 deletions

View file

@ -1,3 +1,14 @@
2003-03-31 Mikhail Khodjaiants
The new abstract class ('CUpdateManager') is added to provide a basic implementation of ICUpdateManager.
CSignalManager, CSharedLibraryManager and CRegisterManager extend this class.
* ICRegisterManager.java: new
* CRegisterManager.java: new
* CSharedLibraryManager.java
* CSignalManager.java
* CUpdateManager.java: new
* CDebugTarget.java
* CRegisterGroup.java
2003-03-28 Mikhail Khodjaiants
Use the 'exists' method of the 'IFile' interface instead of using 'toFile().exists()' for 'IPath'.
* CDirectorySourceLocation.java

View file

@ -0,0 +1,33 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.core;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IRegisterGroup;
/**
* Enter type comment.
*
* @since Mar 31, 2003
*/
public interface ICRegisterManager extends ICUpdateManager, IAdaptable
{
void initialize();
IRegisterGroup[] getRegisterGroups() throws DebugException;
void addRegisterGroup( IRegisterGroup group );
void removeRegisterGroup( IRegisterGroup group );
void removeAllRegisterGroups();
void reset();
void dispose();
}

View file

@ -0,0 +1,147 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.core;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.ICRegisterManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterObject;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
import org.eclipse.cdt.debug.internal.core.model.CRegisterGroup;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IRegisterGroup;
/**
* Enter type comment.
*
* @since Mar 31, 2003
*/
public class CRegisterManager extends CUpdateManager implements ICRegisterManager
{
/**
* Collection of register groups added to this target. Values are of type <code>CRegisterGroup</code>.
*/
private List fRegisterGroups;
/**
*
*/
public CRegisterManager( CDebugTarget target )
{
super( target );
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
*/
public Object getAdapter( Class adapter )
{
if ( ICRegisterManager.class.equals( adapter ) )
return this;
if ( CRegisterManager.class.equals( adapter ) )
return this;
return super.getAdapter( adapter );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICRegisterManager#dispose()
*/
public void dispose()
{
removeAllRegisterGroups();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICRegisterManager#addRegisterGroup(org.eclipse.debug.core.model.IRegisterGroup)
*/
public void addRegisterGroup( IRegisterGroup group )
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICRegisterManager#getRegisterGroups()
*/
public IRegisterGroup[] getRegisterGroups() throws DebugException
{
return (IRegisterGroup[])fRegisterGroups.toArray( new IRegisterGroup[fRegisterGroups.size()] );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICRegisterManager#initialize()
*/
public void initialize()
{
fRegisterGroups = new ArrayList( 20 );
createMainRegisterGroup();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICRegisterManager#removeAllRegisterGroups()
*/
public void removeAllRegisterGroups()
{
Iterator it = fRegisterGroups.iterator();
while( it.hasNext() )
{
((CRegisterGroup)it.next()).dispose();
}
fRegisterGroups.clear();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICRegisterManager#removeRegisterGroup(org.eclipse.debug.core.model.IRegisterGroup)
*/
public void removeRegisterGroup( IRegisterGroup group )
{
fRegisterGroups.remove( group );
}
private void createMainRegisterGroup()
{
ICDIRegisterObject[] regObjects = null;
try
{
regObjects = getDebugTarget().getCDISession().getRegisterManager().getRegisterObjects();
}
catch( CDIException e )
{
CDebugCorePlugin.log( e );
}
if ( regObjects != null )
{
fRegisterGroups.add( new CRegisterGroup( getDebugTarget(), "Main", regObjects ) );
}
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICRegisterManager#reset()
*/
public void reset()
{
Iterator it = fRegisterGroups.iterator();
while( it.hasNext() )
{
((CRegisterGroup)it.next()).resetChangeFlags();
}
}
protected ICDIManager getCDIManager()
{
if ( getDebugTarget() != null )
{
return ((CDebugTarget)getDebugTarget()).getCDISession().getRegisterManager();
}
return null;
}
}

View file

@ -9,24 +9,22 @@ import java.util.ArrayList;
import java.util.Iterator;
import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
import org.eclipse.cdt.debug.core.ICUpdateManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIManager;
import org.eclipse.cdt.debug.core.cdi.ICDISharedLibraryManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
import org.eclipse.cdt.debug.internal.core.model.CSharedLibrary;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugTarget;
/**
* Enter type comment.
*
* @since: Jan 16, 2003
*/
public class CSharedLibraryManager implements ICSharedLibraryManager
public class CSharedLibraryManager extends CUpdateManager implements ICSharedLibraryManager
{
private CDebugTarget fDebugTarget = null;
private ArrayList fSharedLibraries;
@ -36,7 +34,7 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
*/
public CSharedLibraryManager( CDebugTarget target )
{
setDebugTarget( target );
super( target );
fSharedLibraries = new ArrayList( 5 );
}
@ -103,10 +101,6 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
*/
public Object getAdapter( Class adapter )
{
if ( adapter.equals( ICUpdateManager.class ) )
{
return this;
}
if ( adapter.equals( ICSharedLibraryManager.class ) )
{
return this;
@ -115,25 +109,7 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
{
return this;
}
if ( adapter.equals( IDebugTarget.class ) )
{
return fDebugTarget;
}
if ( adapter.equals( ICDebugTarget.class ) )
{
return fDebugTarget;
}
return null;
}
public IDebugTarget getDebugTarget()
{
return fDebugTarget;
}
protected void setDebugTarget( CDebugTarget target )
{
fDebugTarget = target;
return super.getAdapter( adapter );
}
protected CSharedLibrary find( ICDISharedLibrary cdiLibrary )
@ -147,49 +123,8 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#getAutoModeEnabled()
*/
public boolean getAutoModeEnabled()
{
if ( getCDIManager() != null )
{
return getCDIManager().isAutoUpdate();
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#setAutoModeEnabled(boolean)
*/
public void setAutoModeEnabled( boolean enable )
{
if ( getCDIManager() != null )
{
getCDIManager().setAutoUpdate( enable );
}
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#update()
*/
public void update() throws DebugException
{
if ( getCDIManager() != null )
{
try
{
getCDIManager().update();
}
catch( CDIException e )
{
((CDebugTarget)getDebugTarget()).targetRequestFailed( e.toString(), null );
}
}
}
private ICDISharedLibraryManager getCDIManager()
protected ICDIManager getCDIManager()
{
if ( getDebugTarget() != null )
{
@ -198,24 +133,12 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#canUpdate()
*/
public boolean canUpdate()
{
if ( getDebugTarget() != null )
{
return getDebugTarget().isSuspended();
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICSharedLibraryManager#loadSymbols(org.eclipse.cdt.debug.core.model.ICSharedLibrary)
*/
public void loadSymbols( ICSharedLibrary[] libraries ) throws DebugException
{
ICDISharedLibraryManager slm = getCDIManager();
ICDISharedLibraryManager slm = (ICDISharedLibraryManager)getCDIManager();
if ( slm != null )
{
ArrayList cdiLibs = new ArrayList( libraries.length );
@ -239,7 +162,7 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
*/
public void loadSymbolsForAll() throws DebugException
{
ICDISharedLibraryManager slm = getCDIManager();
ICDISharedLibraryManager slm = (ICDISharedLibraryManager)getCDIManager();
if ( slm != null )
{
try

View file

@ -9,22 +9,21 @@ import java.util.ArrayList;
import org.eclipse.cdt.debug.core.ICSignalManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
import org.eclipse.cdt.debug.core.model.ICSignal;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
import org.eclipse.cdt.debug.internal.core.model.CSignal;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugTarget;
/**
* Enter type comment.
*
* @since: Jan 31, 2003
*/
public class CSignalManager implements ICSignalManager
public class CSignalManager extends CUpdateManager implements ICSignalManager
{
private CDebugTarget fDebugTarget = null;
private ICSignal[] fSignals = null;
private boolean fIsDisposed = false;
@ -33,7 +32,7 @@ public class CSignalManager implements ICSignalManager
*/
public CSignalManager( CDebugTarget target )
{
setDebugTarget( target );
super( target );
}
/* (non-Javadoc)
@ -87,21 +86,7 @@ public class CSignalManager implements ICSignalManager
{
return this;
}
if ( adapter.equals( IDebugTarget.class ) )
{
return fDebugTarget;
}
return null;
}
public IDebugTarget getDebugTarget()
{
return fDebugTarget;
}
protected void setDebugTarget( CDebugTarget target )
{
fDebugTarget = target;
return super.getAdapter( adapter );
}
public void signalChanged( ICDISignal cdiSignal )
@ -132,4 +117,13 @@ public class CSignalManager implements ICSignalManager
{
return fIsDisposed;
}
protected ICDIManager getCDIManager()
{
if ( getDebugTarget() != null )
{
return ((CDebugTarget)getDebugTarget()).getCDISession().getSignalManager();
}
return null;
}
}

View file

@ -0,0 +1,108 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.core;
import org.eclipse.cdt.debug.core.ICUpdateManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIManager;
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugTarget;
/**
* Enter type comment.
*
* @since Mar 31, 2003
*/
public abstract class CUpdateManager implements ICUpdateManager, IAdaptable
{
private CDebugTarget fDebugTarget = null;
/**
*
*/
public CUpdateManager( CDebugTarget target )
{
fDebugTarget = target;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#setAutoModeEnabled(boolean)
*/
public void setAutoModeEnabled( boolean enable )
{
if ( getCDIManager() != null )
{
getCDIManager().setAutoUpdate( enable );
}
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#getAutoModeEnabled()
*/
public boolean getAutoModeEnabled()
{
if ( getCDIManager() != null )
{
return getCDIManager().isAutoUpdate();
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#update()
*/
public void update() throws DebugException
{
if ( getCDIManager() != null )
{
try
{
getCDIManager().update();
}
catch( CDIException e )
{
((CDebugTarget)getDebugTarget()).targetRequestFailed( e.toString(), null );
}
}
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICUpdateManager#canUpdate()
*/
public boolean canUpdate()
{
if ( getDebugTarget() != null )
{
return getDebugTarget().isSuspended();
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
*/
public Object getAdapter( Class adapter )
{
if ( ICUpdateManager.class.equals( adapter ) )
return this;
if ( IDebugTarget.class.equals( adapter ) )
return getDebugTarget();
if ( ICDebugTarget.class.equals( adapter ) )
return getDebugTarget();
return null;
}
public CDebugTarget getDebugTarget()
{
return fDebugTarget;
}
abstract protected ICDIManager getCDIManager();
}

View file

@ -22,6 +22,7 @@ import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.CDebugModel;
import org.eclipse.cdt.debug.core.ICBreakpointManager;
import org.eclipse.cdt.debug.core.ICMemoryManager;
import org.eclipse.cdt.debug.core.ICRegisterManager;
import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
import org.eclipse.cdt.debug.core.ICSignalManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
@ -50,7 +51,6 @@ import org.eclipse.cdt.debug.core.cdi.event.ICDISuspendedEvent;
import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDILocationBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterObject;
import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
@ -75,6 +75,7 @@ import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator;
import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode;
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
import org.eclipse.cdt.debug.internal.core.CMemoryManager;
import org.eclipse.cdt.debug.internal.core.CRegisterManager;
import org.eclipse.cdt.debug.internal.core.CSharedLibraryManager;
import org.eclipse.cdt.debug.internal.core.CSignalManager;
import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
@ -213,11 +214,6 @@ public class CDebugTarget extends CDebugElement
*/
private HashMap fBreakpoints;
/**
* Collection of register groups added to this target. Values are of type <code>CRegisterGroup</code>.
*/
private List fRegisterGroups;
/**
* A memory manager for this target.
*/
@ -238,6 +234,11 @@ public class CDebugTarget extends CDebugElement
*/
private CSignalManager fSignalManager;
/**
* A register manager for this target.
*/
private CRegisterManager fRegisterManager;
/**
* Whether the debugger process is default.
*/
@ -284,6 +285,7 @@ public class CDebugTarget extends CDebugElement
setDisassemblyManager( new DisassemblyManager( this ) );
setSharedLibraryManager( new CSharedLibraryManager( this ) );
setSignalManager( new CSignalManager( this ) );
setRegisterManager( new CRegisterManager( this ) );
initialize();
DebugPlugin.getDefault().getLaunchManager().addLaunchListener( this );
DebugPlugin.getDefault().getExpressionManager().addExpressionListener( this );
@ -387,8 +389,7 @@ public class CDebugTarget extends CDebugElement
protected void initializeRegisters()
{
fRegisterGroups = new ArrayList( 20 );
createMainRegisterGroup();
getRegisterManager().initialize();
}
protected void initializeMemoryManager()
@ -931,6 +932,8 @@ public class CDebugTarget extends CDebugElement
return getSharedLibraryManager();
if ( adapter.equals( ICSignalManager.class ) )
return getSignalManager();
if ( adapter.equals( ICRegisterManager.class ) )
return getRegisterManager();
return super.getAdapter( adapter );
}
@ -1175,7 +1178,6 @@ public class CDebugTarget extends CDebugElement
protected void cleanup()
{
removeAllThreads();
removeAllRegisterGroups();
getCDISession().getEventManager().removeEventListener( this );
DebugPlugin.getDefault().getBreakpointManager().removeBreakpointListener( this );
DebugPlugin.getDefault().getExpressionManager().removeExpressionListener( this );
@ -1183,6 +1185,7 @@ public class CDebugTarget extends CDebugElement
disposeMemoryManager();
disposeSharedLibraryManager();
disposeSignalManager();
disposeRegisterManager();
removeAllExpressions();
try
{
@ -2017,42 +2020,6 @@ public class CDebugTarget extends CDebugElement
return isAvailable() && isSuspended();
}
protected IRegisterGroup[] getRegisterGroups() throws DebugException
{
return (IRegisterGroup[])fRegisterGroups.toArray( new IRegisterGroup[fRegisterGroups.size()] );
}
protected IRegisterGroup[] getRegisterGroups( CStackFrame stackFrame ) throws DebugException
{
return (IRegisterGroup[])fRegisterGroups.toArray( new IRegisterGroup[fRegisterGroups.size()] );
}
protected void createMainRegisterGroup()
{
ICDIRegisterObject[] regObjects = null;
try
{
regObjects = getCDISession().getRegisterManager().getRegisterObjects();
}
catch( CDIException e )
{
CDebugCorePlugin.log( e );
}
if ( regObjects != null )
{
fRegisterGroups.add( new CRegisterGroup( this, "Main", regObjects ) );
}
}
protected void removeAllRegisterGroups()
{
Iterator it = fRegisterGroups.iterator();
while( it.hasNext() )
{
((CRegisterGroup)it.next()).dispose();
}
}
/* (non-Javadoc)
* @see org.eclipse.debug.core.IExpressionListener#expressionAdded(IExpression)
*/
@ -2194,11 +2161,7 @@ public class CDebugTarget extends CDebugElement
protected void resetRegisters()
{
Iterator it = fRegisterGroups.iterator();
while( it.hasNext() )
{
((CRegisterGroup)it.next()).resetChangeFlags();
}
getRegisterManager().reset();
}
/**
@ -2395,6 +2358,11 @@ public class CDebugTarget extends CDebugElement
fSignalManager.dispose();
}
protected void disposeRegisterManager()
{
fRegisterManager.dispose();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICBreakpointManager#getBreakpointAddress(IBreakpoint)
*/
@ -2554,4 +2522,19 @@ public class CDebugTarget extends CDebugElement
targetRequestFailed( e.toString(), e );
}
}
public CRegisterManager getRegisterManager()
{
return fRegisterManager;
}
protected void setRegisterManager( CRegisterManager registerManager )
{
fRegisterManager = registerManager;
}
public IRegisterGroup[] getRegisterGroups() throws DebugException
{
return getRegisterManager().getRegisterGroups();
}
}

View file

@ -80,7 +80,7 @@ public class CRegisterGroup extends CDebugElement implements IRegisterGroup
return fRegisters;
}
protected void dispose()
public void dispose()
{
Iterator it = fRegisters.iterator();
while( it.hasNext() )
@ -107,7 +107,7 @@ public class CRegisterGroup extends CDebugElement implements IRegisterGroup
return results;
}
protected void resetChangeFlags()
public void resetChangeFlags()
{
if ( fRegisters == null )
return;