diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index b7b83602b87..ca2c844351d 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,3 +1,16 @@
+2005-02-11 Mikhail Khodjaiants
+ Bug 82264: Enhance the Shared Libraries view.
+ Implementing module's properties.
+ * CDebugModelPresentation.java
+ * CDebugUIMessages.properties
+ * ModulesPropertiesActionDelegate.java: new
+ * CModuleProperties.java: new
+ * ModulePropertyPage.java: new
+ * ModulesMessages.properties
+ * ModulesView.java
+ * plugin.xml
+ * plugin.properties
+
2005-02-08 Mikhail Khodjaiants
Bug 82264: Enhance the Shared Libraries view.
Improved detail information.
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties
index be250691dcc..9b0dd6d235f 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties
@@ -117,9 +117,13 @@ DebuggingCContext.description=Debugging C/C++ Programs
CommonBreakpointPage.label=Common
FilteringBreakpointPage.label=Filtering
CommonSignalPage.label=Common
+CommonModulePage.label=Common
ModulesDetailPaneFontDefinition.label=Modules View Detail Pane Text Font
ModulesDetailPaneFontDefinition.description=The text font used in the detail pane of the Modules view.
CollapseAllModulesAction.label=Collapse All
CollapseAllModulesAction.tooltip=Collapse All
+
+ModulePropertiesAction.label=Module Properties...
+ModulePropertiesAction.tooltip=Open Module Properties Dialog
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index 1617ed64fef..c1799c377d8 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -729,6 +729,24 @@
menubarPath="additions"
id="org.eclipse.cdt.debug.internal.ui.actions.JumpToLineActionDelegate"/>
+
+
+
+
+
+
+
@@ -1006,6 +1024,11 @@
class="org.eclipse.cdt.debug.internal.ui.propertypages.SignalPropertyPage"
name="%CommonSignalPage.label"
id="org.eclipse.cdt.debug.ui.propertypages.signal.common"/>
+
+ viewId="org.eclipse.cdt.debug.ui.ModulesView"/>
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java
index 1388085de22..f3b7c93e0d4 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java
@@ -427,7 +427,6 @@ public class CDebugModelPresentation extends LabelProvider implements IDebugMode
else {
sb.append( CDebugUIMessages.getString( "CDebugModelPresentation.unknown_1" ) ); //$NON-NLS-1$
}
- sb.append( ( module.areSymbolsLoaded() ) ? CDebugUIMessages.getString( "CDebugModelPresentation.0" ) : CDebugUIMessages.getString( "CDebugModelPresentation.1" ) ); //$NON-NLS-1$ //$NON-NLS-2$
return sb.toString();
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties
index d7b5dbd8999..5d456d9843a 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIMessages.properties
@@ -10,8 +10,6 @@
###############################################################################
CDebugModelPresentation.unknown_1=unknown
-CDebugModelPresentation.0=\ (symbols loaded)
-CDebugModelPresentation.1=\ (symbols not loaded)
CDebugImageDescriptorRegistry.0=Allocating image for wrong display.
CDebugModelPresentation.not_available_1=
CDTDebugModelPresentation.0=
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ModulesPropertiesActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ModulesPropertiesActionDelegate.java
new file mode 100644
index 00000000000..86e0b57aa9b
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ModulesPropertiesActionDelegate.java
@@ -0,0 +1,91 @@
+/**********************************************************************
+ * Copyright (c) 2004 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ ***********************************************************************/
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.model.ICModule;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.actions.ActionDelegate;
+import org.eclipse.ui.dialogs.PropertyDialogAction;
+
+/**
+ * Module Properties action delegate.
+ */
+public class ModulesPropertiesActionDelegate extends ActionDelegate implements IObjectActionDelegate {
+
+ private ICModule fModule;
+
+ /**
+ * Constructor for ModulesPropertiesActionDelegate.
+ */
+ public ModulesPropertiesActionDelegate() {
+ super();
+ }
+
+ protected ICModule getModule() {
+ return fModule;
+ }
+
+ private void setModule( ICModule module ) {
+ fModule = module;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart( IAction action, IWorkbenchPart targetPart ) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run( IAction action ) {
+ PropertyDialogAction propertyAction = new PropertyDialogAction( CDebugUIPlugin.getActiveWorkbenchShell(), new ISelectionProvider() {
+
+ public void addSelectionChangedListener( ISelectionChangedListener listener ) {
+ }
+
+ public ISelection getSelection() {
+ return new StructuredSelection( getModule() );
+ }
+
+ public void removeSelectionChangedListener( ISelectionChangedListener listener ) {
+ }
+
+ public void setSelection( ISelection selection ) {
+ }
+ } );
+ propertyAction.run();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged( IAction action, ISelection selection ) {
+ if ( selection instanceof IStructuredSelection ) {
+ Object element = ((IStructuredSelection)selection).getFirstElement();
+ if ( element instanceof ICModule ) {
+ action.setEnabled( true );
+ setModule( (ICModule)element );
+ return;
+ }
+ }
+ action.setEnabled( false );
+ setModule( null );
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/CModuleProperties.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/CModuleProperties.java
new file mode 100644
index 00000000000..6b0ceea5f50
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/CModuleProperties.java
@@ -0,0 +1,55 @@
+/**********************************************************************
+ * Copyright (c) 2004 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ ***********************************************************************/
+package org.eclipse.cdt.debug.internal.ui.propertypages;
+
+import java.util.HashMap;
+import org.eclipse.cdt.debug.core.model.ICModule;
+
+/**
+ * A module's properties store.
+ */
+public class CModuleProperties {
+
+ final static public String TYPE = "type"; //$NON-NLS-1$
+ final static public String CPU = "cpu"; //$NON-NLS-1$
+ final static public String BASE_ADDRESS = "baseAddress"; //$NON-NLS-1$
+ final static public String SIZE = "size"; //$NON-NLS-1$
+ final static public String SYMBOLS_LOADED = "symbolsLoaded"; //$NON-NLS-1$
+ final static public String SYMBOLS_FILE = "symbolsFile"; //$NON-NLS-1$
+
+ private HashMap fMap;
+
+ static CModuleProperties create( ICModule module ) {
+ CModuleProperties p = new CModuleProperties();
+ p.setProperty( TYPE, new Integer( module.getType() ) );
+ p.setProperty( CPU, module.getCPU() );
+ p.setProperty( BASE_ADDRESS, module.getBaseAddress() );
+ p.setProperty( SIZE, new Long( module.getSize() ) );
+ p.setProperty( SYMBOLS_LOADED, new Boolean( module.areSymbolsLoaded() ) );
+ p.setProperty( SYMBOLS_FILE, module.getSymbolsFileName() );
+ return p;
+ }
+
+ /**
+ * Constructor for CModuleProperties.
+ */
+ private CModuleProperties() {
+ fMap = new HashMap( 5 );
+ }
+
+ private void setProperty( String key, Object value ) {
+ fMap.put( key, value );
+ }
+
+ public Object[] getProperties() {
+ return fMap.entrySet().toArray();
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/ModulePropertyPage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/ModulePropertyPage.java
new file mode 100644
index 00000000000..cb74bb2513e
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/ModulePropertyPage.java
@@ -0,0 +1,208 @@
+/**********************************************************************
+ * Copyright (c) 2004 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ ***********************************************************************/
+package org.eclipse.cdt.debug.internal.ui.propertypages;
+
+import java.util.Map;
+import org.eclipse.cdt.core.IAddress;
+import org.eclipse.cdt.debug.core.model.ICModule;
+import org.eclipse.cdt.debug.internal.ui.PixelConverter;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+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.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+/**
+ * The property page for a module.
+ */
+public class ModulePropertyPage extends PropertyPage {
+
+ public class ModulePropertyLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage( Object element, int columnIndex ) {
+ 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 Map.Entry ) {
+ Map.Entry entry = (Map.Entry)element;
+ if ( CModuleProperties.TYPE.equals( entry.getKey() ) ) {
+ if ( columnIndex == 0 ) {
+ return "Type";
+ }
+ else {
+ Integer type = (Integer)entry.getValue();
+ if ( type.intValue() == ICModule.EXECUTABLE ) {
+ return "executable";
+ }
+ if ( type.intValue() == ICModule.SHARED_LIBRARY ) {
+ return "shared library";
+ }
+ if ( type.intValue() == ICModule.CORE ) {
+ return "core file";
+ }
+ }
+ }
+ else if ( CModuleProperties.CPU.equals( entry.getKey() ) ) {
+ if ( columnIndex == 0 ) {
+ return "CPU";
+ }
+ String cpu = (String)entry.getValue();
+ return ( cpu != null ) ? cpu : "not available";
+ }
+ else if ( CModuleProperties.BASE_ADDRESS.equals( entry.getKey() ) ) {
+ if ( columnIndex == 0 ) {
+ return "Base address";
+ }
+ IAddress address = (IAddress)entry.getValue();
+ return ( address != null && !address.isZero() ) ? address.toHexAddressString() : "not available";
+ }
+ else if ( CModuleProperties.SIZE.equals( entry.getKey() ) ) {
+ if ( columnIndex == 0 ) {
+ return "Size";
+ }
+ Long size = (Long)entry.getValue();
+ return ( size != null && size.longValue() > 0 ) ? size.toString() : "not available";
+ }
+ else if ( CModuleProperties.SYMBOLS_LOADED.equals( entry.getKey() ) ) {
+ if ( columnIndex == 0 ) {
+ return "Symbols";
+ }
+ Boolean loaded = (Boolean)entry.getValue();
+ return ( loaded != null && loaded.booleanValue() ) ? "loaded" : "not loaded";
+ }
+ else if ( CModuleProperties.SYMBOLS_FILE.equals( entry.getKey() ) ) {
+ if ( columnIndex == 0 ) {
+ return "Symbols file";
+ }
+ IPath path = (IPath)entry.getValue();
+ return ( path != null ) ? path.toOSString() : "not found";
+ }
+ }
+ return null;
+ }
+ }
+
+ public class ModulePropertyContentProvider implements IStructuredContentProvider {
+
+ /**
+ * Constructor for ModulePropertyContentProvider.
+ */
+ public ModulePropertyContentProvider() {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements( Object inputElement ) {
+ if ( inputElement instanceof ICModule ) {
+ return CModuleProperties.create( (ICModule)inputElement ).getProperties();
+ }
+ 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(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) {
+ }
+ }
+
+ private TableViewer fViewer;
+
+ // Column properties
+ private static final String CP_NAME = "name"; //$NON-NLS-1$
+ private static final String CP_VALUE = "value"; //$NON-NLS-1$
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+ */
+ protected Control createContents( Composite parent ) {
+ noDefaultAndApplyButton();
+ Composite composite = new Composite( parent, SWT.NONE );
+ Font font = parent.getFont();
+ composite.setFont( font );
+ composite.setLayout( new GridLayout() );
+ composite.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+ fViewer = new TableViewer( composite, SWT.BORDER );
+ Table table = fViewer.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 );
+ TableColumn[] columns = table.getColumns();
+ columns[0].setResizable( true );
+ columns[1].setResizable( true );
+
+ PixelConverter pc = new PixelConverter( parent );
+ columns[0].setWidth( pc.convertWidthInCharsToPixels( 15 ) );
+ columns[1].setWidth( pc.convertWidthInCharsToPixels( 40 ) );
+
+ fViewer.setColumnProperties( new String[]{ CP_NAME, CP_VALUE } );
+
+ fViewer.setContentProvider( createContentProvider() );
+ fViewer.setLabelProvider( createLabelProvider() );
+
+ setValid( true );
+ return composite;
+ }
+
+ protected ICModule getModule() {
+ return (ICModule)getElement();
+ }
+
+ private ModulePropertyContentProvider createContentProvider() {
+ return new ModulePropertyContentProvider();
+ }
+
+ private ModulePropertyLabelProvider createLabelProvider() {
+ return new ModulePropertyLabelProvider();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl( Composite parent ) {
+ super.createControl( parent );
+ getViewer().setInput( getElement() );
+ }
+
+ private TableViewer getViewer() {
+ return fViewer;
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesMessages.properties
index 7afa1adbe0d..557abfa8986 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesMessages.properties
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesMessages.properties
@@ -1,6 +1,8 @@
ModulesView.0=Modules View Only
ModulesView.1=executable
ModulesView.10=Size:
+ModulesView.11=\ (symbols loaded)
+ModulesView.12=(symbols not loaded)
ModulesView.2=shared library
ModulesView.3=Type:
ModulesView.4=Symbols:
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesView.java
index fed283c8d99..981f3c8e03f 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesView.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesView.java
@@ -12,7 +12,6 @@ package org.eclipse.cdt.debug.internal.ui.views.modules;
import java.util.HashMap;
import org.eclipse.cdt.core.IAddress;
-import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.debug.core.model.ICDebugElement;
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
@@ -24,6 +23,7 @@ import org.eclipse.cdt.debug.internal.ui.actions.ToggleDetailPaneAction;
import org.eclipse.cdt.debug.internal.ui.preferences.ICDebugPreferenceConstants;
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.AbstractViewerState;
import org.eclipse.cdt.debug.internal.ui.views.DebugViewDecoratingLabelProvider;
import org.eclipse.cdt.debug.internal.ui.views.DebugViewInterimLabelProvider;
import org.eclipse.cdt.debug.internal.ui.views.DebugViewLabelDecorator;
@@ -32,9 +32,10 @@ import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.cdt.debug.internal.ui.views.AbstractViewerState;
+import org.eclipse.debug.core.model.IValue;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.debug.ui.IValueDetailListener;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -55,6 +56,7 @@ import org.eclipse.jface.util.ListenerList;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
@@ -72,11 +74,13 @@ import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.INullSelectionListener;
import org.eclipse.ui.ISelectionListener;
@@ -93,6 +97,90 @@ import org.eclipse.ui.texteditor.IUpdate;
*/
public class ModulesView extends AbstractDebugEventHandlerView implements IDebugExceptionHandler, IPropertyChangeListener, ISelectionListener, INullSelectionListener {
+
+ class ModulesViewModelPresentation implements IDebugModelPresentation {
+
+ private CDebugModelPresentation fDelegate;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.ui.IDebugModelPresentation#setAttribute(java.lang.String, java.lang.Object)
+ */
+ public void setAttribute( String attribute, Object value ) {
+ getModelPresentation().setAttribute( attribute, value );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage( Object element ) {
+ return getModelPresentation().getImage( element );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+ */
+ public String getText( Object element ) {
+ String text = getModelPresentation().getText( element );
+ if ( element instanceof ICModule ) {
+ ICModule module = (ICModule)element;
+ text += ( module.areSymbolsLoaded() ) ? ModulesMessages.getString( "ModulesView.11" ) : ModulesMessages.getString( "ModulesView.12" ); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ return text;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.ui.IDebugModelPresentation#computeDetail(org.eclipse.debug.core.model.IValue, org.eclipse.debug.ui.IValueDetailListener)
+ */
+ public void computeDetail( IValue value, IValueDetailListener listener ) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.ui.ISourcePresentation#getEditorInput(java.lang.Object)
+ */
+ public IEditorInput getEditorInput( Object element ) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.ui.ISourcePresentation#getEditorId(org.eclipse.ui.IEditorInput, java.lang.Object)
+ */
+ public String getEditorId( IEditorInput input, Object element ) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener( ILabelProviderListener listener ) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
+ */
+ public boolean isLabelProperty( Object element, String property ) {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener( ILabelProviderListener listener ) {
+ }
+
+ private CDebugModelPresentation getModelPresentation() {
+ if ( fDelegate == null ) {
+ fDelegate = CDebugModelPresentation.getDefault();
+ }
+ return fDelegate;
+ }
+ }
+
/**
* Internal interface for a cursor listener. I.e. aggregation
* of mouse and key listener.
@@ -424,7 +512,7 @@ public class ModulesView extends AbstractDebugEventHandlerView implements IDebug
protected IDebugModelPresentation getModelPresentation() {
if ( fModelPresentation == null ) {
- fModelPresentation = CDebugModelPresentation.getDefault();
+ fModelPresentation = new ModulesViewModelPresentation();
}
return fModelPresentation;
}
@@ -814,12 +902,14 @@ public class ModulesView extends AbstractDebugEventHandlerView implements IDebug
sb.append( module.getSymbolsFileName().toOSString() );
sb.append( '\n' );
}
- IBinary binary = (IBinary)module.getAdapter( IBinary.class );
- if ( binary != null ) {
+
+ String cpu = module.getCPU();
+ if ( cpu != null ) {
sb.append( ModulesMessages.getString( "ModulesView.8" ) ); //$NON-NLS-1$
- sb.append( binary.getCPU() );
+ sb.append( cpu );
sb.append( '\n' );
}
+
IAddress baseAddress = module.getBaseAddress();
if ( !baseAddress.isZero() ) {
sb.append( ModulesMessages.getString( "ModulesView.9" ) ); //$NON-NLS-1$