Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Implementation of the "Auto-Refresh" and "Refresh" actions

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 );
+  }
  }
 }


Back to the top