Implementation of the "Auto-Refresh" and "Refresh" actions for the memory
view.
Index:
ChangeLog
===================================================================
RCS
file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v
retrieving revision
1.7
diff -u -r1.7 ChangeLog
--- ChangeLog 21 Oct 2002 03:42:09
-0000 1.7
+++ ChangeLog 21 Oct 2002 20:58:17 -0000
@@ -1,3 +1,13
@@
+2002-10-21 Mikhail Khodjaiants
+ Implementation of the
"Auto-Refresh" and "Refresh" actions for the memory view.
+ *
AutoRefreshMemoryAction.java
+ * RefreshMemoryAction.java
+ *
ICDebugHelpContextIds.java
+ * MemoryControlArea.java
+ *
MemoryView.java
+ * MemoryViewer.java
+ *
MemoryViewEventHandler.java
+
2002-10-20 Mikhail
Khodjaiants
Display the memory changes in different color in the
memory view.
* MemoryControlArea.java
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.4
diff -u -r1.4 ICDebugHelpContextIds.java
---
src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java 18 Oct
2002 22:02:51 -0000 1.4
+++
src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java 21 Oct
2002 20:58:17 -0000
@@ -26,6 +26,7 @@
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$
+ public static
final String AUTO_REFRESH_MEMORY_ACTION = PREFIX +
"auto_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/AutoRefreshMemoryAction.java
===================================================================
RCS
file:
src/org/eclipse/cdt/debug/internal/ui/actions/AutoRefreshMemoryAction.java
diff
-N
src/org/eclipse/cdt/debug/internal/ui/actions/AutoRefreshMemoryAction.java
---
/dev/null 1 Jan 1970 00:00:00 -0000
+++
src/org/eclipse/cdt/debug/internal/ui/actions/AutoRefreshMemoryAction.java 21
Oct 2002 20:58:18 -0000
@@ -0,0 +1,55 @@
+/*
+ *(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.ui.actions.SelectionProviderAction;
+import
org.eclipse.ui.help.WorkbenchHelp;
+import
org.eclipse.ui.texteditor.IUpdate;
+
+/**
+ * Enter type comment.
+
*
+ * @since: Oct 21, 2002
+ */
+public class AutoRefreshMemoryAction
extends SelectionProviderAction implements IUpdate
+{
+ private
MemoryViewer fMemoryViewer;
+
+ /**
+ * Constructor for
AutoRefreshMemoryAction.
+ * @param provider
+ * @param
text
+ */
+ public AutoRefreshMemoryAction( MemoryViewer viewer
)
+ {
+ super( viewer, "Auto-Refresh"
);
+ fMemoryViewer =
viewer;
+ CDebugImages.setLocalImageDescriptors( this,
CDebugImages.IMG_LCL_AUTO_REFRESH_MEMORY );
+ setDescription(
"Automatically Refresh Memory Block" );
+ setToolTipText(
"Auto-Refresh" );
+ WorkbenchHelp.setHelp( this,
ICDebugHelpContextIds.AUTO_REFRESH_MEMORY_ACTION
);
+ }
+
+ /* (non-Javadoc)
+ * @see
org.eclipse.ui.texteditor.IUpdate#update()
+ */
+ public void
update()
+ {
+ setEnabled( fMemoryViewer.canUpdate()
);
+ setChecked( !fMemoryViewer.isFrozen()
);
+ }
+
+ /* (non-Javadoc)
+ * @see
org.eclipse.jface.action.IAction#run()
+ */
+ public void
run()
+ {
+ fMemoryViewer.setFrozen( !isChecked()
);
+ }
+}
Index:
src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java
===================================================================
RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java,v
retrieving
revision 1.1
diff -u -r1.1 RefreshMemoryAction.java
---
src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java 18
Oct 2002 22:02:51 -0000 1.1
+++
src/org/eclipse/cdt/debug/internal/ui/actions/RefreshMemoryAction.java 21
Oct 2002 20:58:18 -0000
@@ -11,14 +11,17 @@
import
org.eclipse.jface.viewers.IStructuredSelection;
import
org.eclipse.ui.actions.SelectionProviderAction;
import
org.eclipse.ui.help.WorkbenchHelp;
+import
org.eclipse.ui.texteditor.IUpdate;
/**
* Enter type
comment.
*
* @since: Oct 18, 2002
*/
-public
class RefreshMemoryAction extends SelectionProviderAction
+public class
RefreshMemoryAction extends SelectionProviderAction implements
IUpdate
{
+ private MemoryViewer
fMemoryViewer;
+
/**
* Constructor for
RefreshMemoryAction.
* @param provider
@@ -26,8 +29,11
@@
*/
public RefreshMemoryAction( MemoryViewer
viewer )
{
- super( viewer, "Refresh Memory Block"
);
+ super( viewer, "Refresh" );
+ fMemoryViewer =
viewer;
CDebugImages.setLocalImageDescriptors( this,
CDebugImages.IMG_LCL_REFRESH_MEMORY );
+ setDescription( "Refresh
Memory Block" );
+ setToolTipText( "Refresh"
);
WorkbenchHelp.setHelp( this,
ICDebugHelpContextIds.REFRESH_MEMORY_ACTION );
}
@@
-37,5 +43,13 @@
public void selectionChanged(
IStructuredSelection selection
)
{
super.selectionChanged( selection
);
+ }
+
+ /* (non-Javadoc)
+ * @see
org.eclipse.ui.texteditor.IUpdate#update()
+ */
+ public void
update()
+ {
+ setEnabled( fMemoryViewer.canUpdate()
);
}
}
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.7
diff -u -r1.7 MemoryControlArea.java
---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java 21
Oct 2002 03:42:09 -0000 1.7
+++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java 21
Oct 2002 20:58:18 -0000
@@ -31,6 +31,7 @@
*/
public class
MemoryControlArea extends Composite
{
+ private MemoryView
fMemoryView;
private MemoryPresentation
fPresentation;
private int fIndex = 0;
private
ICMemoryManager fMemoryManager = null;
@@ -49,9 +50,10 @@
*
@param parent
* @param style
*/
- public
MemoryControlArea( Composite parent, int style, int index )
+ public
MemoryControlArea( Composite parent, int style, int index, MemoryView view
)
{
super( parent, style
);
+ fMemoryView = view;
GridLayout layout =
new GridLayout();
layout.marginHeight =
0;
layout.marginWidth = 0;
@@ -130,6 +132,7
@@
CDebugUIPlugin.errorDialog( "Unable to get
memory block.", e.getStatus()
);
}
refresh();
+ fMemoryView.updateObjects();
}
}
@@
-244,9 +247,6
@@
getNumberOfColumns(),
getPaddingChar() )
);
getPresentation().setMemoryBlock( getMemoryBlock()
);
-
-//getMemoryBlock().setFrozen( false
);
-
}
setMemoryTextState();
}
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.5
diff -u -r1.5 MemoryView.java
---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java 18 Oct
2002 22:02:51 -0000 1.5
+++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryView.java 21 Oct
2002 20:58:18 -0000
@@ -7,6 +7,7 @@
import
org.eclipse.cdt.debug.core.ICMemoryManager;
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.RefreshMemoryAction;
import
org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler;
import
org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandlerView;
@@
-27,6 +28,7 @@
import
org.eclipse.jface.viewers.ISelection;
import
org.eclipse.jface.viewers.IStructuredSelection;
import
org.eclipse.jface.viewers.Viewer;
+import
org.eclipse.swt.custom.CTabItem;
import
org.eclipse.swt.widgets.Composite;
import
org.eclipse.swt.widgets.Control;
import
org.eclipse.ui.ISelectionListener;
@@ -53,7 +55,7 @@
protected
Viewer createViewer( Composite parent
)
{
CDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(
this );
- final MemoryViewer viewer = new MemoryViewer( parent
);
+ final MemoryViewer viewer = new MemoryViewer( parent, this
);
viewer.setContentProvider( createContentProvider()
);
viewer.setLabelProvider( getModelPresentation()
);
@@ -71,6 +73,12 @@
IAction action = ""
RefreshMemoryAction( (MemoryViewer)getViewer()
);
action.setEnabled( false
);
setAction( "RefreshMemory", action ); file://$NON-NLS-1$
+ add(
(RefreshMemoryAction)action );
+
+ action = ""
AutoRefreshMemoryAction( (MemoryViewer)getViewer()
);
+ action.setChecked( false );
+ setAction(
"AutoRefreshMemory", action ); file://$NON-NLS-1$
+ add(
(AutoRefreshMemoryAction)action );
// set initial
content here, as viewer has to be
set
setInitialContent();
@@ -91,6 +99,7
@@
{
menu.add( new Separator(
ICDebugUIConstants.EMPTY_MEMORY_GROUP ) );
menu.add( new
Separator( ICDebugUIConstants.MEMORY_GROUP ) );
+ menu.add(
getAction( "AutoRefreshMemory" ) ); file://$NON-NLS-1$
menu.add(
getAction( "RefreshMemory" ) ); file://$NON-NLS-1$
menu.add(
new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) );
@@ -103,6 +112,7
@@
{
tbm.add( new Separator(
this.getClass().getName() ) );
tbm.add( new Separator(
ICDebugUIConstants.MEMORY_GROUP ) );
+ tbm.add( getAction(
"AutoRefreshMemory" ) ); file://$NON-NLS-1$
tbm.add(
getAction( "RefreshMemory" ) ); file://$NON-NLS-1$
}
@@
-140,6 +150,8 @@
*/
public void
dispose()
{
+ remove(
(RefreshMemoryAction)getAction( "RefreshMemory" ) );
+ remove(
(AutoRefreshMemoryAction)getAction( "AutoRefreshMemory" )
);
getSite().getPage().removeSelectionListener(
IDebugUIConstants.ID_DEBUG_VIEW, this
);
CDebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(
this );
super.dispose();
@@ -164,6 +176,7
@@
}
showViewer();
getViewer().setInput(
mm
);
+ updateObjects();
}
private
IContentProvider createContentProvider()
@@ -213,6 +226,10 @@
*/
protected void createContextMenu( Control menuControl
)
{
- super.createContextMenu(
((MemoryControlArea)((MemoryViewer)getViewer()).getTabFolder().getSelection().getControl()).getMemoryText().getControl()
);
+ CTabItem[] items =
((MemoryViewer)getViewer()).getTabFolder().getItems();
+ for ( int
i = 0; i < items.length; ++i
)
+ {
+ super.createContextMenu(
((MemoryControlArea)items[i].getControl()).getMemoryText().getControl()
);
+ }
}
}
Index:
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewEventHandler.java
===================================================================
RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewEventHandler.java,v
retrieving
revision 1.2
diff -u -r1.2 MemoryViewEventHandler.java
---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewEventHandler.java 21
Oct 2002 03:42:09 -0000 1.2
+++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewEventHandler.java 21
Oct 2002 20:58:18 -0000
@@ -42,6 +42,7
@@
if ( event.getSource() instanceof
IFormattedMemoryBlock && event.getDetail() == DebugEvent.CONTENT
)
{
refresh(
event.getSource()
);
+ getView().updateObjects();
return;
}
break;
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.5
diff -u -r1.5 MemoryViewer.java
---
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java 21 Oct
2002 03:42:09 -0000 1.5
+++
src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryViewer.java 21 Oct
2002 20:58:18 -0000
@@ -30,6 +30,7 @@
{
static final
private int NUMBER_OF_TABS = 4;
+ protected MemoryView fView
= null;
protected Composite fParent =
null;
protected CTabFolder fTabFolder =
null;
private Composite fControl = null;
@@ -38,10 +39,11
@@
/**
* Constructor for
MemoryViewer.
*/
- public MemoryViewer( Composite parent
)
+ public MemoryViewer( Composite parent, MemoryView view
)
{
super();
fParent =
parent;
+ fView =
view;
}
/* (non-Javadoc)
@@ -63,17
+65,19 @@
{
CTabItem
tabItem = new CTabItem( fTabFolder, SWT.NONE
);
tabItem.setText( "Memory " + (i + 1)
);
- fMemoryControlAreas[i] = new MemoryControlArea(
fTabFolder, SWT.NONE, i );
+ fMemoryControlAreas[i] =
new MemoryControlArea( fTabFolder, SWT.NONE, i, fView
);
tabItem.setControl( fMemoryControlAreas[i]
);
}
fTabFolder.addSelectionListener(
new SelectionListener()
{
public
void widgetSelected( SelectionEvent e
)
{
+ fView.updateObjects();
}
public
void widgetDefaultSelected( SelectionEvent e
)
{
+ fView.updateObjects();
}
}
);
fTabFolder.setSelection( 0
);
@@ -157,5 +161,25
@@
}
}
return
null;
+ }
+
+ public boolean
canUpdate()
+ {
+ return (
((MemoryControlArea)fTabFolder.getSelection().getControl()).getMemoryBlock() !=
null );
+ }
+
+ public boolean
isFrozen()
+ {
+ IFormattedMemoryBlock block =
((MemoryControlArea)fTabFolder.getSelection().getControl()).getMemoryBlock();
+ return
( block != null ) ? block.isFrozen() :
true;
+ }
+
+ public void setFrozen( boolean frozen
)
+ {
+ IFormattedMemoryBlock block =
((MemoryControlArea)fTabFolder.getSelection().getControl()).getMemoryBlock();
+ if
( block != null )
+ {
+ block.setFrozen(
frozen
);
+ }
}
}