diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 18f14aa7cd1..d1632b4c9b2 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,9 @@ +2002-10-24 Mikhail Khodjaiants + Implementation of the 'Number Of Columns' action. + * MemoryNumberOfColumnAction.java: the action class + * MemoryViewer.java: support of the action + * MemoryView.java: support of the action + 2002-10-25 Mikhail Khodjaiants Replaced the usage of 'setWordSize' method by the 'reformat' method of 'IFormattedMemoryBlock'. * MemorySizeAction.java diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/MemoryNumberOfColumnAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/MemoryNumberOfColumnAction.java new file mode 100644 index 00000000000..442b3642ff5 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/MemoryNumberOfColumnAction.java @@ -0,0 +1,76 @@ +/* + *(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.actions.MemoryActionSelectionGroup; +import org.eclipse.cdt.debug.internal.ui.views.memory.MemoryViewer; +import org.eclipse.cdt.debug.ui.CDebugUIPlugin; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.debug.core.DebugException; +import org.eclipse.jface.action.Action; +import org.eclipse.ui.texteditor.IUpdate; + +/** + * Enter type comment. + * + * @since: Oct 25, 2002 + */ +public class MemoryNumberOfColumnAction extends Action implements IUpdate +{ + private MemoryActionSelectionGroup fGroup; + private MemoryViewer fMemoryViewer; + private int fNumberOfColumns = 0; + + /** + * Constructor for MemoryNumberOfColumnAction. + */ + public MemoryNumberOfColumnAction( MemoryActionSelectionGroup group, + MemoryViewer viewer, + int numberOfColumns ) + { + super( getLabel( numberOfColumns ) ); + fGroup = group; + fMemoryViewer = viewer; + fNumberOfColumns = numberOfColumns; + setChecked( false ); + } + + private static String getLabel( int numberOfColumns ) + { + return Integer.toString( numberOfColumns) + " column" + ( ( numberOfColumns > 1 ) ? "s" : "" ); + } + + /* (non-Javadoc) + * @see org.eclipse.ui.texteditor.IUpdate#update() + */ + public void update() + { + setEnabled( fMemoryViewer.canUpdate() ); + setChecked( fMemoryViewer.getCurrentNumberOfColumns() == fNumberOfColumns ); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.action.IAction#run() + */ + public void run() + { + try + { + fMemoryViewer.setNumberOfColumns( fNumberOfColumns ); + fGroup.setCurrentSelection( this ); + } + catch( DebugException e ) + { + CDebugUIPlugin.errorDialog( e.getMessage(), (IStatus)null ); + setChecked( false ); + } + } + + public String getActionId() + { + return "MemoryNumberOfColumns" + fNumberOfColumns; + } +} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java index aed8d5bc28f..3f42aa74f07 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java @@ -11,6 +11,7 @@ import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; import org.eclipse.cdt.debug.internal.ui.actions.AutoRefreshMemoryAction; import org.eclipse.cdt.debug.internal.ui.actions.ClearMemoryAction; import org.eclipse.cdt.debug.internal.ui.actions.MemoryActionSelectionGroup; +import org.eclipse.cdt.debug.internal.ui.actions.MemoryNumberOfColumnAction; import org.eclipse.cdt.debug.internal.ui.actions.MemorySizeAction; import org.eclipse.cdt.debug.internal.ui.actions.RefreshMemoryAction; import org.eclipse.cdt.debug.internal.ui.actions.ShowAsciiAction; @@ -56,6 +57,7 @@ public class MemoryView extends AbstractDebugEventHandlerView { private IDebugModelPresentation fModelPresentation = null; private MemoryActionSelectionGroup fMemorySizeGroup = null; + private MemoryActionSelectionGroup fMemoryNumberOfColumnsGroup = null; /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#createViewer(Composite) @@ -103,6 +105,9 @@ public class MemoryView extends AbstractDebugEventHandlerView fMemorySizeGroup = new MemoryActionSelectionGroup(); createSizeActionGroup( fMemorySizeGroup ); + fMemoryNumberOfColumnsGroup = new MemoryActionSelectionGroup(); + createNumberOfColumnsActionGroup( fMemoryNumberOfColumnsGroup ); + // set initial content here, as viewer has to be set setInitialContent(); } @@ -145,6 +150,16 @@ public class MemoryView extends AbstractDebugEventHandlerView } menu.appendToGroup( ICDebugUIConstants.FORMAT_GROUP, subMenu ); + subMenu = new MenuManager( "Number Of Columns" ); + { + IAction[] actions = fMemoryNumberOfColumnsGroup.getActions(); + for ( int i = 0; i < actions.length; ++i ) + { + subMenu.add( actions[i] ); + } + } + menu.appendToGroup( ICDebugUIConstants.FORMAT_GROUP, subMenu ); + menu.appendToGroup( IDebugUIConstants.RENDER_GROUP, getAction( "ShowAscii" ) ); //$NON-NLS-1$ } @@ -199,6 +214,8 @@ public class MemoryView extends AbstractDebugEventHandlerView { removeActionGroup( fMemorySizeGroup ); fMemorySizeGroup.dispose(); + removeActionGroup( fMemoryNumberOfColumnsGroup ); + fMemoryNumberOfColumnsGroup.dispose(); remove( (ShowAsciiAction)getAction( "ShowAscii" ) ); remove( (ClearMemoryAction)getAction( "ClearMemory" ) ); @@ -302,6 +319,23 @@ public class MemoryView extends AbstractDebugEventHandlerView } } + private void createNumberOfColumnsActionGroup( MemoryActionSelectionGroup group ) + { + int[] nocs = new int[] { IFormattedMemoryBlock.MEMORY_NUMBER_OF_COLUMNS_1, + IFormattedMemoryBlock.MEMORY_NUMBER_OF_COLUMNS_2, + IFormattedMemoryBlock.MEMORY_NUMBER_OF_COLUMNS_4, + IFormattedMemoryBlock.MEMORY_NUMBER_OF_COLUMNS_8, + IFormattedMemoryBlock.MEMORY_NUMBER_OF_COLUMNS_16 }; + for ( int i = 0; i < nocs.length; ++i ) + { + MemoryNumberOfColumnAction action = new MemoryNumberOfColumnAction( group, (MemoryViewer)getViewer(), nocs[i] ); + action.setEnabled( false ); + setAction( action.getActionId(), action ); //$NON-NLS-1$ + add( action ); + group.addAction( action ); + } + } + private void removeActionGroup( MemoryActionSelectionGroup group ) { IAction[] actions = group.getActions(); diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java index 5ab72e1a526..cf4d7b3ada2 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java @@ -226,4 +226,20 @@ public class MemoryViewer extends ContentViewer ((MemoryControlArea)fTabFolder.getSelection().getControl()).refresh(); } } + + public int getCurrentNumberOfColumns() + { + IFormattedMemoryBlock block = ((MemoryControlArea)fTabFolder.getSelection().getControl()).getMemoryBlock(); + return ( block != null ) ? block.getNumberOfColumns() : 0; + } + + public void setNumberOfColumns( int numberOfColumns ) throws DebugException + { + IFormattedMemoryBlock block = ((MemoryControlArea)fTabFolder.getSelection().getControl()).getMemoryBlock(); + if ( block != null ) + { + block.reformat( block.getFormat(), block.getWordSize(), block.getNumberOfRows(), numberOfColumns ); + ((MemoryControlArea)fTabFolder.getSelection().getControl()).refresh(); + } + } }