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 );
+ }
+ }
}