diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index 42f1efcf973..b0caed64283 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,3 +1,13 @@
+2003-01-17 Mikhail Khodjaiants
+ Implementation of the shared library view.
+ * LoadSymbolsActionDelegate.java
+ * SharedLibrariesView.java
+ * SharedLibrariesViewEventHandler.java
+ * CDTDebugModelPresentation.java
+ * CDebugImages.java
+ * plugin.properties
+ * plugin.xml
+
2003-01-16 Mikhail Khodjaiants
Implementing the Shared Libraries view.
* SharedLibrariesView.java
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/load_symbols_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/load_symbols_co.gif
new file mode 100644
index 00000000000..4007422e437
Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/load_symbols_co.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/cview16/sharedlibraries_view.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/cview16/sharedlibraries_view.gif
index d84096acfc9..e45ab0f692c 100644
Binary files a/debug/org.eclipse.cdt.debug.ui/icons/full/cview16/sharedlibraries_view.gif and b/debug/org.eclipse.cdt.debug.ui/icons/full/cview16/sharedlibraries_view.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/load_symbols_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/load_symbols_co.gif
new file mode 100644
index 00000000000..545b489bdf2
Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/load_symbols_co.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/load_symbols_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/load_symbols_co.gif
new file mode 100644
index 00000000000..2e4eca281c1
Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/load_symbols_co.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/eview16/sharedlibraries_view.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/eview16/sharedlibraries_view.gif
index d84096acfc9..e45ab0f692c 100644
Binary files a/debug/org.eclipse.cdt.debug.ui/icons/full/eview16/sharedlibraries_view.gif and b/debug/org.eclipse.cdt.debug.ui/icons/full/eview16/sharedlibraries_view.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/library_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/library_obj.gif
new file mode 100644
index 00000000000..148057bb3c4
Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/library_obj.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/library_syms_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/library_syms_obj.gif
new file mode 100644
index 00000000000..e45ab0f692c
Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/library_syms_obj.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/sharedlibraryl_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/sharedlibraryl_obj.gif
deleted file mode 100644
index d84096acfc9..00000000000
Binary files a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/sharedlibraryl_obj.gif and /dev/null differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/sharedlibraryu_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/sharedlibraryu_obj.gif
deleted file mode 100644
index 99626dee909..00000000000
Binary files a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/sharedlibraryu_obj.gif and /dev/null differ
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties
index 0bd4833ed1f..3dc22cce4d2 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties
@@ -52,3 +52,5 @@ CDebugActionGroup.name=C/C++ Debug
SourcePropertyPage.name=Source Lookup
DisassemblyEditor.name=Disassembly Editor
+
+LoadSymbolsAction.label=Load Symbols
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index ae00f8fd44d..e8eabfbdbed 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -627,6 +627,43 @@
+
+
+
+
+
+
+
+
+
@@ -748,6 +785,27 @@
+
+
+
+
+
+
+
+
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
index 44996e8a508..07959ce0c69 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
@@ -22,6 +22,7 @@ import org.eclipse.cdt.debug.core.model.ICBreakpoint;
import org.eclipse.cdt.debug.core.model.ICDebugTargetType;
import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint;
import org.eclipse.cdt.debug.core.model.ICLineBreakpoint;
+import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
import org.eclipse.cdt.debug.core.model.ICValue;
import org.eclipse.cdt.debug.core.model.ICWatchpoint;
import org.eclipse.cdt.debug.core.model.IDummyStackFrame;
@@ -228,6 +229,10 @@ public class CDTDebugModelPresentation extends LabelProvider
{
return getVariableImage( (IVariable)element );
}
+ if ( element instanceof ICSharedLibrary )
+ {
+ return getSharedLibraryImage( (ICSharedLibrary)element );
+ }
}
catch( CoreException e )
{
@@ -244,6 +249,12 @@ public class CDTDebugModelPresentation extends LabelProvider
StringBuffer label = new StringBuffer();
try
{
+ if ( element instanceof ICSharedLibrary )
+ {
+ label.append( getSharedLibraryText( (ICSharedLibrary)element, showQualified ) );
+ return label.toString();
+ }
+
if ( element instanceof IRegisterGroup )
{
label.append( ((IRegisterGroup)element).getName() );
@@ -478,6 +489,17 @@ public class CDTDebugModelPresentation extends LabelProvider
return label;
}
+ protected String getSharedLibraryText( ICSharedLibrary library, boolean qualified ) throws DebugException
+ {
+ String label = new String();
+ IPath path = new Path( library.getFileName() );
+ if ( !path.isEmpty() )
+ label += ( qualified ? path.toOSString() : path.lastSegment() );
+ return label + MessageFormat.format( " (Start address: ''{0}'' End address: ''{1}'')",
+ new String[] { CDebugUtils.toHexAddressString( library.getStartAddress() ),
+ CDebugUtils.toHexAddressString( library.getEndAddress() ) } );
+ }
+
/**
* Plug in the single argument to the resource String for the key to
* get a formatted resource String.
@@ -771,6 +793,18 @@ public class CDTDebugModelPresentation extends LabelProvider
return fDebugImageRegistry.get( new CImageDescriptor( DebugUITools.getImageDescriptor( IDebugUIConstants.IMG_OBJS_EXPRESSION ), 0 ) );
}
+ protected Image getSharedLibraryImage( ICSharedLibrary element ) throws DebugException
+ {
+ if ( element.areSymbolsLoaded() )
+ {
+ return CDebugUIPlugin.getImageDescriptorRegistry().get( new CImageDescriptor( CDebugImages.DESC_OBJS_LOADED_SHARED_LIBRARY, 0 ) );
+ }
+ else
+ {
+ return CDebugUIPlugin.getImageDescriptorRegistry().get( new CImageDescriptor( CDebugImages.DESC_OBJS_SHARED_LIBRARY, 0 ) );
+ }
+ }
+
protected DisassemblyEditorInput getDisassemblyEditorInput( ICAddressBreakpoint breakpoint )
{
IDebugTarget[] targets = DebugPlugin.getDefault().getLaunchManager().getDebugTargets();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java
index 73a3c73c3a6..a0161ed3a6c 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java
@@ -65,8 +65,8 @@ public class CDebugImages
public static final String IMG_OBJS_DISASSEMBLY = NAME_PREFIX + "disassembly_obj.gif"; //$NON-NLS-1$
public static final String IMG_OBJS_PROJECT = NAME_PREFIX + "project_obj.gif"; //$NON-NLS-1$
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 + "sharedlibraryl_obj.gif"; //$NON-NLS-1$
- public static final String IMG_OBJS_SHARED_LIBRARY = NAME_PREFIX + "sharedlibraryu_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_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$
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/LoadSymbolsActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/LoadSymbolsActionDelegate.java
new file mode 100644
index 00000000000..8d2b056ff7a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/LoadSymbolsActionDelegate.java
@@ -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.ICSharedLibrary;
+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 17, 2003
+ */
+public class LoadSymbolsActionDelegate implements IObjectActionDelegate
+{
+ private ICSharedLibrary fLibrary = null;
+
+ /**
+ * Constructor for LoadSymbolsActionDelegate.
+ */
+ public LoadSymbolsActionDelegate()
+ {
+ }
+
+ /* (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 ( getSharedLibrary() != 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( getSharedLibrary() );
+ }
+ 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 ICSharedLibrary )
+ {
+ boolean enabled = enablesFor( (ICSharedLibrary)element );
+ action.setEnabled( enabled );
+ if ( enabled )
+ {
+ setSharedLibrary( (ICSharedLibrary)element );
+ return;
+ }
+ }
+ }
+ action.setEnabled( false );
+ setSharedLibrary( null );
+ }
+
+ protected void doAction( ICSharedLibrary library ) throws DebugException
+ {
+ library.loadSymbols();
+ }
+
+ private boolean enablesFor( ICSharedLibrary library )
+ {
+ return ( library != null && !library.areSymbolsLoaded() );
+ }
+
+ private void setSharedLibrary( ICSharedLibrary library )
+ {
+ fLibrary = library;
+ }
+
+ protected ICSharedLibrary getSharedLibrary()
+ {
+ return fLibrary;
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java
index f3a2ac57a59..cedd98a8431 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandler.java
@@ -77,9 +77,7 @@ public abstract class AbstractDebugEventHandler implements IDebugEventSetListene
{
if ( isAvailable() )
{
- final Object parent =
- (
- (ITreeContentProvider)getTreeViewer().getContentProvider()).getParent( element );
+ final Object parent = ((ITreeContentProvider)getTreeViewer().getContentProvider()).getParent( element );
// a parent can be null for a debug target or process that has not yet been associated
// with a launch
if ( parent != null )
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java
index f13982e0dbf..12ae6dcfe1f 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java
@@ -6,17 +6,13 @@
package org.eclipse.cdt.debug.internal.ui.views.sharedlibs;
import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
-import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
-import org.eclipse.cdt.debug.internal.core.CDebugUtils;
-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.AbstractDebugEventHandler;
-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.AbstractDebugView;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
@@ -25,16 +21,10 @@ import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
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.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPart;
@@ -44,58 +34,50 @@ import org.eclipse.ui.IWorkbenchPart;
*
* @since: Jan 16, 2003
*/
-public class SharedLibrariesView extends AbstractDebugEventHandlerView
+public class SharedLibrariesView extends AbstractDebugView
implements ISelectionListener,
IPropertyChangeListener,
IDebugExceptionHandler
{
/**
- * Enter type comment.
- *
- * @since: Jan 16, 2003
+ * Event handler for this view
*/
- public class SharedLibrariesViewLabelProvider 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 && element instanceof ICSharedLibrary )
- {
- if ( ((ICSharedLibrary)element).areSymbolsLoaded() )
- {
- return CDebugUIPlugin.getImageDescriptorRegistry().get( new CImageDescriptor( CDebugImages.DESC_OBJS_LOADED_SHARED_LIBRARY, 0 ) );
- }
- else
- {
- return CDebugUIPlugin.getImageDescriptorRegistry().get( new CImageDescriptor( CDebugImages.DESC_OBJS_SHARED_LIBRARY, 0 ) );
- }
- }
- return null;
- }
+ private SharedLibrariesViewEventHandler fEventHandler;
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(Object, int)
- */
- public String getColumnText( Object element, int columnIndex )
+ /**
+ * The model presentation used as the label provider for the tree viewer.
+ */
+ private IDebugModelPresentation fModelPresentation;
+
+ /**
+ * Sets the event handler for this view
+ *
+ * @param eventHandler event handler
+ */
+ protected void setEventHandler( SharedLibrariesViewEventHandler eventHandler )
+ {
+ fEventHandler = eventHandler;
+ }
+
+ /**
+ * Returns the event handler for this view
+ *
+ * @return The event handler for this view
+ */
+ protected SharedLibrariesViewEventHandler getEventHandler()
+ {
+ return fEventHandler;
+ }
+
+ /**
+ * @see IWorkbenchPart#dispose()
+ */
+ public void dispose()
+ {
+ super.dispose();
+ if ( getEventHandler() != null )
{
- if ( element instanceof ICSharedLibrary )
- {
- switch( columnIndex )
- {
- case 0:
- return ((ICSharedLibrary)element).getFileName();
- case 1:
- return CDebugUtils.toHexAddressString( ((ICSharedLibrary)element).getStartAddress() );
- case 2:
- return CDebugUtils.toHexAddressString( ((ICSharedLibrary)element).getEndAddress() );
- case 3:
- return ( ((ICSharedLibrary)element).areSymbolsLoaded() ) ? "Yes" : "No";
- }
- }
- return null;
+ getEventHandler().dispose();
}
}
@@ -105,25 +87,8 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView
protected Viewer createViewer( Composite parent )
{
TableViewer viewer = new TableViewer( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL );
-
- Table table = viewer.getTable();
- table.setHeaderVisible( true );
- table.setLinesVisible( 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].setText( "Name" );
- columns[1].setText( "Start Address" );
- columns[2].setText( "End Address" );
- columns[3].setText( "Symbols" );
-
viewer.setContentProvider( new SharedLibrariesViewContentProvider() );
- viewer.setLabelProvider( new SharedLibrariesViewLabelProvider() );
+ viewer.setLabelProvider( getModelPresentation() );
// listen to selection in debug view
getSite().getPage().addSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this );
@@ -235,8 +200,17 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView
* @param viewer the viewer associated with this view
* @return an event handler
*/
- protected AbstractDebugEventHandler createEventHandler( Viewer viewer )
+ protected SharedLibrariesViewEventHandler createEventHandler( Viewer viewer )
{
return new SharedLibrariesViewEventHandler( this );
}
+
+ protected IDebugModelPresentation getModelPresentation()
+ {
+ if ( fModelPresentation == null )
+ {
+ fModelPresentation = DebugUITools.newDebugModelPresentation();
+ }
+ return fModelPresentation;
+ }
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java
index 91fdc2b03ce..6cc564dc6f7 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java
@@ -6,24 +6,55 @@
package org.eclipse.cdt.debug.internal.ui.views.sharedlibs;
import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
-import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler;
import org.eclipse.debug.core.DebugEvent;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.IDebugEventSetListener;
import org.eclipse.debug.ui.AbstractDebugView;
+import org.eclipse.jface.viewers.TableViewer;
/**
* Enter type comment.
*
* @since: Jan 16, 2003
*/
-public class SharedLibrariesViewEventHandler extends AbstractDebugEventHandler
+public class SharedLibrariesViewEventHandler implements IDebugEventSetListener
{
+ /**
+ * This event handler's view
+ */
+ private AbstractDebugView fView;
+
/**
* Constructor for SharedLibrariesViewEventHandler.
* @param view
*/
public SharedLibrariesViewEventHandler( AbstractDebugView view )
{
- super( view );
+ setView( view );
+ DebugPlugin.getDefault().addDebugEventListener( this );
+ }
+
+ /**
+ * @see IDebugEventSetListener#handleDebugEvents(DebugEvent[])
+ */
+ public void handleDebugEvents( final DebugEvent[] events )
+ {
+ if ( !isAvailable() )
+ {
+ return;
+ }
+ Runnable r = new Runnable()
+ {
+ public void run()
+ {
+ if ( isAvailable() )
+ {
+ doHandleDebugEvents( events );
+ }
+ }
+ };
+
+ getView().asyncExec( r );
}
/* (non-Javadoc)
@@ -49,4 +80,80 @@ public class SharedLibrariesViewEventHandler extends AbstractDebugEventHandler
}
}
}
+
+ /**
+ * 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();
+ }
+ }
+
+ /**
+ * De-registers this event handler from the debug model.
+ */
+ public void dispose()
+ {
+ DebugPlugin plugin = DebugPlugin.getDefault();
+ plugin.removeDebugEventListener( this );
+ }
+
+ /**
+ * Returns the view this event handler is
+ * updating.
+ *
+ * @return debug view
+ */
+ protected AbstractDebugView getView()
+ {
+ return fView;
+ }
+
+ /**
+ * Sets the view this event handler is updating.
+ *
+ * @param view debug view
+ */
+ private void setView( AbstractDebugView view )
+ {
+ fView = view;
+ }
+
+ /**
+ * Returns the viewer this event handler is updating.
+ *
+ * @return viewer
+ */
+ protected TableViewer getTableViewer()
+ {
+ return (TableViewer)getView().getViewer();
+ }
+
+ /**
+ * Returns whether this event handler's viewer is
+ * currently available.
+ *
+ * @return whether this event handler's viewer is
+ * currently available
+ */
+ protected boolean isAvailable()
+ {
+ return getView().isAvailable();
+ }
}