Implementing memory view.
Index:
ChangeLog =================================================================== RCS
file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v retrieving revision
1.20 diff -u -r1.20 ChangeLog --- ChangeLog 17 Oct 2002 23:17:01
-0000 1.20 +++ ChangeLog 18 Oct 2002 21:53:17 -0000 @@ -1,5 +1,9
@@ 2002-10-17 Mikhail Khodjaiants Implementing the
memory view support: + * CFormattedMemoryBlock.java: implementation of
the 'dispose' method added. + +2002-10-17 Mikhail
Khodjaiants + Implementing the memory view support: *
CDebugModel.java * ICMemoryManager.java *
IFormattedMemoryBlock.java Index:
src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java,v retrieving
revision 1.2 diff -u -r1.2 CFormattedMemoryBlock.java ---
src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java 17
Oct 2002 23:17:01 -0000 1.2 +++
src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java 18
Oct 2002 21:53:17 -0000 @@ -8,6 +8,7 @@ import
java.util.ArrayList; import java.util.List; +import
org.eclipse.cdt.debug.core.CDebugCorePlugin; import
org.eclipse.cdt.debug.core.IFormattedMemoryBlock; import
org.eclipse.cdt.debug.core.IFormattedMemoryBlockRow; import
org.eclipse.cdt.debug.core.cdi.CDIException; @@ -313,6 +314,18
@@ */ public void
dispose() { + if ( fCDIMemoryBlock != null
) + { + try + { + ((CDebugTarget)getDebugTarget()).getCDISession().getMemoryManager().removeBlock(
fCDIMemoryBlock ); + } + catch(
CDIException e
) + { + CDebugCorePlugin.log( e
); + } + fCDIMemoryBlock =
null; + } } /*
(non-Javadoc)
Index:
ChangeLog =================================================================== RCS
file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v retrieving revision
1.5 diff -u -r1.5 ChangeLog --- ChangeLog 17 Oct 2002 23:17:02
-0000 1.5 +++ ChangeLog 18 Oct 2002 22:01:52 -0000 @@ -1,3 +1,20
@@ +2002-10-18 Mikhail Khodjaiants + Implementing the memory view
support: + Images for the view's
actions: + autorefresh_mem.gif (clcl, dlcl,
elcl), + refresh_mem.gif (clcl, dlcl,
elcl), + memory_save.gif (clcl, dlcl,
elcl), + memory_clear.gif (clcl, dlcl, elcl). + *
RefreshMemoryAction.java + * MemoryControlArea.java + *
MemoryPresentation.java + * MemoryText.java + *
MemoryView.java + * MemoryViewer.java + *
CDebugImages.java + * ICDebugHelpContextIds.java + *
ICDebugUIConstants.java + 2002-10-17 Mikhail
Khodjaiants Implementing the memory view
support: * MemoryControlArea.java Index:
icons/full/clcl16/autorefresh_mem.gif =================================================================== RCS
file: icons/full/clcl16/autorefresh_mem.gif diff -N
icons/full/clcl16/autorefresh_mem.gif Binary files /dev/null and
autorefresh_mem.gif differ Index:
icons/full/clcl16/memory_clear.gif =================================================================== RCS
file: icons/full/clcl16/memory_clear.gif diff -N
icons/full/clcl16/memory_clear.gif Binary files /dev/null and
memory_clear.gif differ Index:
icons/full/clcl16/memory_update.gif =================================================================== RCS
file: icons/full/clcl16/memory_update.gif diff -N
icons/full/clcl16/memory_update.gif Binary files /dev/null and
memory_update.gif differ Index:
icons/full/clcl16/refresh_mem.gif =================================================================== RCS
file: icons/full/clcl16/refresh_mem.gif diff -N
icons/full/clcl16/refresh_mem.gif Binary files /dev/null and refresh_mem.gif
differ Index:
icons/full/dlcl16/autorefresh_mem.gif =================================================================== RCS
file: icons/full/dlcl16/autorefresh_mem.gif diff -N
icons/full/dlcl16/autorefresh_mem.gif Binary files /dev/null and
autorefresh_mem.gif differ Index:
icons/full/dlcl16/memory_clear.gif =================================================================== RCS
file: icons/full/dlcl16/memory_clear.gif diff -N
icons/full/dlcl16/memory_clear.gif Binary files /dev/null and
memory_clear.gif differ Index:
icons/full/dlcl16/memory_update.gif =================================================================== RCS
file: icons/full/dlcl16/memory_update.gif diff -N
icons/full/dlcl16/memory_update.gif Binary files /dev/null and
memory_update.gif differ Index:
icons/full/dlcl16/refresh_mem.gif =================================================================== RCS
file: icons/full/dlcl16/refresh_mem.gif diff -N
icons/full/dlcl16/refresh_mem.gif Binary files /dev/null and refresh_mem.gif
differ Index:
icons/full/elcl16/autorefresh_mem.gif =================================================================== RCS
file: icons/full/elcl16/autorefresh_mem.gif diff -N
icons/full/elcl16/autorefresh_mem.gif Binary files /dev/null and
autorefresh_mem.gif differ Index:
icons/full/elcl16/memory_clear.gif =================================================================== RCS
file: icons/full/elcl16/memory_clear.gif diff -N
icons/full/elcl16/memory_clear.gif Binary files /dev/null and
memory_clear.gif differ Index:
icons/full/elcl16/memory_update.gif =================================================================== RCS
file: icons/full/elcl16/memory_update.gif diff -N
icons/full/elcl16/memory_update.gif Binary files /dev/null and
memory_update.gif differ Index:
icons/full/elcl16/refresh_mem.gif =================================================================== RCS
file: icons/full/elcl16/refresh_mem.gif diff -N
icons/full/elcl16/refresh_mem.gif Binary files /dev/null and refresh_mem.gif
differ Index:
src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java,v retrieving
revision 1.6 diff -u -r1.6 CDebugImages.java ---
src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java 8 Oct 2002 22:03:22
-0000 1.6 +++
src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java 18 Oct 2002
22:01:52 -0000 @@ -64,6 +64,10 @@ public static
final String IMG_LCL_TYPE_NAMES = NAME_PREFIX + "tnames_co.gif"; file://$NON-NLS-1$ public static
final String IMG_LCL_CHANGE_REGISTER_VALUE = NAME_PREFIX +
"change_reg_value_co.gif"; file://$NON-NLS-1$ + public static final
String IMG_LCL_AUTO_REFRESH_MEMORY = NAME_PREFIX +
"autorefresh_mem.gif"; file://$NON-NLS-1$ + public static final
String IMG_LCL_REFRESH_MEMORY = NAME_PREFIX + "refresh_mem.gif"; file://$NON-NLS-1$ + public static final
String IMG_LCL_MEMORY_SAVE = NAME_PREFIX + "memory_save.gif"; file://$NON-NLS-1$ + public static final
String IMG_LCL_MEMORY_CLEAR = NAME_PREFIX + "memory_clear.gif"; file://$NON-NLS-1$ /*
* Set of predefined Image Descriptors. Index:
src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java,v retrieving
revision 1.3 diff -u -r1.3 ICDebugHelpContextIds.java ---
src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java 3 Oct 2002
22:51:52 -0000 1.3 +++
src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java 18 Oct
2002 22:01:52 -0000 @@ -25,6 +25,7 @@ //
Actions public static final String CHANGE_REGISTER_VALUE_ACTION =
PREFIX + "change_register_value_action_context"; file://$NON-NLS-1$ public static
final String SHOW_TYPES_ACTION = PREFIX + "show_types_action_context"; file://$NON-NLS-1$ + public static final
String REFRESH_MEMORY_ACTION = PREFIX + "refresh_memory_action_context"; file://$NON-NLS-1$ //
Views public static final String REGISTERS_VIEW = PREFIX +
"registers_view_context"; file://$NON-NLS-1$ Index:
src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java =================================================================== RCS
file:
src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java diff
-N src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java ---
/dev/null 1 Jan 1970 00:00:00 -0000 +++
src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java 18
Oct 2002 22:01:52 -0000 @@ -0,0 +1,41 @@ +/* + *(c) Copyright QNX
Software Systems Ltd. 2002. + * All Rights Reserved. + * +
*/ +package org.eclipse.cdt.debug.internal.ui.actions; + +import
org.eclipse.cdt.debug.internal.ui.CDebugImages; +import
org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; +import
org.eclipse.cdt.debug.internal.ui.views.memory.MemoryViewer; +import
org.eclipse.jface.viewers.IStructuredSelection; +import
org.eclipse.ui.actions.SelectionProviderAction; +import
org.eclipse.ui.help.WorkbenchHelp; + +/** + * Enter type comment. +
* + * @since: Oct 18, 2002 + */ +public class RefreshMemoryAction
extends SelectionProviderAction +{ + /** + * Constructor for
RefreshMemoryAction. + * @param provider + * @param
text + */ + public RefreshMemoryAction( MemoryViewer viewer
) + { + super( viewer, "Refresh Memory Block"
); + CDebugImages.setLocalImageDescriptors( this,
CDebugImages.IMG_LCL_REFRESH_MEMORY ); + WorkbenchHelp.setHelp(
this, ICDebugHelpContextIds.REFRESH_MEMORY_ACTION
); + } + + /* (non-Javadoc) + * @see
org.eclipse.ui.actions.SelectionProviderAction#selectionChanged(IStructuredSelection) +
*/ + public void selectionChanged( IStructuredSelection selection
) + { + super.selectionChanged( selection
); + } +} Index:
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java,v retrieving
revision 1.5 diff -u -r1.5 MemoryControlArea.java ---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java 17
Oct 2002 23:17:02 -0000 1.5 +++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java 18
Oct 2002 22:01:52 -0000 @@ -170,7 +170,7
@@ { setMemoryManager( ( input instanceof
ICMemoryManager ) ? (ICMemoryManager)input : null
); getPresentation().setMemoryBlock( getMemoryBlock()
); - setAddressTextState(); + setState(); refresh(); } @@
-245,6 +245,7
@@
getPaddingChar() )
); getPresentation().setMemoryBlock( getMemoryBlock()
); } + setMemoryTextState(); } private
void removeBlock() throws DebugException @@ -254,6 +255,7
@@ getMemoryManager().removeBlock( getIndex()
); getPresentation().setMemoryBlock( null
); } + setMemoryTextState(); } public
int getFormat() @@ -311,8 +313,19
@@ fAddressText.setEnabled( enable
); } - protected void
setAddressTextState() + protected void
setState() { enableAddressText(
getMemoryManager() != null
); + setMemoryTextState(); + } + + private
void setMemoryTextState() + { + fMemoryText.setEditable(
getMemoryManager() != null && getMemoryBlock() != null
); + } + + protected MemoryText
getMemoryText() + { + return
fMemoryText; } } Index:
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java,v retrieving
revision 1.2 diff -u -r1.2 MemoryPresentation.java ---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java 17
Oct 2002 23:17:02 -0000 1.2 +++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java 18
Oct 2002 22:01:52 -0000 @@ -6,9 +6,11 @@ package
org.eclipse.cdt.debug.internal.ui.views.memory; +import
java.util.Arrays; import java.util.LinkedList; import
java.util.List; +import
org.eclipse.cdt.debug.core.ICMemoryManager; import
org.eclipse.cdt.debug.core.IFormattedMemoryBlock; import
org.eclipse.cdt.debug.core.IFormattedMemoryBlockRow; import
org.eclipse.cdt.debug.internal.ui.CDebugUIUtils; @@ -64,14 +66,14
@@ { fAddressZones.clear(); IFormattedMemoryBlockRow[]
rows = ( getMemoryBlock() != null ) ? getMemoryBlock().getRows() : new
IFormattedMemoryBlockRow[0]; - String text = new
String(); + StringBuffer sb = new
StringBuffer(); for ( int i = 0; i < rows.length; ++i
) { - int offset =
text.length(); - text += getRowText( rows[i]
); + int offset =
sb.length(); + sb.append( getRowText( rows[i] )
); fAddressZones.add( new Point( offset, offset +
getAddressLength() ) ); } - return
text; + return
sb.toString(); } public int getItemSize(
int offset ) @@ -90,7 +92,11 @@ public boolean
isAcceptable( char ch, int offset ) { - return
true; + if ( isInAsciiArea( offset )
) + return true; + if ( isInDataArea( offset )
) + return isValidValue( ch ); + return
false; } public Point[]
getAddressZones() @@ -121,8 +127,7 @@ private String
getInterval( int length ) { char[] chars =
new char[length]; - for ( int i = 0; i < chars.length; ++i
) - chars[i] = ' '; + Arrays.fill( chars, ' '
); return new String( chars
); } @@ -133,13 +138,19
@@ private String getRowText( IFormattedMemoryBlockRow
row ) { - String result = getAddressString(
row.getAddress() ) + - getInterval(
INTERVAL_BETWEEN_ADDRESS_AND_DATA ); + StringBuffer result = new
StringBuffer( getRowLength() ); + result.append(
getAddressString( row.getAddress() ) ); + result.append(
getInterval( INTERVAL_BETWEEN_ADDRESS_AND_DATA )
); String[] items = row.getData(); for
( int i = 0; i < items.length; ++i ) - result += items[i]
+ getInterval( INTERVAL_BETWEEN_DATA_ITEMS ); - result +=
getInterval( INTERVAL_BETWEEN_DATA_AND_ASCII ) + row.getASCII() +
'\n'; - return
result; + { + result.append( items[i]
); + result.append( getInterval( INTERVAL_BETWEEN_DATA_ITEMS
) ); + } + result.append( getInterval(
INTERVAL_BETWEEN_DATA_AND_ASCII ) ); + result.append(
row.getASCII() ); + result.append( '\n' ); + return
result.toString(); } /* @@ -228,39
+239,126 @@ chars[i] =
ch; return String.valueOf( chars ).concat( item
); } -/* + private int
getRowLength() { return getAddressLength() +
INTERVAL_BETWEEN_ADDRESS_AND_DATA
+ - (getDataItemLength() +
INTERVAL_BETWEEN_DATA_ITEMS ) * getNumberOfDataItems() +
+ (getDataItemLength() +
INTERVAL_BETWEEN_DATA_ITEMS) * getNumberOfDataItems() +
( ( displayASCII() ) ?
INTERVAL_BETWEEN_DATA_AND_ASCII + -
getBytesPerRow() : 0 ) + 1; +
getDataBytesPerRow() : 0 ) +
1; } -*/ + private int
getAddressLength() { return
10; } -/* - private int
getDataItemLength() + + private boolean isInAddressZone( int
offset ) { - int result =
0; - switch( getFormat() ) + if ( getRowLength() !=
0 ) { - case
ICDebugUIInternalConstants.MEMORY_FORMAT_HEX: - result
= 2 * getSize(); - break; - case
ICDebugUIInternalConstants.MEMORY_FORMAT_BINARY: - result
= 8 * getSize(); - break; + int
pos = offset % getRowLength(); + return ( pos >= 0
&& pos < getAddressLength() );
} - return result; + return
false; + } + + private boolean isInAsciiArea( int offset
) + { + if ( displayASCII() && getRowLength() != 0
) + { + int pos = offset %
getRowLength(); + int asciiColumn = getAddressLength() +
+
INTERVAL_BETWEEN_ADDRESS_AND_DATA + +
(getDataItemLength() +
INTERVAL_BETWEEN_DATA_ITEMS ) * getNumberOfDataItems() +
+
INTERVAL_BETWEEN_DATA_AND_ASCII; + return ( pos >=
asciiColumn && pos < getRowLength() - 1 );
+ } + return
false; + } + + private boolean isInDataArea( int offset
) + { + if ( getRowLength() != 0
) + { + int pos = offset %
getRowLength(); + int dataBegin = getAddressLength() +
INTERVAL_BETWEEN_ADDRESS_AND_DATA; + int dataEnd = dataBegin
+ ((getDataItemLength() + INTERVAL_BETWEEN_DATA_ITEMS ) *
getNumberOfDataItems()); + if ( pos >= dataBegin
&& pos < dataEnd ) + return isInDataItem(
pos - dataBegin ); + } + return
false; + } + + private boolean isInDataItem( int pos
) + { + for ( int i = 0; i < getNumberOfDataItems();
++i ) + { + if ( pos < i *
(getDataItemLength() + INTERVAL_BETWEEN_DATA_ITEMS)
) + return false; + if ( pos >=
i * (getDataItemLength() + INTERVAL_BETWEEN_DATA_ITEMS)
&& + pos < (i * (getDataItemLength() +
INTERVAL_BETWEEN_DATA_ITEMS)) + getDataItemLength()
) + return
true; + } + return
false; + } + + private int
getDataItemLength() + { + if ( getMemoryBlock() != null
) + return getMemoryBlock().getWordSize() *
2; + return
0; } private int
getNumberOfDataItems() { - return getBytesPerRow()
/ getSize(); + if ( getMemoryBlock() != null
) + return
getMemoryBlock().getNumberOfColumns(); + return
0; + } + + private boolean
displayASCII() + { + if ( getMemoryBlock() != null
) + return
getMemoryBlock().displayASCII(); + return
false; + } + + private int
getDataBytesPerRow() + { + if ( getMemoryBlock() != null
) + return getMemoryBlock().getNumberOfColumns() *
getMemoryBlock().getWordSize(); + return
0; + } + + private boolean isValidValue( char ch
) + { + switch( getDataFormat()
) + { + case
ICMemoryManager.MEMORY_FORMAT_HEX: + return
isHexadecimal( ch ); + case
ICMemoryManager.MEMORY_FORMAT_BINARY: + case
ICMemoryManager.MEMORY_FORMAT_OCTAL: + case
ICMemoryManager.MEMORY_FORMAT_SIGNED_DECIMAL: + case
ICMemoryManager.MEMORY_FORMAT_UNSIGNED_DECIMAL: + case
-1: + default: + return
false; + } + } + + private boolean
isHexadecimal( char ch ) + { + return ( Character.isDigit(
ch ) || + ( ch >= 'a' && ch <= 'f' )
|| + ( ch >= 'A' && ch <= 'F' )
); + } + + private int
getDataFormat() + { + if ( getMemoryBlock() != null
) + return
getMemoryBlock().getFormat(); + return
-1; } -*/ } Index:
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryText.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryText.java,v retrieving
revision 1.3 diff -u -r1.3 MemoryText.java ---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryText.java 8 Oct
2002 20:35:59 -0000 1.3 +++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryText.java 18 Oct
2002 22:01:52 -0000 @@ -26,6 +26,7 @@ import
org.eclipse.swt.graphics.Point; import
org.eclipse.swt.layout.GridData; import
org.eclipse.swt.widgets.Composite; +import
org.eclipse.swt.widgets.Control; /** * @@
-142,8 +143,19 @@ if ( event.character == SWT.LF
|| event.character == SWT.CR ||
event.character == SWT.BS || -
event.character == SWT.DEL || -
!fPresentation.isAcceptable( event.character, fText.getCaretOffset() )
) + event.character == SWT.DEL
) + { + event.doit =
false; + return; + } + if (
Character.isISOControl( event.character )
) + return; + if ( getSelectionCount() != 0
) + { + event.doit =
false; + return; + } + if (
!fPresentation.isAcceptable( event.character, fText.getCaretOffset() )
) event.doit =
false; } @@ -230,5 +242,20
@@
getDirtyColor(),
getBackgroundColor() ) ); fText.setStyleRanges(
(StyleRange[])list.toArray( new StyleRange[list.size()] )
); + } + + protected void setEditable( boolean editable
) + { + fText.setEditable( editable
); + } + + protected int
getSelectionCount() + { + return
fText.getSelectionCount(); + } + + protected Control
getControl() + { + return
fText; } } Index:
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java,v retrieving
revision 1.4 diff -u -r1.4 MemoryView.java ---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java 17 Oct
2002 23:17:02 -0000 1.4 +++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java 18 Oct
2002 22:01:52 -0000 @@ -7,14 +7,17 @@ import
org.eclipse.cdt.debug.core.ICMemoryManager; import
org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; +import
org.eclipse.cdt.debug.internal.ui.actions.RefreshMemoryAction; 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.cdt.debug.ui.ICDebugUIConstants; import
org.eclipse.debug.core.DebugException; import
org.eclipse.debug.core.model.IDebugElement; import
org.eclipse.debug.ui.IDebugModelPresentation; import
org.eclipse.debug.ui.IDebugUIConstants; +import
org.eclipse.jface.action.IAction; import
org.eclipse.jface.action.IMenuManager; import
org.eclipse.jface.action.IToolBarManager; import
org.eclipse.jface.action.Separator; @@ -25,6 +28,7 @@ import
org.eclipse.jface.viewers.IStructuredSelection; import
org.eclipse.jface.viewers.Viewer; import
org.eclipse.swt.widgets.Composite; +import
org.eclipse.swt.widgets.Control; import
org.eclipse.ui.ISelectionListener; import
org.eclipse.ui.IWorkbenchActionConstants; import
org.eclipse.ui.IWorkbenchPart; @@ -64,6 +68,10 @@
*/ protected void
createActions() { + IAction action = ""
RefreshMemoryAction( (MemoryViewer)getViewer()
); + action.setEnabled( false ); + setAction(
"RefreshMemory", action ); file://$NON-NLS-1$ + //
set initial content here, as viewer has to be
set setInitialContent(); } @@ -81,6
+89,10 @@ */ protected void fillContextMenu(
IMenuManager menu ) { + menu.add( new Separator(
ICDebugUIConstants.EMPTY_MEMORY_GROUP ) ); + menu.add( new
Separator( ICDebugUIConstants.MEMORY_GROUP ) ); + menu.add(
getAction( "RefreshMemory" ) ); file://$NON-NLS-1$ + menu.add(
new Separator( IWorkbenchActionConstants.MB_ADDITIONS )
); } @@ -89,6 +101,9 @@
*/ protected void configureToolBar( IToolBarManager tbm
) { + tbm.add( new Separator(
this.getClass().getName() ) ); + tbm.add( new Separator(
ICDebugUIConstants.MEMORY_GROUP ) ); + tbm.add( getAction(
"RefreshMemory" ) ); file://$NON-NLS-1$ } /*
(non-Javadoc) @@ -191,5 +206,13
@@ { setViewerInput( null
); } + } + + /* (non-Javadoc) +
* @see
org.eclipse.debug.ui.AbstractDebugView#createContextMenu(Control) +
*/ + protected void createContextMenu( Control menuControl
) + { + super.createContextMenu(
((MemoryControlArea)((MemoryViewer)getViewer()).getTabFolder().getSelection().getControl()).getMemoryText().getControl()
); } } Index:
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java,v retrieving
revision 1.3 diff -u -r1.3 MemoryViewer.java ---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java 17 Oct
2002 23:17:02 -0000 1.3 +++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java 18 Oct
2002 22:01:52 -0000 @@ -12,6 +12,8 @@ import
org.eclipse.swt.SWT; import
org.eclipse.swt.custom.CTabFolder; import
org.eclipse.swt.custom.CTabItem; +import
org.eclipse.swt.events.SelectionEvent; +import
org.eclipse.swt.events.SelectionListener; import
org.eclipse.swt.layout.GridData; import
org.eclipse.swt.layout.GridLayout; import
org.eclipse.swt.widgets.Composite; @@ -63,6 +65,16
@@ fMemoryControlAreas[i] = new
MemoryControlArea( fTabFolder, SWT.NONE, i
); tabItem.setControl( fMemoryControlAreas[i]
); } + fTabFolder.addSelectionListener(
new SelectionListener() +
{ + public
void widgetSelected( SelectionEvent e
) + { + } + + public
void widgetDefaultSelected( SelectionEvent e
) + { + } +
}
); fTabFolder.setSelection( 0
); } return
fControl; @@ -86,7 +98,7 @@ /* (non-Javadoc) *
@see org.eclipse.jface.viewers.Viewer#setSelection(ISelection,
boolean) */ - public void setSelection(ISelection
selection, boolean reveal) + public void setSelection( ISelection
selection, boolean reveal ) { } @@
-102,5 +114,10 @@ { for ( int i = 0; i <
fMemoryControlAreas.length; ++i
) fMemoryControlAreas[i].setInput(
(ICMemoryManager)input ); + } + + protected CTabFolder
getTabFolder() + { + return
fTabFolder; } } Index:
src/org/eclipse/cdt/debug/ui/ICDebugUIConstants.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/ICDebugUIConstants.java,v retrieving
revision 1.4 diff -u -r1.4 ICDebugUIConstants.java ---
src/org/eclipse/cdt/debug/ui/ICDebugUIConstants.java 16 Sep 2002 21:32:14
-0000 1.4 +++
src/org/eclipse/cdt/debug/ui/ICDebugUIConstants.java 18 Oct 2002 22:01:52
-0000 @@ -48,4 +48,15 @@ * Identifier for a register group in
a menu (value <code>"registerGroup"</code>).
*/ public static final String REGISTER_GROUP = "registerGroup";
file://$NON-NLS-1$ + + /**
+ * Identifier for an empty group preceeding a + * memory
group in a menu (value <code>"emptyMemoryGroup"</code>). +
*/ + public static final String EMPTY_MEMORY_GROUP = "emptyMemoryGroup";
file://$NON-NLS-1$ + + /** +
* Identifier for a memory group in a menu (value
<code>"memoryGroup"</code>). + */ + public static
final String MEMORY_GROUP = "memoryGroup"; file://$NON-NLS-1$ }
|