diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index ff3060fb5c8..ec9359112a4 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,11 @@ +2003-02-07 Mikhail Khodjaiants + The viewer type of the 'Shared Libraries' view changed to 'TableTreeViewer'. + * CDTDebugModelPresentation.java + * AbstractDebugEventHandler.java + * SharedLibrariesView.java + * SharedLibrariesViewContentProvider.java + * SharedLibrariesViewEventHandler.java + 2003-02-07 Mikhail Khodjaiants The 'Resume Without Signal' action added to the 'Run' menu of the workbench window. * SignalZeroWorkbenchActionDelegate.java: new 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 9d03c4f4aa1..b34cdd34c37 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 @@ -505,12 +505,15 @@ public class CDTDebugModelPresentation extends LabelProvider IPath path = new Path( library.getFileName() ); if ( !path.isEmpty() ) label += ( qualified ? path.toOSString() : path.lastSegment() ); +/* String startAddress = ( library.getStartAddress() > 0 ) ? CDebugUtils.toHexAddressString( library.getStartAddress() ) : "Not available"; String endAddress = ( library.getEndAddress() > 0 ) ? CDebugUtils.toHexAddressString( library.getEndAddress() ) : "Not available"; return label + MessageFormat.format( " (Start address: ''{0}'' End address: ''{1}'')", new String[] { startAddress, endAddress } ); +*/ + return label; } /** 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 a8d77f729ee..e347041e394 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 @@ -13,6 +13,7 @@ import org.eclipse.debug.ui.AbstractDebugView; import org.eclipse.jface.viewers.IBasicPropertyConstants; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableTreeViewer; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; @@ -209,7 +210,7 @@ public abstract class AbstractDebugEventHandler implements IDebugEventSetListene * Returns this event handler's viewer as a table * viewer or null if none. * - * @return this event handler's viewer as a tree + * @return this event handler's viewer as a table * viewer or null if none */ protected TableViewer getTableViewer() @@ -221,6 +222,22 @@ public abstract class AbstractDebugEventHandler implements IDebugEventSetListene return null; } + /** + * Returns this event handler's viewer as a table tree + * viewer or null if none. + * + * @return this event handler's viewer as a table tree + * viewer or null if none + */ + protected TableTreeViewer getTableTreeViewer() + { + if ( getViewer() instanceof TableTreeViewer ) + { + return (TableTreeViewer)getViewer(); + } + return null; + } + /** * Returns whether this event handler's viewer is * currently available. 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 ab815e4d784..24d4594afee 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,14 +6,16 @@ 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.CDTDebugModelPresentation; import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; +import org.eclipse.cdt.debug.internal.ui.PixelConverter; 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.debug.core.DebugException; import org.eclipse.debug.core.model.IDebugElement; -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; @@ -22,10 +24,14 @@ 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.TreeViewer; +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.TableTreeViewer; 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.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPart; @@ -40,19 +46,79 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView IPropertyChangeListener, IDebugExceptionHandler { - /** - * The model presentation used as the label provider for the tree viewer. - */ - private IDebugModelPresentation fModelPresentation; + public class SharedLibrariesLabelProvider extends CDTDebugModelPresentation implements ITableLabelProvider + { + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int) + */ + public Image getColumnImage( Object element, int columnIndex ) + { + if ( element instanceof ICSharedLibrary && columnIndex == 1 ) + { + return getImage( element ); + } + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) + */ + public String getColumnText( Object element, int columnIndex ) + { + if ( element instanceof ICSharedLibrary ) + { + ICSharedLibrary library = (ICSharedLibrary)element; + switch( columnIndex ) + { + case 0: + return ""; + case 1: + return getText( element ); + case 2: + return ( library.getStartAddress() > 0 ) ? + CDebugUtils.toHexAddressString( library.getStartAddress() ) : ""; + case 3: + return ( library.getEndAddress() > 0 ) ? + CDebugUtils.toHexAddressString( library.getEndAddress() ) : ""; + } + } + return null; + } + } /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#createViewer(Composite) */ protected Viewer createViewer( Composite parent ) { - TreeViewer viewer = new TreeViewer( parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL ); + TableTreeViewer viewer = new TableTreeViewer( parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL ); + Table table = viewer.getTableTree().getTable(); + table.setLinesVisible( true ); + table.setHeaderVisible( true ); + + // 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[1].setResizable( true ); + columns[2].setResizable( true ); + columns[3].setResizable( true ); + + columns[0].setText( "" ); + columns[1].setText( "Name" ); + columns[2].setText( "Start Address" ); + columns[3].setText( "End Address" ); + + PixelConverter pc = new PixelConverter( parent ); + columns[0].setWidth( pc.convertWidthInCharsToPixels( 3 ) ); + columns[1].setWidth( pc.convertWidthInCharsToPixels( 50 ) ); + columns[2].setWidth( pc.convertWidthInCharsToPixels( 20 ) ); + columns[3].setWidth( pc.convertWidthInCharsToPixels( 20 ) ); + viewer.setContentProvider( new SharedLibrariesViewContentProvider() ); - viewer.setLabelProvider( getModelPresentation() ); + viewer.setLabelProvider( new SharedLibrariesLabelProvider() ); // listen to selection in debug view getSite().getPage().addSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); @@ -168,13 +234,4 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView { 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/SharedLibrariesViewContentProvider.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java index 29ae048a6fa..575f9c297b6 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java @@ -88,7 +88,7 @@ public class SharedLibrariesViewContentProvider implements ITreeContentProvider */ public boolean hasChildren( Object parent ) { - if ( parent != null && parent instanceof ICSharedLibraryManager ) + if ( parent instanceof ICSharedLibraryManager ) { return ( ((ICSharedLibraryManager)parent).getSharedLibraries().length > 0 ); } 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 d49ff52357e..8fc79c30841 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 @@ -50,4 +50,28 @@ public class SharedLibrariesViewEventHandler extends AbstractDebugEventHandler } } } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#refresh() + */ + public void refresh() + { + if ( isAvailable() ) + { + getView().showViewer(); + getTableTreeViewer().refresh(); + } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#refresh(java.lang.Object) + */ + protected void refresh( Object element ) + { + if ( isAvailable() ) + { + getView().showViewer(); + getTableTreeViewer().refresh( element ); + } + } }