mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Implementing the 'Signals' view.
This commit is contained in:
parent
4572bd4f18
commit
0cf8c37fd5
7 changed files with 83 additions and 9 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2003-02-03 Mikhail Khodjaiants
|
||||||
|
Implementing the 'Signals' view.
|
||||||
|
* CSignalManager.java: new
|
||||||
|
* CSignal.java: new
|
||||||
|
|
||||||
2003-02-03 Alain Magloire
|
2003-02-03 Alain Magloire
|
||||||
|
|
||||||
* src/org/eclipse/cdt/debug/core/cdi/event/ICDIExitEvent.java:
|
* src/org/eclipse/cdt/debug/core/cdi/event/ICDIExitEvent.java:
|
||||||
|
|
|
@ -5,7 +5,10 @@
|
||||||
*/
|
*/
|
||||||
package org.eclipse.cdt.debug.internal.core;
|
package org.eclipse.cdt.debug.internal.core;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.ICSignalManager;
|
import org.eclipse.cdt.debug.core.ICSignalManager;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
|
||||||
import org.eclipse.cdt.debug.core.model.ICSignal;
|
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.CDebugTarget;
|
||||||
|
@ -23,6 +26,7 @@ public class CSignalManager implements ICSignalManager
|
||||||
{
|
{
|
||||||
private CDebugTarget fDebugTarget = null;
|
private CDebugTarget fDebugTarget = null;
|
||||||
private ICSignal[] fSignals = null;
|
private ICSignal[] fSignals = null;
|
||||||
|
private boolean fIsDisposed = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for CSignalManager.
|
* Constructor for CSignalManager.
|
||||||
|
@ -37,9 +41,21 @@ public class CSignalManager implements ICSignalManager
|
||||||
*/
|
*/
|
||||||
public ICSignal[] getSignals() throws DebugException
|
public ICSignal[] getSignals() throws DebugException
|
||||||
{
|
{
|
||||||
if ( fSignals == null )
|
if ( !isDisposed() && fSignals == null )
|
||||||
{
|
{
|
||||||
// load signals from target
|
try
|
||||||
|
{
|
||||||
|
ICDISignal[] cdiSignals = ((CDebugTarget)getDebugTarget()).getCDISession().getSignalManager().getSignals();
|
||||||
|
ArrayList list = new ArrayList( cdiSignals.length );
|
||||||
|
for ( int i = 0; i < cdiSignals.length; ++i )
|
||||||
|
{
|
||||||
|
list.add( new CSignal( (CDebugTarget)getDebugTarget(), cdiSignals[i] ) );
|
||||||
|
}
|
||||||
|
fSignals = (ICSignal[])list.toArray( new ICSignal[list.size()] );
|
||||||
|
}
|
||||||
|
catch( CDIException e )
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ( fSignals != null ) ? fSignals : new ICSignal[0];
|
return ( fSignals != null ) ? fSignals : new ICSignal[0];
|
||||||
}
|
}
|
||||||
|
@ -55,6 +71,7 @@ public class CSignalManager implements ICSignalManager
|
||||||
fSignals[i].dispose();
|
fSignals[i].dispose();
|
||||||
}
|
}
|
||||||
fSignals = null;
|
fSignals = null;
|
||||||
|
fIsDisposed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -110,4 +127,9 @@ public class CSignalManager implements ICSignalManager
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean isDisposed()
|
||||||
|
{
|
||||||
|
return fIsDisposed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
package org.eclipse.cdt.debug.internal.core.model;
|
package org.eclipse.cdt.debug.internal.core.model;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
|
import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
|
||||||
import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener;
|
import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
|
||||||
|
@ -36,7 +37,7 @@ public class CSignal extends CDebugElement implements ICSignal, ICDIEventListene
|
||||||
*/
|
*/
|
||||||
public String getDescription()
|
public String getDescription()
|
||||||
{
|
{
|
||||||
return "";
|
return getCDISignal().getDescription();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -44,7 +45,7 @@ public class CSignal extends CDebugElement implements ICSignal, ICDIEventListene
|
||||||
*/
|
*/
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return "";
|
return getCDISignal().getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -52,7 +53,7 @@ public class CSignal extends CDebugElement implements ICSignal, ICDIEventListene
|
||||||
*/
|
*/
|
||||||
public boolean isPassEnabled()
|
public boolean isPassEnabled()
|
||||||
{
|
{
|
||||||
return false;
|
return !getCDISignal().isIgnore();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -60,7 +61,7 @@ public class CSignal extends CDebugElement implements ICSignal, ICDIEventListene
|
||||||
*/
|
*/
|
||||||
public boolean isStopEnabled()
|
public boolean isStopEnabled()
|
||||||
{
|
{
|
||||||
return false;
|
return getCDISignal().isStopSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -97,5 +98,18 @@ public class CSignal extends CDebugElement implements ICSignal, ICDIEventListene
|
||||||
*/
|
*/
|
||||||
public void signal() throws DebugException
|
public void signal() throws DebugException
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
getCDISignal().signal();
|
||||||
|
}
|
||||||
|
catch( CDIException e )
|
||||||
|
{
|
||||||
|
targetRequestFailed( e.getMessage(), null );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ICDISignal getCDISignal()
|
||||||
|
{
|
||||||
|
return fCDISignal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2003-02-03 Mikhail Khodjaiants
|
||||||
|
Implementing the 'Signals' view.
|
||||||
|
* SignalActionDelegate.java
|
||||||
|
* SignalsViewer.java: new
|
||||||
|
* CDTDebugModelPresentation.java
|
||||||
|
|
||||||
2003-01-31 Mikhail Khodjaiants
|
2003-01-31 Mikhail Khodjaiants
|
||||||
Implementing the 'Signals' view.
|
Implementing the 'Signals' view.
|
||||||
* CDebugImages.java
|
* CDebugImages.java
|
||||||
|
|
|
@ -358,7 +358,7 @@ public class CDTDebugModelPresentation extends LabelProvider
|
||||||
if ( info != null && info instanceof ICDISignalExitInfo)
|
if ( info != null && info instanceof ICDISignalExitInfo)
|
||||||
{
|
{
|
||||||
ICDISignalExitInfo sigInfo = (ICDISignalExitInfo)info;
|
ICDISignalExitInfo sigInfo = (ICDISignalExitInfo)info;
|
||||||
label += MessageFormat.format( " (Signal ''{0}'' received. Meaning: {1})",
|
label += MessageFormat.format( " (Signal ''{0}'' received. Description: {1})",
|
||||||
new String[] { sigInfo.getName(), sigInfo.getDescription() } );
|
new String[] { sigInfo.getName(), sigInfo.getDescription() } );
|
||||||
}
|
}
|
||||||
else if ( info != null && info instanceof ICDIExitInfo )
|
else if ( info != null && info instanceof ICDIExitInfo )
|
||||||
|
@ -374,7 +374,7 @@ public class CDTDebugModelPresentation extends LabelProvider
|
||||||
{
|
{
|
||||||
ICDISignal signal = ((ICDISignalReceived)info).getSignal();
|
ICDISignal signal = ((ICDISignalReceived)info).getSignal();
|
||||||
String label = target.getName() +
|
String label = target.getName() +
|
||||||
MessageFormat.format( " (Signal ''{0}'' received. Meaning: {1})",
|
MessageFormat.format( " (Signal ''{0}'' received. Description: {1})",
|
||||||
new String[] { signal.getName(), signal.getDescription() } );
|
new String[] { signal.getName(), signal.getDescription() } );
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
*/
|
*/
|
||||||
package org.eclipse.cdt.debug.internal.ui.actions;
|
package org.eclipse.cdt.debug.internal.ui.actions;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.model.ICSignal;
|
import org.eclipse.cdt.debug.core.model.ICSignal;
|
||||||
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
|
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
|
||||||
import org.eclipse.core.runtime.MultiStatus;
|
import org.eclipse.core.runtime.MultiStatus;
|
||||||
|
@ -49,7 +51,9 @@ public class SignalActionDelegate implements IObjectActionDelegate
|
||||||
if ( getSignal() != null )
|
if ( getSignal() != null )
|
||||||
{
|
{
|
||||||
final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(),
|
final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(),
|
||||||
DebugException.REQUEST_FAILED, "Unable to load symbols of shared library.", null );
|
DebugException.REQUEST_FAILED,
|
||||||
|
MessageFormat.format( "Unable to deliver the signal ''{0}'' to the target.", new String[] { getSignal().getName() } ),
|
||||||
|
null );
|
||||||
BusyIndicator.showWhile( Display.getCurrent(),
|
BusyIndicator.showWhile( Display.getCurrent(),
|
||||||
new Runnable()
|
new Runnable()
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,9 +7,11 @@ package org.eclipse.cdt.debug.internal.ui.views.signals;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.model.ICSignal;
|
import org.eclipse.cdt.debug.core.model.ICSignal;
|
||||||
import org.eclipse.cdt.debug.internal.ui.PixelConverter;
|
import org.eclipse.cdt.debug.internal.ui.PixelConverter;
|
||||||
|
import org.eclipse.debug.core.DebugException;
|
||||||
import org.eclipse.jface.viewers.CellEditor;
|
import org.eclipse.jface.viewers.CellEditor;
|
||||||
import org.eclipse.jface.viewers.ComboBoxCellEditor;
|
import org.eclipse.jface.viewers.ComboBoxCellEditor;
|
||||||
import org.eclipse.jface.viewers.ICellModifier;
|
import org.eclipse.jface.viewers.ICellModifier;
|
||||||
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
import org.eclipse.jface.viewers.TableViewer;
|
import org.eclipse.jface.viewers.TableViewer;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
@ -106,6 +108,27 @@ public class SignalsViewer extends TableViewer
|
||||||
|
|
||||||
public void modify( Object element, String property, Object value )
|
public void modify( Object element, String property, Object value )
|
||||||
{
|
{
|
||||||
|
IStructuredSelection sel = (IStructuredSelection)getSelection();
|
||||||
|
Object entry = sel.getFirstElement();
|
||||||
|
if ( entry instanceof ICSignal && value instanceof Integer )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
boolean enable = ( ((Integer)value).intValue() == 0 );
|
||||||
|
if ( CP_PASS.equals( property ) )
|
||||||
|
{
|
||||||
|
((ICSignal)entry).setPassEnabled( enable );
|
||||||
|
}
|
||||||
|
else if ( CP_SUSPEND.equals( property ) )
|
||||||
|
{
|
||||||
|
((ICSignal)entry).setStopEnabled( enable );
|
||||||
|
}
|
||||||
|
refresh( entry );
|
||||||
|
}
|
||||||
|
catch( DebugException e )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue