1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-31 12:55:40 +02:00

Bug 82264: Enhance the Shared Libraries view. Replaced the table viewer by text widgets.

This commit is contained in:
Mikhail Khodjaiants 2005-02-17 00:09:09 +00:00
parent 3dd649612e
commit 226ace7ccc
3 changed files with 157 additions and 237 deletions

View file

@ -1,3 +1,9 @@
2005-02-16 Mikhail Khodjaiants
Bug 82264: Enhance the Shared Libraries view.
Replaced the table viewer by text widgets.
* PropertyPageMessages.properties
* ModulePropertyPage.java
2005-02-16 Mikhail Khodjaiants 2005-02-16 Mikhail Khodjaiants
Bug 82264: Enhance the Shared Libraries view. Bug 82264: Enhance the Shared Libraries view.
The symbols file name isn't shown in the detail pane if module's The symbols file name isn't shown in the detail pane if module's

View file

@ -15,7 +15,6 @@ import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.CDebugUtils; import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.model.ICModule; import org.eclipse.cdt.debug.core.model.ICModule;
import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants; import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
import org.eclipse.cdt.debug.internal.ui.PixelConverter;
import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.MultiStatus;
@ -23,25 +22,18 @@ import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.DialogCellEditor;
import org.eclipse.jface.viewers.ICellModifier;
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.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.dialogs.PropertyPage; import org.eclipse.ui.dialogs.PropertyPage;
/** /**
@ -49,130 +41,16 @@ import org.eclipse.ui.dialogs.PropertyPage;
*/ */
public class ModulePropertyPage extends PropertyPage { public class ModulePropertyPage extends PropertyPage {
public class ModulePropertyLabelProvider extends LabelProvider implements ITableLabelProvider { private Label fTypeField;
private Label fCPUField;
/* (non-Javadoc) private Label fBaseAddressField;
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int) private Label fSizeField;
*/ private Label fSymbolsField;
public Image getColumnImage( Object element, int columnIndex ) { protected Text fSymbolsFileField;
return null; protected Button fBrowseButton;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
public String getColumnText( Object element, int columnIndex ) {
if ( element instanceof ModuleProperties.Property ) {
ModuleProperties.Property property = (ModuleProperties.Property)element;
if ( ModuleProperties.TYPE.equals( property.getKey() ) ) {
if ( columnIndex == 0 ) {
return PropertyPageMessages.getString( "ModulePropertyPage.0" ); //$NON-NLS-1$
}
Integer type = (Integer)property.getValue();
if ( type.intValue() == ICModule.EXECUTABLE ) {
return PropertyPageMessages.getString( "ModulePropertyPage.1" ); //$NON-NLS-1$
}
if ( type.intValue() == ICModule.SHARED_LIBRARY ) {
return PropertyPageMessages.getString( "ModulePropertyPage.2" ); //$NON-NLS-1$
}
if ( type.intValue() == ICModule.CORE ) {
return PropertyPageMessages.getString( "ModulePropertyPage.3" ); //$NON-NLS-1$
}
}
else if ( ModuleProperties.CPU.equals( property.getKey() ) ) {
if ( columnIndex == 0 ) {
return PropertyPageMessages.getString( "ModulePropertyPage.4" ); //$NON-NLS-1$
}
String cpu = (String)property.getValue();
return ( cpu != null ) ? cpu : PropertyPageMessages.getString( "ModulePropertyPage.5" ); //$NON-NLS-1$
}
else if ( ModuleProperties.BASE_ADDRESS.equals( property.getKey() ) ) {
if ( columnIndex == 0 ) {
return PropertyPageMessages.getString( "ModulePropertyPage.6" ); //$NON-NLS-1$
}
IAddress address = (IAddress)property.getValue();
return ( address != null && !address.isZero() ) ? address.toHexAddressString() : PropertyPageMessages.getString( "ModulePropertyPage.7" ); //$NON-NLS-1$
}
else if ( ModuleProperties.SIZE.equals( property.getKey() ) ) {
if ( columnIndex == 0 ) {
return PropertyPageMessages.getString( "ModulePropertyPage.8" ); //$NON-NLS-1$
}
Long size = (Long)property.getValue();
return ( size != null && size.longValue() > 0 ) ? size.toString() : PropertyPageMessages.getString( "ModulePropertyPage.9" ); //$NON-NLS-1$
}
else if ( ModuleProperties.SYMBOLS_LOADED.equals( property.getKey() ) ) {
if ( columnIndex == 0 ) {
return PropertyPageMessages.getString( "ModulePropertyPage.10" ); //$NON-NLS-1$
}
Boolean loaded = (Boolean)property.getValue();
return ( loaded != null && loaded.booleanValue() ) ? PropertyPageMessages.getString( "ModulePropertyPage.11" ) : PropertyPageMessages.getString( "ModulePropertyPage.12" ); //$NON-NLS-1$ //$NON-NLS-2$
}
else if ( ModuleProperties.SYMBOLS_FILE.equals( property.getKey() ) ) {
if ( columnIndex == 0 ) {
return PropertyPageMessages.getString( "ModulePropertyPage.13" ); //$NON-NLS-1$
}
IPath path = (IPath)property.getValue();
return ( path != null ) ? path.toOSString() : PropertyPageMessages.getString( "ModulePropertyPage.14" ); //$NON-NLS-1$
}
}
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 ) {
if ( getModuleProperties() == null ) {
setModuleProperties( ModuleProperties.create( (ICModule)inputElement ) );
}
return getModuleProperties().getProperties();
}
return new Object[0];
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
disposeProperties();
}
/* (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 ) {
if ( oldInput != null && oldInput.equals( newInput ) )
return;
disposeProperties();
}
private void disposeProperties() {
if ( getModuleProperties() != null ) {
getModuleProperties().dispose();
setModuleProperties( null );
}
}
}
private ModuleProperties fProperties = null; private ModuleProperties fProperties = null;
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) /* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/ */
@ -181,31 +59,13 @@ public class ModulePropertyPage extends PropertyPage {
Composite composite = new Composite( parent, SWT.NONE ); Composite composite = new Composite( parent, SWT.NONE );
Font font = parent.getFont(); Font font = parent.getFont();
composite.setFont( font ); composite.setFont( font );
composite.setLayout( new GridLayout() ); GridLayout topLayout = new GridLayout();
topLayout.numColumns = 2;
composite.setLayout( topLayout );
composite.setLayoutData( new GridData( GridData.FILL_BOTH ) ); composite.setLayoutData( new GridData( GridData.FILL_BOTH ) );
fViewer = new TableViewer( composite, SWT.BORDER );
Table table = fViewer.getTable(); createFields( composite );
table.setLinesVisible( true ); initializeFields();
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.setCellEditors( new CellEditor[]{ null, createSymbolsFileCellEditor( table ) } );
fViewer.setCellModifier( createCellModifier() );
fViewer.setContentProvider( createContentProvider() );
fViewer.setLabelProvider( createLabelProvider() );
setValid( true ); setValid( true );
return composite; return composite;
@ -215,22 +75,6 @@ public class ModulePropertyPage extends PropertyPage {
return (ICModule)getElement(); 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() );
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.jface.preference.IPreferencePage#performOk() * @see org.eclipse.jface.preference.IPreferencePage#performOk()
*/ */
@ -256,70 +100,138 @@ public class ModulePropertyPage extends PropertyPage {
return super.performOk(); return super.performOk();
} }
protected TableViewer getViewer() {
return fViewer;
}
private ICellModifier createCellModifier() {
return new ICellModifier() {
public boolean canModify( Object element, String property ) {
return ( element instanceof ModuleProperties.Property &&
ModuleProperties.SYMBOLS_FILE.equals( ((ModuleProperties.Property)element).getKey() ) &&
CP_VALUE.equals( property ) &&
getModule().canModifySymbolsSource() );
}
public void modify( Object element, String property, Object value ) {
ModuleProperties.Property mp = (ModuleProperties.Property)((TableItem)element).getData();
if ( ModuleProperties.SYMBOLS_FILE.equals( mp.getKey() ) &&
CP_VALUE.equals( property ) &&
getModule().canModifySymbolsSource() &&
value instanceof IPath ) {
getModuleProperties().setProperty( mp.getKey(), value );
if ( getModuleProperties().isDirty() ) {
getViewer().refresh();
}
}
}
public Object getValue( Object element, String property ) {
if ( element instanceof ModuleProperties.Property &&
ModuleProperties.SYMBOLS_FILE.equals( ((ModuleProperties.Property)element).getKey() ) &&
CP_VALUE.equals( property ) &&
getModule().canModifySymbolsSource() ) {
return ((ModuleProperties.Property)element).getValue();
}
return null;
}
};
}
private CellEditor createSymbolsFileCellEditor( Table table ) {
return new DialogCellEditor( table ) {
protected Object openDialogBox( Control cellEditorWindow ) {
FileDialog dialog = new FileDialog( cellEditorWindow.getShell() );
dialog.setFileName( ((IPath)getModuleProperties().getProperty( ModuleProperties.SYMBOLS_FILE )).toOSString() );
String fn = dialog.open();
return ( fn != null ) ? new Path( dialog.getFilterPath() ).append( dialog.getFileName() ) : getModule().getSymbolsFileName();
}
};
}
protected ModuleProperties getModuleProperties() { protected ModuleProperties getModuleProperties() {
if ( fProperties == null ) {
fProperties = ModuleProperties.create( getModule() );
}
return fProperties; return fProperties;
} }
protected void setModuleProperties( ModuleProperties properties ) {
fProperties = properties;
}
protected void failed( String message, Throwable e ) { protected void failed( String message, Throwable e ) {
MultiStatus ms = new MultiStatus( CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, message, null ); MultiStatus ms = new MultiStatus( CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, message, null );
ms.add( new Status( IStatus.ERROR, CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, e.getMessage(), null ) ); ms.add( new Status( IStatus.ERROR, CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, e.getMessage(), null ) );
CDebugUtils.error( ms, getModule() ); CDebugUtils.error( ms, getModule() );
} }
private void createFields( Composite parent ) {
fTypeField = createField( parent, PropertyPageMessages.getString( "ModulePropertyPage.0" ) ); //$NON-NLS-1$
fCPUField = createField( parent, PropertyPageMessages.getString( "ModulePropertyPage.4" ) ); //$NON-NLS-1$
fBaseAddressField = createField( parent, PropertyPageMessages.getString( "ModulePropertyPage.6" ) ); //$NON-NLS-1$
fSizeField = createField( parent, PropertyPageMessages.getString( "ModulePropertyPage.8" ) ); //$NON-NLS-1$
fSymbolsField = createField( parent, PropertyPageMessages.getString( "ModulePropertyPage.10" ) ); //$NON-NLS-1$
createSymbolsFileField( parent );
}
private Label createField( Composite parent, String label ) {
Font font = parent.getFont();
Label l = new Label( parent, SWT.LEFT );
l.setText( label );
GridData gd = new GridData( GridData.HORIZONTAL_ALIGN_FILL );
l.setLayoutData( gd );
l.setFont( font );
Label v = new Label( parent, SWT.LEFT );
gd = new GridData( GridData.HORIZONTAL_ALIGN_FILL );
v.setLayoutData( gd );
v.setFont( font );
return v;
}
private void createSymbolsFileField( Composite parent ) {
Font font = parent.getFont();
// Separator
Label l = new Label( parent, SWT.LEFT );
GridData gd = new GridData( GridData.FILL_HORIZONTAL );
gd.horizontalSpan = 2;
l.setLayoutData( gd );
l = new Label( parent, SWT.LEFT );
l.setText( PropertyPageMessages.getString( "ModulePropertyPage.13" ) ); //$NON-NLS-1$
gd = new GridData( GridData.FILL_HORIZONTAL );
gd.horizontalSpan = 2;
l.setLayoutData( gd );
l.setFont( font );
Composite composite = new Composite( parent, SWT.NONE );
composite.setFont( font );
GridLayout layout = new GridLayout();
layout.numColumns = 5;
composite.setLayout( layout );
gd = new GridData( GridData.FILL_BOTH );
gd.horizontalSpan = 2;
composite.setLayoutData( gd );
// Text
fSymbolsFileField = new Text( composite, SWT.SINGLE | SWT.BORDER );
gd = new GridData( GridData.FILL_HORIZONTAL );
gd.horizontalSpan = 4;
fSymbolsFileField.setLayoutData( gd );
fBrowseButton = new Button( composite, SWT.PUSH );
fBrowseButton.setText( PropertyPageMessages.getString( "ModulePropertyPage.3" ) ); //$NON-NLS-1$
fBrowseButton.addSelectionListener(
new SelectionListener() {
public void widgetSelected( SelectionEvent e ) {
FileDialog dialog = new FileDialog( fBrowseButton.getShell() );
dialog.setFileName( ((IPath)getModuleProperties().getProperty( ModuleProperties.SYMBOLS_FILE )).toOSString() );
String fn = dialog.open();
if ( fn != null ) {
IPath path = new Path( fn );
fSymbolsFileField.setText( path.toOSString() );
getModuleProperties().setProperty( ModuleProperties.SYMBOLS_FILE, path );
}
}
public void widgetDefaultSelected( SelectionEvent e ) {
}
} );
}
private void initializeFields() {
// Type
Integer type = (Integer)getModuleProperties().getProperty( ModuleProperties.TYPE );
String value = PropertyPageMessages.getString( "ModulePropertyPage.16" ); //$NON-NLS-1$
if ( type.intValue() == ICModule.EXECUTABLE ) {
value = PropertyPageMessages.getString( "ModulePropertyPage.1" ); //$NON-NLS-1$
}
if ( type.intValue() == ICModule.SHARED_LIBRARY ) {
value = PropertyPageMessages.getString( "ModulePropertyPage.2" ); //$NON-NLS-1$
}
fTypeField.setText( value );
// CPU
String cpu = (String)getModuleProperties().getProperty( ModuleProperties.CPU );
value = ( cpu != null ) ? cpu : PropertyPageMessages.getString( "ModulePropertyPage.5" ); //$NON-NLS-1$
fCPUField.setText( value );
// Base address
IAddress address = (IAddress)getModuleProperties().getProperty( ModuleProperties.BASE_ADDRESS );
value = ( address != null && !address.isZero() ) ? address.toHexAddressString() : PropertyPageMessages.getString( "ModulePropertyPage.7" ); //$NON-NLS-1$
fBaseAddressField.setText( value );
// Size
Long size = (Long)getModuleProperties().getProperty( ModuleProperties.SIZE );
value = ( size != null && size.longValue() > 0 ) ? size.toString() : PropertyPageMessages.getString( "ModulePropertyPage.9" ); //$NON-NLS-1$
fSizeField.setText( value );
// Symbols flag
Boolean loaded = (Boolean)getModuleProperties().getProperty( ModuleProperties.SYMBOLS_LOADED );
value = ( loaded != null && loaded.booleanValue() ) ? PropertyPageMessages.getString( "ModulePropertyPage.11" ) : PropertyPageMessages.getString( "ModulePropertyPage.12" ); //$NON-NLS-1$ //$NON-NLS-2$
fSymbolsField.setText( value );
// Symbols file:
IPath path = (IPath)getModuleProperties().getProperty( ModuleProperties.SYMBOLS_FILE );
value = ( path != null ) ? path.toOSString() : PropertyPageMessages.getString( "ModulePropertyPage.14" ); //$NON-NLS-1$
fSymbolsFileField.setText( value );
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.IDialogPage#dispose()
*/
public void dispose() {
if ( getModuleProperties() != null ) {
getModuleProperties().dispose();
}
super.dispose();
}
} }

View file

@ -36,21 +36,23 @@ SignalPropertyPage.2=Suspend the program when this signal happens.
SignalPropertyPage.3=Error SignalPropertyPage.3=Error
SignalPropertyPage.4=Operation failed. SignalPropertyPage.4=Operation failed.
SignalPropertyPage.5=Unable to change signal properties. SignalPropertyPage.5=Unable to change signal properties.
ModulePropertyPage.0=Type ModulePropertyPage.0=Type:
ModulePropertyPage.1=executable ModulePropertyPage.1=executable
ModulePropertyPage.2=shared library ModulePropertyPage.2=shared library
ModulePropertyPage.3=core file ModulePropertyPage.3=core file
ModulePropertyPage.4=CPU ModulePropertyPage.3=Browse...
ModulePropertyPage.4=CPU:
ModulePropertyPage.5=not available ModulePropertyPage.5=not available
ModulePropertyPage.6=Base address ModulePropertyPage.6=Base address:
ModulePropertyPage.7=not available ModulePropertyPage.7=not available
ModulePropertyPage.8=Size ModulePropertyPage.8=Size:
ModulePropertyPage.9=not available ModulePropertyPage.9=not available
ModulePropertyPage.10=Symbols ModulePropertyPage.10=Symbols:
ModulePropertyPage.11=loaded ModulePropertyPage.11=loaded
ModulePropertyPage.12=not loaded ModulePropertyPage.12=not loaded
ModulePropertyPage.13=Symbols file ModulePropertyPage.13=Symbols file:
ModulePropertyPage.14=not found ModulePropertyPage.14=not found
ModulePropertyPage.15=Error ModulePropertyPage.15=Error
ModulePropertyPage.15=Unable to load symbols. ModulePropertyPage.15=Unable to load symbols.
ModulePropertyPage.16=Unable to load symbols. ModulePropertyPage.16=Unable to load symbols.
ModulePropertyPage.16=not available