Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Variable bookkeeping - phase 0.1 (UI)

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v
retrieving revision 1.161
diff -u -r1.161 ChangeLog
--- ChangeLog 13 Jun 2003 19:16:34 -0000 1.161
+++ ChangeLog 20 Jun 2003 21:22:43 -0000
@@ -1,3 +1,18 @@
+2003-06-20 Mikhail Khodjaiants
+ Variable bookkeeping (phase 0.1).
+ The 'Enable' and 'Disable' actions added to the Variables view.
+ * plugin.properties
+ * plugin.xml
+ * icons/full/obj16/vard_aggr.gif: new
+ * icons/full/obj16/vard_pointer.gif: new
+ * icons/full/obj16/vard_simple.gif: new
+ * icons/full/clc16/disabled_co.gif: new
+ * icons/full/clc16/enabled_co.gif: new
+ * CDebugImages.java
+ * CDTDebugModelPresentation.java
+ * DisableVariablesActionDelegate.java: new
+ * EnableVariablesActionDelegate.java: new
+
 2003-06-13 Mikhail Khodjaiants
  Fix for PR 38788: Ctrl-X, Ctrl-C, Ctrl-V, Ctrl-A, Ctrl-Z and Ctrl-Y keys don't work
  in the address field of the Memory view.
Index: plugin.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/plugin.properties,v
retrieving revision 1.41
diff -u -r1.41 plugin.properties
--- plugin.properties 11 Apr 2003 22:36:17 -0000 1.41
+++ plugin.properties 20 Jun 2003 21:22:44 -0000
@@ -73,3 +73,9 @@
 RestoreDefaultTypeAction.tooltip=Restore Default Type Of Variable
 CastToArrayAction.label=Display As Array...
 CastToArrayAction.tooltip=Display Variable As Array
+
+EnableVariablesAction.label=Enable
+EnableVariablesAction.tooltip=Enable Selected Variables
+
+DisableVariablesAction.label=Disable
+DisableVariablesAction.tooltip=Disable Selected Variables
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/plugin.xml,v
retrieving revision 1.65
diff -u -r1.65 plugin.xml
--- plugin.xml 24 Apr 2003 15:31:28 -0000 1.65
+++ plugin.xml 20 Jun 2003 21:22:44 -0000
@@ -891,6 +891,36 @@
             </enablement>
          </action>
       </objectContribution>
+      <viewerContribution
+            targetID="org.eclipse.debug.ui.VariableView"
+            id="org.eclipse.debug.ui.variablesView.popupMenu">
+         <action
+               label="%DisableVariablesAction.label"
+               icon="icons/full/clcl16/disabled_co.gif"
+               helpContextId="disable_variables_action_context"
+               tooltip="%DisableVariablesAction.tooltip"
+               class="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate"
+               menubarPath="variableGroup"
+               enablesFor="2+"
+               id="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate">
+            <selection
+                  class="org.eclipse.cdt.debug.core.model.ICVariable">
+            </selection>
+         </action>
+         <action
+               label="%EnableVariablesAction.label"
+               icon="icons/full/clcl16/enabled_co.gif"
+               helpContextId="enable_variables_action_context"
+               tooltip="%EnableVariablesAction.tooltip"
+               class="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate"
+               menubarPath="variableGroup"
+               enablesFor="2+"
+               id="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate">
+            <selection
+                  class="org.eclipse.cdt.debug.core.model.ICVariable">
+            </selection>
+         </action>
+      </viewerContribution>
    </extension>
    <extension
          point="org.eclipse.ui.viewActions">
Index: icons/full/clcl16/disabled_co.gif
===================================================================
RCS file: icons/full/clcl16/disabled_co.gif
diff -N icons/full/clcl16/disabled_co.gif
Binary files /dev/null and disabled_co.gif differ
Index: icons/full/clcl16/enabled_co.gif
===================================================================
RCS file: icons/full/clcl16/enabled_co.gif
diff -N icons/full/clcl16/enabled_co.gif
Binary files /dev/null and enabled_co.gif differ
Index: icons/full/obj16/vard_aggr.gif
===================================================================
RCS file: icons/full/obj16/vard_aggr.gif
diff -N icons/full/obj16/vard_aggr.gif
Binary files /dev/null and vard_aggr.gif differ
Index: icons/full/obj16/vard_pointer.gif
===================================================================
RCS file: icons/full/obj16/vard_pointer.gif
diff -N icons/full/obj16/vard_pointer.gif
Binary files /dev/null and vard_pointer.gif differ
Index: icons/full/obj16/vard_simple.gif
===================================================================
RCS file: icons/full/obj16/vard_simple.gif
diff -N icons/full/obj16/vard_simple.gif
Binary files /dev/null and vard_simple.gif differ
Index: src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java,v
retrieving revision 1.61
diff -u -r1.61 CDTDebugModelPresentation.java
--- src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java 10 Jun 2003 22:33:56 -0000 1.61
+++ src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java 20 Jun 2003 21:22:45 -0000
@@ -564,6 +564,8 @@
      label.append( ' ' );
     }
    }
+   if ( !((ICVariable)var).isEnabled() )
+    label.append( "<disabled> " );
    label.append( var.getName() );
    IValue value = var.getValue();
    if ( value instanceof ICValue && value.getValueString() != null )
@@ -870,12 +872,16 @@
  {
   if ( element instanceof ICVariable )
   {
-   if ( !((ICVariable)element).isEditable() )
-    return fDebugImageRegistry.get( CDebugImages.DESC_OBJS_VARIABLE_AGGREGATE );
-   else if ( ((ICVariable)element).hasChildren() )
-    return fDebugImageRegistry.get( CDebugImages.DESC_OBJS_VARIABLE_POINTER );
+   ICType type = ((ICVariable)element).getType();
+   if ( type != null && ( type.isArray() || type.isStructure() ) )
+    return fDebugImageRegistry.get( ( ((ICVariable)element).isEnabled() ) ?
+       CDebugImages.DESC_OBJS_VARIABLE_AGGREGATE : CDebugImages.DESC_OBJS_VARIABLE_AGGREGATE_DISABLED );
+   else if ( type != null && type.isPointer() )
+    return fDebugImageRegistry.get( ( ((ICVariable)element).isEnabled() ) ?
+       CDebugImages.DESC_OBJS_VARIABLE_POINTER : CDebugImages.DESC_OBJS_VARIABLE_POINTER_DISABLED );
    else
-    return fDebugImageRegistry.get( CDebugImages.DESC_OBJS_VARIABLE_SIMPLE );
+    return fDebugImageRegistry.get( ( ((ICVariable)element).isEnabled() ) ?
+       CDebugImages.DESC_OBJS_VARIABLE_SIMPLE : CDebugImages.DESC_OBJS_VARIABLE_SIMPLE_DISABLED );
   }
   return null;
  }
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.21
diff -u -r1.21 CDebugImages.java
--- src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java 5 May 2003 19:53:03 -0000 1.21
+++ src/org/eclipse/cdt/debug/internal/ui/CDebugImages.java 20 Jun 2003 21:22:45 -0000
@@ -70,8 +70,11 @@
  public static final String IMG_OBJS_WRITE_WATCHPOINT_ENABLED = NAME_PREFIX + "write_obj.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_WRITE_WATCHPOINT_DISABLED = NAME_PREFIX + "write_obj_disabled.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_VARIABLE_SIMPLE = NAME_PREFIX + "var_simple.gif"; //$NON-NLS-1$
+ public static final String IMG_OBJS_VARIABLE_SIMPLE_DISABLED = NAME_PREFIX + "vard_simple.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_VARIABLE_AGGREGATE = NAME_PREFIX + "var_aggr.gif"; //$NON-NLS-1$
+ public static final String IMG_OBJS_VARIABLE_AGGREGATE_DISABLED = NAME_PREFIX + "vard_aggr.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_VARIABLE_POINTER = NAME_PREFIX + "var_pointer.gif"; //$NON-NLS-1$
+ public static final String IMG_OBJS_VARIABLE_POINTER_DISABLED = NAME_PREFIX + "vard_pointer.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_VARIABLE_STRING = NAME_PREFIX + "var_string.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_REGISTER_GROUP = NAME_PREFIX + "registergroup_obj.gif"; //$NON-NLS-1$
  public static final String IMG_OBJS_REGISTER = NAME_PREFIX + "register_obj.gif"; //$NON-NLS-1$
@@ -127,8 +130,11 @@
  public static final ImageDescriptor DESC_OBJS_WRITE_WATCHPOINT_ENABLED = createManaged( T_OBJ, IMG_OBJS_WRITE_WATCHPOINT_ENABLED );
  public static final ImageDescriptor DESC_OBJS_WRITE_WATCHPOINT_DISABLED = createManaged( T_OBJ, IMG_OBJS_WRITE_WATCHPOINT_DISABLED );
  public static final ImageDescriptor DESC_OBJS_VARIABLE_SIMPLE = createManaged( T_OBJ, IMG_OBJS_VARIABLE_SIMPLE );
+ public static final ImageDescriptor DESC_OBJS_VARIABLE_SIMPLE_DISABLED = createManaged( T_OBJ, IMG_OBJS_VARIABLE_SIMPLE_DISABLED );
  public static final ImageDescriptor DESC_OBJS_VARIABLE_AGGREGATE = createManaged( T_OBJ, IMG_OBJS_VARIABLE_AGGREGATE );
+ public static final ImageDescriptor DESC_OBJS_VARIABLE_AGGREGATE_DISABLED = createManaged( T_OBJ, IMG_OBJS_VARIABLE_AGGREGATE_DISABLED );
  public static final ImageDescriptor DESC_OBJS_VARIABLE_POINTER = createManaged( T_OBJ, IMG_OBJS_VARIABLE_POINTER );
+ public static final ImageDescriptor DESC_OBJS_VARIABLE_POINTER_DISABLED = createManaged( T_OBJ, IMG_OBJS_VARIABLE_POINTER_DISABLED );
  public static final ImageDescriptor DESC_OBJS_VARIABLE_STRING = createManaged( T_OBJ, IMG_OBJS_VARIABLE_STRING );
  public static final ImageDescriptor DESC_OBJS_REGISTER_GROUP = createManaged( T_OBJ, IMG_OBJS_REGISTER_GROUP );
  public static final ImageDescriptor DESC_OBJS_REGISTER = createManaged( T_OBJ, IMG_OBJS_REGISTER );
Index: src/org/eclipse/cdt/debug/internal/ui/actions/DisableVariablesActionDelegate.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/actions/DisableVariablesActionDelegate.java
diff -N src/org/eclipse/cdt/debug/internal/ui/actions/DisableVariablesActionDelegate.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/actions/DisableVariablesActionDelegate.java 20 Jun 2003 21:22:45 -0000
@@ -0,0 +1,23 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 19, 2003
+ */
+public class DisableVariablesActionDelegate extends EnableVariablesActionDelegate
+{
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate#isEnableAction()
+  */
+ protected boolean isEnableAction()
+ {
+  return false;
+ }
+}
Index: src/org/eclipse/cdt/debug/internal/ui/actions/EnableVariablesActionDelegate.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/actions/EnableVariablesActionDelegate.java
diff -N src/org/eclipse/cdt/debug/internal/ui/actions/EnableVariablesActionDelegate.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/actions/EnableVariablesActionDelegate.java 20 Jun 2003 21:22:45 -0000
@@ -0,0 +1,166 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import java.util.Iterator;
+
+import org.eclipse.cdt.debug.core.model.ICVariable;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 19, 2003
+ */
+public class EnableVariablesActionDelegate implements IViewActionDelegate
+{
+ private IViewPart fView;
+
+ private IAction fAction;
+
+ public EnableVariablesActionDelegate()
+ {
+ }
+
+ protected IViewPart getView()
+ {
+  return fView;
+ }
+
+ protected void setView( IViewPart view )
+ {
+  fView = view;
+ }
+
+ protected IAction getAction()
+ {
+  return fAction;
+ }
+
+ protected void setAction( IAction action )
+ {
+  fAction = action;
+ }
+
+ /**
+  * This action enables variables.
+  */
+ protected boolean isEnableAction()
+ {
+  return true;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+  */
+ public void init( IViewPart view )
+ {
+  setView(view);
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+  */
+ public void run( IAction action )
+ {
+  IStructuredSelection selection = getSelection();
+  final int size = selection.size();
+  if ( size == 0 )
+   return;
+
+  final Iterator enum = selection.iterator();
+  final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED, "Enable variable(s) failed.", null );
+  Runnable runnable = new Runnable()
+        {
+         public void run()
+         {
+          while( enum.hasNext() )
+          {
+           ICVariable var = (ICVariable)enum.next();
+           try
+           {
+            if ( size > 1 )
+            {
+             if ( isEnableAction() )
+              var.setEnabled( true );
+             else
+              var.setEnabled( false );
+            }
+            else
+             var.setEnabled( !var.isEnabled() );
+           }
+           catch( DebugException e )
+           {
+            ms.merge( e.getStatus() );
+           }
+          }
+          update();
+         }
+        };
+
+  final Display display = CDebugUIPlugin.getStandardDisplay();
+  if ( display.isDisposed() )
+   return;
+  display.asyncExec( runnable );
+
+  if ( !ms.isOK() )
+  {
+   CDebugUIPlugin.errorDialog( "Exceptions occurred enabling the variable(s).", ms );
+  }
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
+  */
+ public void selectionChanged( IAction action, ISelection selection )
+ {
+  setAction( action );
+  if ( !( selection instanceof IStructuredSelection ) )
+   return;
+  IStructuredSelection sel = (IStructuredSelection)selection;
+  Object o = sel.getFirstElement();
+  if ( !( o instanceof ICVariable ) )
+   return;
+
+  Iterator enum = sel.iterator();
+  boolean allEnabled = true;
+  boolean allDisabled = true;
+  while( enum.hasNext() )
+  {
+   ICVariable var = (ICVariable)enum.next();
+   if ( !var.canEnableDisable() )
+    continue;
+   if ( var.isEnabled() )
+    allDisabled = false;
+   else
+    allEnabled = false;
+  }
+
+  if ( isEnableAction() )
+   action.setEnabled( !allEnabled );
+  else
+   action.setEnabled( !allDisabled );
+ }
+
+ private IStructuredSelection getSelection()
+ {
+  return (IStructuredSelection)getView().getViewSite().getSelectionProvider().getSelection();
+ }
+
+ protected void update()
+ {
+  getView().getViewSite().getSelectionProvider().setSelection( getView().getViewSite().getSelectionProvider().getSelection() );
+ }
+}

Back to the top