Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Implementing the 'Signals' view (UI)

? src/org/eclipse/cdt/debug/internal/ui/views/signals
? src/org/eclipse/cdt/debug/internal/ui/views/signals
? src/org/eclipse/cdt/debug/internal/ui/views/signals
? src/org/eclipse/cdt/debug/internal/ui/views/signals
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v
retrieving revision 1.85
diff -u -r1.85 ChangeLog
--- ChangeLog 30 Jan 2003 16:23:48 -0000 1.85
+++ ChangeLog 31 Jan 2003 22:35:53 -0000
@@ -1,3 +1,21 @@
+2003-01-31 Mikhail Khodjaiants
+ Implementing the 'Signals' view.
+ * CDebugImages.java
+ * ICDebugHelpContextIds.java
+ * SignalActionDelegate.java
+ * SignalsView.java: new
+ * SignalsViewContentProvider.java: new
+ * SignalsViewer.java: new
+ * SignalsViewEventHandler.java: new
+ * AbstractDebugEventHandler.java
+ * plugin.xml
+ * plugin.properties
+ icons/full/clcl16/signal_co.gif
+ icons/full/dlcl16/signal_co.gif
+ icons/full/elcl16/signal_co.gif
+ icons/full/eview6/signals_view.gif
+ icons/full/cview6/signals_view.gif

 2003-01-30 Mikhail Khodjaiants
  Disassembly editor input fix.
  * CDTDebugModelPresentation.java
Index: plugin.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/plugin.properties,v
retrieving revision 1.29
diff -u -r1.29 plugin.properties
--- plugin.properties 17 Jan 2003 19:31:40 -0000 1.29
+++ plugin.properties 31 Jan 2003 22:35:53 -0000
@@ -9,6 +9,7 @@
 RegistersView.name=Registers
 MemoryView.name=Memory
 SharedLibrariesView.name=Shared Libraries
+SignalsView.name=Signals
 
 CDebuggerPage.name=C Debugger UI Page
 MemoryPreferencePage.name=Memory View
@@ -54,3 +55,5 @@
 DisassemblyEditor.name=Disassembly Editor
 
 LoadSymbolsAction.label=Load Symbols
+SignalAction.label=Signal
+
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/plugin.xml,v
retrieving revision 1.47
diff -u -r1.47 plugin.xml
--- plugin.xml 30 Jan 2003 15:01:29 -0000 1.47
+++ plugin.xml 31 Jan 2003 22:35:53 -0000
@@ -55,6 +55,13 @@
             class="org.eclipse.cdt.debug.internal.ui.views.sharedlibs.SharedLibrariesView"
             id="org.eclipse.cdt.debug.ui.SharedLibrariesView">
       </view>
+      <view
+            name="%SignalsView.name"
+            icon="icons/full/cview16/signals_view.gif"
+            category="org.eclipse.debug.ui"
+            class="org.eclipse.cdt.debug.internal.ui.views.signals.SignalsView"
+            id="org.eclipse.cdt.debug.ui.SignalsView">
+      </view>
    </extension>
    <extension
          point="org.eclipse.ui.perspectiveExtensions">
@@ -75,6 +82,11 @@
                relationship="stack"
                id="org.eclipse.cdt.debug.ui.SharedLibrariesView">
          </view>
+         <view
+               relative="org.eclipse.debug.ui.VariableView"
+               relationship="stack"
+               id="org.eclipse.cdt.debug.ui.SignalsView">
+         </view>
          <actionSet
                id="org.eclipse.cdt.debug.ui.debugActionSet">
          </actionSet>
@@ -654,11 +666,30 @@
          <action
                label="%LoadSymbolsAction.label"
                icon="icons/full/clcl16/load_symbols_co.gif"
-               helpContextId="breakpoint_properties_action_context"
+               helpContextId="load_symbols_action_context"
                class="org.eclipse.cdt.debug.internal.ui.actions.LoadSymbolsActionDelegate"
                menubarPath="additions"
                enablesFor="1"
                id="org.eclipse.cdt.debug.internal.ui.actions.LoadSymbolsActionDelegate">
+            <enablement>
+               <pluginState
+                     value="activated"
+                     id="org.eclipse.cdt.debug.ui">
+               </pluginState>
+            </enablement>
+         </action>
+      </objectContribution>
+      <objectContribution
+            objectClass="org.eclipse.cdt.debug.core.model.ICSignal"
+            id="org.eclipse.cdt.debug.ui.SignalActions">
+         <action
+               label="%SignalAction.label"
+               icon="icons/full/clcl16/signal_co.gif"
+               helpContextId="signal_action_context"
+               class="org.eclipse.cdt.debug.internal.ui.actions.SignalActionDelegate"
+               menubarPath="additions"
+               enablesFor="1"
+               id="org.eclipse.cdt.debug.internal.ui.actions.SignalActionDelegate">
             <enablement>
                <pluginState
                      value="activated"
Index: icons/full/clcl16/signal_co.gif
===================================================================
RCS file: icons/full/clcl16/signal_co.gif
diff -N icons/full/clcl16/signal_co.gif
Binary files /dev/null and signal_co.gif differ
Index: icons/full/cview16/signals_view.gif
===================================================================
RCS file: icons/full/cview16/signals_view.gif
diff -N icons/full/cview16/signals_view.gif
Binary files /dev/null and signals_view.gif differ
Index: icons/full/dlcl16/signal_co.gif
===================================================================
RCS file: icons/full/dlcl16/signal_co.gif
diff -N icons/full/dlcl16/signal_co.gif
Binary files /dev/null and signal_co.gif differ
Index: icons/full/elcl16/signal_co.gif
===================================================================
RCS file: icons/full/elcl16/signal_co.gif
diff -N icons/full/elcl16/signal_co.gif
Binary files /dev/null and signal_co.gif differ
Index: icons/full/eview16/signals_view.gif
===================================================================
RCS file: icons/full/eview16/signals_view.gif
diff -N icons/full/eview16/signals_view.gif
Binary files /dev/null and signals_view.gif differ
Index: icons/full/obj16/signal_obj.gif
===================================================================
RCS file: icons/full/obj16/signal_obj.gif
diff -N icons/full/obj16/signal_obj.gif
Binary files /dev/null and signal_obj.gif differ
Index: src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java,v
retrieving revision 1.14
diff -u -r1.14 CDebugImages.java
--- src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java 17 Jan 2003 19:31:40 -0000 1.14
+++ src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java 31 Jan 2003 22:35:54 -0000
@@ -67,6 +67,7 @@
  public static final String IMG_OBJS_FOLDER = NAME_PREFIX + "folder_obj.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_LOADED_SHARED_LIBRARY = NAME_PREFIX + "library_syms_obj.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_SHARED_LIBRARY = NAME_PREFIX + "library_obj.gif"; //$NON-NLS-1$
+ public static final String IMG_OBJS_SIGNAL = NAME_PREFIX + "signal_obj.gif"; //$NON-NLS-1$
 
  public static final String IMG_LCL_TYPE_NAMES = NAME_PREFIX + "tnames_co.gif"; //$NON-NLS-1$
  public static final String IMG_LCL_CHANGE_REGISTER_VALUE = NAME_PREFIX + "change_reg_value_co.gif"; //$NON-NLS-1$
@@ -116,6 +117,7 @@
  public static final ImageDescriptor DESC_OBJS_FOLDER = createManaged( T_OBJ, IMG_OBJS_FOLDER );
  public static final ImageDescriptor DESC_OBJS_LOADED_SHARED_LIBRARY = createManaged( T_OBJ, IMG_OBJS_LOADED_SHARED_LIBRARY );
  public static final ImageDescriptor DESC_OBJS_SHARED_LIBRARY = createManaged( T_OBJ, IMG_OBJS_SHARED_LIBRARY );
+ public static final ImageDescriptor DESC_OBJS_SIGNAL = createManaged( T_OBJ, IMG_OBJS_SIGNAL );
  public static final ImageDescriptor DESC_WIZBAN_ADD_SOURCE_LOCATION = createManaged( T_WIZBAN, IMG_WIZBAN_ADD_SOURCE_LOCATION );   //$NON-NLS-1$
  public static final ImageDescriptor DESC_WIZBAN_ADD_PRJ_SOURCE_LOCATION = createManaged( T_WIZBAN, IMG_WIZBAN_ADD_PRJ_SOURCE_LOCATION );   //$NON-NLS-1$
  public static final ImageDescriptor DESC_WIZBAN_ADD_DIR_SOURCE_LOCATION = createManaged( T_WIZBAN, IMG_WIZBAN_ADD_DIR_SOURCE_LOCATION );   //$NON-NLS-1$
Index: src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java,v
retrieving revision 1.9
diff -u -r1.9 ICDebugHelpContextIds.java
--- src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java 17 Jan 2003 00:15:12 -0000 1.9
+++ src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java 31 Jan 2003 22:35:54 -0000
@@ -35,6 +35,7 @@
  public static final String REGISTERS_VIEW = PREFIX + "registers_view_context"; //$NON-NLS-1$
  public static final String MEMORY_VIEW = PREFIX + "memory_view_context"; //$NON-NLS-1$
  public static final String SHARED_LIBRARIES_VIEW = PREFIX + "shared_libraries_view_context"; //$NON-NLS-1$
+ public static final String SIGNALS_VIEW = PREFIX + "signals_view_context"; //$NON-NLS-1$
 
  // Preference pages
  public static final String MEMORY_PREFERENCE_PAGE = PREFIX + "memory_preference_page_context"; //$NON-NLS-1$
Index: src/org/eclipse/cdt/debug/internal/ui/actions/SignalActionDelegate.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/actions/SignalActionDelegate.java
diff -N src/org/eclipse/cdt/debug/internal/ui/actions/SignalActionDelegate.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/actions/SignalActionDelegate.java 31 Jan 2003 22:35:54 -0000
@@ -0,0 +1,126 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.model.ICSignal;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 31, 2003
+ */
+public class SignalActionDelegate implements IObjectActionDelegate
+{
+ private ICSignal fSignal = null;
+
+ /**
+  * Constructor for SignalActionDelegate.
+  */
+ public SignalActionDelegate()
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+  */
+ public void setActivePart( IAction action, IWorkbenchPart targetPart )
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.IActionDelegate#run(IAction)
+  */
+ public void run( IAction action )
+ {
+  if ( getSignal() != null )
+  {
+   final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(),
+             DebugException.REQUEST_FAILED, "Unable to load symbols of shared library.", null );
+   BusyIndicator.showWhile( Display.getCurrent(),
+         new Runnable()
+          {
+           public void run()
+           {
+            try
+            {
+             doAction( getSignal() );
+            }
+            catch( DebugException e )
+            {
+             ms.merge( e.getStatus() );
+            }
+           }
+          } );
+   if ( !ms.isOK() )
+   {
+    IWorkbenchWindow window = CDebugUIPlugin.getActiveWorkbenchWindow();
+    if ( window != null )
+    {
+     CDebugUIPlugin.errorDialog( "Operation failed.", ms );
+    }
+    else
+    {
+     CDebugUIPlugin.log( ms );
+    }
+   }
+
+  }
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection)
+  */
+ public void selectionChanged( IAction action, ISelection selection )
+ {
+  if ( selection instanceof IStructuredSelection )
+  {
+   Object element = ((IStructuredSelection)selection).getFirstElement();
+   if ( element instanceof ICSignal )
+   {
+    boolean enabled = enablesFor( (ICSignal)element );
+    action.setEnabled( enabled );
+    if ( enabled )
+    {
+     setSignal( (ICSignal)element );
+     return;
+    }
+   }
+  }
+  action.setEnabled( false );
+  setSignal( null );
+ }
+
+ protected void doAction( ICSignal signal ) throws DebugException
+ {
+  signal.signal();
+ }
+
+ private boolean enablesFor( ICSignal signal )
+ {
+  return ( signal != null );
+ }

+ private void setSignal( ICSignal signal )
+ {
+  fSignal = signal;
+ }

+ protected ICSignal getSignal()
+ {
+  return fSignal;
+ }
+}
Index: src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java,v
retrieving revision 1.2
diff -u -r1.2 AbstractDebugEventHandler.java
--- src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java 17 Jan 2003 19:31:40 -0000 1.2
+++ src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java 31 Jan 2003 22:35:54 -0000
@@ -13,6 +13,7 @@
 import org.eclipse.jface.viewers.IBasicPropertyConstants;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 
@@ -200,6 +201,22 @@
   if ( getViewer() instanceof TreeViewer )
   {
    return (TreeViewer)getViewer();
+  }
+  return null;
+ }
+
+ /**
+  * Returns this event handler's viewer as a table
+  * viewer or <code>null</code> if none.
+  *
+  * @return this event handler's viewer as a tree
+  * viewer or <code>null</code> if none
+  */
+ protected TableViewer getTableViewer()
+ {
+  if ( getViewer() instanceof TableViewer )
+  {
+   return (TableViewer)getViewer();
   }
   return null;
  }
Index: src/org/eclipse/cdt/debug/internal/ui/views/SignalsView.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/views/SignalsView.java
diff -N src/org/eclipse/cdt/debug/internal/ui/views/SignalsView.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/views/SignalsView.java 31 Jan 2003 22:35:54 -0000
@@ -0,0 +1,222 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.views.signals;
+
+import org.eclipse.cdt.debug.core.ICSignalManager;
+import org.eclipse.cdt.debug.core.model.ICSignal;
+import org.eclipse.cdt.debug.internal.ui.CDebugImages;
+import org.eclipse.cdt.debug.internal.ui.CImageDescriptor;
+import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
+import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandlerView;
+import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPart;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 30, 2003
+ */
+public class SignalsView extends AbstractDebugEventHandlerView
+       implements ISelectionListener,
+          IPropertyChangeListener,
+          IDebugExceptionHandler
+{
+ /**
+  * Enter type comment.
+  *
+  * @since: Jan 30, 2003
+  */
+ public class SignalsViewLabelProvider extends LabelProvider implements ITableLabelProvider
+ {
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(Object, int)
+   */
+  public Image getColumnImage( Object element, int columnIndex )
+  {
+   if ( columnIndex == 0 )
+    return CDebugUIPlugin.getImageDescriptorRegistry().get( new CImageDescriptor( CDebugImages.DESC_OBJS_SIGNAL,  0 ) );
+   return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(Object, int)
+   */
+  public String getColumnText( Object element, int columnIndex )
+  {
+   if ( element instanceof ICSignal )
+   {
+    switch( columnIndex )
+    {
+     case 0:
+      return ((ICSignal)element).getName();
+     case 1:
+      return ( ((ICSignal)element).isPassEnabled() ) ?
+           SignalsViewer.YES_VALUE : SignalsViewer.NO_VALUE;
+     case 2:
+      return ( ((ICSignal)element).isStopEnabled() ) ?
+           SignalsViewer.YES_VALUE : SignalsViewer.NO_VALUE;
+     case 3:
+      return ((ICSignal)element).getDescription();
+    }
+   }
+   return null;
+  }
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.debug.ui.AbstractDebugView#createViewer(Composite)
+  */
+ protected Viewer createViewer( Composite parent )
+ {
+  CDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener( this );
+  
+  // add tree viewer
+  final SignalsViewer vv = new SignalsViewer( parent, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL );
+  vv.setContentProvider( new SignalsViewContentProvider() );
+  vv.setLabelProvider( new SignalsViewLabelProvider() );
+  vv.setUseHashlookup( true );
+
+  // listen to selection in debug view
+  getSite().getPage().addSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this );
+  setEventHandler( new SignalsViewEventHandler( this ) );
+
+  return vv;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.debug.ui.AbstractDebugView#createActions()
+  */
+ protected void createActions()
+ {
+  // set initial content here, as viewer has to be set
+  setInitialContent();
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.debug.ui.AbstractDebugView#getHelpContextId()
+  */
+ protected String getHelpContextId()
+ {
+  return ICDebugHelpContextIds.SIGNALS_VIEW;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.debug.ui.AbstractDebugView#fillContextMenu(IMenuManager)
+  */
+ protected void fillContextMenu( IMenuManager menu )
+ {
+  menu.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) );
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.debug.ui.AbstractDebugView#configureToolBar(IToolBarManager)
+  */
+ protected void configureToolBar( IToolBarManager tbm )
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.ISelectionListener#selectionChanged(IWorkbenchPart, ISelection)
+  */
+ public void selectionChanged( IWorkbenchPart part, ISelection selection )
+ {
+  if ( selection instanceof IStructuredSelection )
+  {
+   setViewerInput( (IStructuredSelection)selection );
+  }
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent)
+  */
+ public void propertyChange( PropertyChangeEvent event )
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler#handleException(DebugException)
+  */
+ public void handleException( DebugException e )
+ {
+ }
+
+ protected void setViewerInput( IStructuredSelection ssel )
+ {
+  ICSignalManager sm = null;
+  if ( ssel != null && ssel.size() == 1 )
+  {
+   Object input = ssel.getFirstElement();
+   if ( input instanceof IDebugElement )
+   {
+    sm = (ICSignalManager)((IDebugElement)input).getDebugTarget().getAdapter( ICSignalManager.class );
+   }
+  }
+
+  Object current = getViewer().getInput();
+  if ( current != null && current.equals( sm ) )
+  {
+   return;
+  }
+  showViewer();
+  getViewer().setInput( sm );
+  updateObjects();
+ }
+
+ /**
+  * Initializes the viewer input on creation
+  */
+ protected void setInitialContent()
+ {
+  ISelection selection =
+   getSite().getPage().getSelection( IDebugUIConstants.ID_DEBUG_VIEW );
+  if ( selection instanceof IStructuredSelection && !selection.isEmpty() )
+  {
+   setViewerInput( (IStructuredSelection)selection );
+  }
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.IWorkbenchPart#dispose()
+  */
+ public void dispose()
+ {
+  getSite().getPage().removeSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this );
+  CDebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener( this );
+  super.dispose();
+ }
+
+ /**
+  * Creates this view's content provider.
+  *
+  * @return a content provider
+  */
+ protected IContentProvider createContentProvider()
+ {
+  SignalsViewContentProvider cp = new SignalsViewContentProvider();
+  cp.setExceptionHandler( this );
+  return cp;
+ }
+}
Index: src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewContentProvider.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewContentProvider.java
diff -N src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewContentProvider.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewContentProvider.java 31 Jan 2003 22:35:54 -0000
@@ -0,0 +1,94 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.views.signals;
+
+import org.eclipse.cdt.debug.core.ICSignalManager;
+import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 30, 2003
+ */
+public class SignalsViewContentProvider implements IStructuredContentProvider
+{
+ /**
+  * Handler for exceptions as content is retrieved
+  */
+ private IDebugExceptionHandler fExceptionHandler = null;
+
+ /**
+  * Constructor for SignalsViewContentProvider.
+  */
+ public SignalsViewContentProvider()
+ {
+  super();
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)
+  */
+ public Object[] getElements( Object inputElement )
+ {
+  if ( inputElement instanceof ICSignalManager )
+  {
+   try
+   {
+    return ((ICSignalManager)inputElement).getSignals();
+   }
+   catch( DebugException e )
+   {
+    if ( getExceptionHandler() != null )
+    {
+     getExceptionHandler().handleException( e );
+    }
+    else
+    {
+     CDebugUIPlugin.log( e );
+    }
+   }
+  }
+  return new Object[0];
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+  */
+ public void dispose()
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer, Object, Object)
+  */
+ public void inputChanged( Viewer viewer, Object oldInput, Object newInput )
+ {
+ }
+
+ /**
+  * Sets an exception handler for this content provider.
+  *
+  * @param handler debug exception handler or <code>null</code>
+  */
+ protected void setExceptionHandler( IDebugExceptionHandler handler )
+ {
+  fExceptionHandler = handler;
+ }

+ /**
+  * Returns the exception handler for this content provider.
+  *
+  * @return debug exception handler or <code>null</code>
+  */
+ protected IDebugExceptionHandler getExceptionHandler()
+ {
+  return fExceptionHandler;
+ } 
+}
Index: src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewEventHandler.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewEventHandler.java
diff -N src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewEventHandler.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewEventHandler.java 31 Jan 2003 22:35:54 -0000
@@ -0,0 +1,77 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.views.signals;
+
+import org.eclipse.cdt.debug.core.model.ICSignal;
+import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler;
+import org.eclipse.debug.core.DebugEvent;
+import org.eclipse.debug.core.model.IDebugTarget;
+import org.eclipse.debug.ui.AbstractDebugView;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 30, 2003
+ */
+public class SignalsViewEventHandler extends AbstractDebugEventHandler
+{
+ /**
+  * Constructor for SignalsViewEventHandler.
+  * @param view
+  */
+ public SignalsViewEventHandler( AbstractDebugView view )
+ {
+  super( view );
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#doHandleDebugEvents(DebugEvent[])
+  */
+ protected void doHandleDebugEvents( DebugEvent[] events )
+ {
+  for( int i = 0; i < events.length; i++ )
+  {
+   DebugEvent event = events[i];
+   switch( event.getKind() )
+   {
+    case DebugEvent.CREATE:
+    case DebugEvent.TERMINATE:
+     if ( event.getSource() instanceof IDebugTarget ||
+       event.getSource() instanceof ICSignal )
+      refresh();
+     break;
+    case DebugEvent.CHANGE :
+     if ( event.getSource() instanceof ICSignal )
+      refresh( event.getSource() );
+     break;
+   }
+  }
+ }
+
+ /**
+  * Refresh the given element in the viewer - must be called in UI thread.
+  */
+ protected void refresh( Object element )
+ {
+  if ( isAvailable() )
+  {
+   getView().showViewer();
+   getTableViewer().refresh( element );
+  }
+ }
+
+ /**
+  * Refresh the viewer - must be called in UI thread.
+  */
+ public void refresh()
+ {
+  if ( isAvailable() )
+  {
+   getView().showViewer();
+   getTableViewer().refresh();
+  }
+ }
+}
Index: src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewer.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewer.java
diff -N src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewer.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/views/SignalsViewer.java 31 Jan 2003 22:35:54 -0000
@@ -0,0 +1,112 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.views.signals;
+
+import org.eclipse.cdt.debug.core.model.ICSignal;
+import org.eclipse.cdt.debug.internal.ui.PixelConverter;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ComboBoxCellEditor;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 30, 2003
+ */
+public class SignalsViewer extends TableViewer
+{
+ // String constants
+ protected static final String YES_VALUE = "yes";
+ protected static final String NO_VALUE = "no";
+
+ // Column properties
+ private static final String CP_NAME = "name";
+ private static final String CP_PASS = "pass";
+ private static final String CP_SUSPEND = "suspend";
+ private static final String CP_DESCRIPTION = "description";
+
+ /**
+  * Constructor for SignalsViewer.
+  * @param parent
+  * @param style
+  */
+ public SignalsViewer( Composite parent, int style )
+ {
+  super( parent, style );
+  Table table = getTable();
+  table.setLinesVisible( true );
+  table.setHeaderVisible( true );  
+  table.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+
+  // Create the table columns
+  new TableColumn( table, SWT.NULL );
+  new TableColumn( table, SWT.NULL );
+  new TableColumn( table, SWT.NULL );
+  new TableColumn( table, SWT.NULL );
+  TableColumn[] columns = table.getColumns();
+  columns[0].setResizable( true );
+  columns[1].setResizable( false );
+  columns[2].setResizable( false );
+  columns[3].setResizable( true );
+
+  columns[0].setText( "Name" );
+  columns[1].setText( "Pass" );
+  columns[2].setText( "Suspend" );
+  columns[3].setText( "Description" );
+
+  PixelConverter pc = new PixelConverter( parent );
+  columns[0].setWidth( pc.convertWidthInCharsToPixels( 20 ) );
+  columns[1].setWidth( pc.convertWidthInCharsToPixels( 15 ) );
+  columns[2].setWidth( pc.convertWidthInCharsToPixels( 15 ) );
+  columns[3].setWidth( pc.convertWidthInCharsToPixels( 50 ) );
+
+  CellEditor cellEditor = new ComboBoxCellEditor( table, new String[]{ YES_VALUE, NO_VALUE } );
+  setCellEditors( new CellEditor[]{ null, cellEditor, cellEditor, null } );
+  setColumnProperties( new String[]{ CP_NAME, CP_PASS, CP_SUSPEND, CP_DESCRIPTION } );
+  setCellModifier( createCellModifier() );
+ }

+ private ICellModifier createCellModifier()
+ {
+  return new ICellModifier()
+     {
+      public boolean canModify( Object element, String property )
+      {
+       if ( element instanceof ICSignal )
+       {
+        return ((ICSignal)element).getDebugTarget().isSuspended();
+       }
+       return false;
+      }
+
+      public Object getValue( Object element, String property )
+      {
+       if ( element instanceof ICSignal )
+       {
+        if ( CP_PASS.equals( property ) )
+        {
+         return ( ((ICSignal)element).isPassEnabled() ) ? new Integer( 0 ) : new Integer( 1 );
+        }
+        else if ( CP_SUSPEND.equals( property ) )
+        {
+         return ( ((ICSignal)element).isStopEnabled() ) ? new Integer( 0 ) : new Integer( 1 );
+        }
+       }
+       return null;
+      }
+
+      public void modify( Object element, String property, Object value )
+      {
+      }
+     };
+ }
+}


Back to the top