Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] New formating actions for variables, registers, and expressions

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v
retrieving revision 1.53
diff -u -r1.53 ChangeLog
--- ChangeLog 10 Dec 2002 17:57:54 -0000 1.53
+++ ChangeLog 17 Dec 2002 02:45:18 -0000
@@ -1,3 +1,12 @@
+2002-12-16 Mikhail Khodjaiants
+ New formating actions for variables, registers, and expressions
+ * VariableFormatActionDelegate.java
+ * DecVariableFormatActionDelegate.java
+ * HexVariableFormatActionDelegate.java
+ * NaturalVariableFormatActionDelegate.java
+ * plugin.xml
+ * plugin.properties
+
 2002-12-10 Mikhail Khodjaiants
  Added new case in the 'getEditorInput' method of CDTDebugModelPresentation for FileStorage objects.
  * CDTDebugModelPresentation.java
Index: plugin.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/plugin.properties,v
retrieving revision 1.23
diff -u -r1.23 plugin.properties
--- plugin.properties 29 Nov 2002 21:05:42 -0000 1.23
+++ plugin.properties 17 Dec 2002 02:45:18 -0000
@@ -40,4 +40,9 @@
 AddGlobalsAction.label=Add Global Variables...
 AddGlobalsAction.tooltip=Add Global Variables
 
+CVariableFormatMenu.label=Format
+HexVariableFormatAction.label=Hexadecimal
+DecVariableFormatAction.label=Decimal
+NaturalVariableFormatAction.label=Natural
+
 CDebugActionGroup.name=C/C++ Debug
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/plugin.xml,v
retrieving revision 1.37
diff -u -r1.37 plugin.xml
--- plugin.xml 16 Dec 2002 20:50:30 -0000 1.37
+++ plugin.xml 17 Dec 2002 02:45:19 -0000
@@ -481,6 +481,42 @@
             </enablement>
          </action>
       </viewerContribution>
+      <objectContribution
+            objectClass="org.eclipse.cdt.debug.core.model.ICVariable"
+            id="org.eclipse.cdt.debug.ui.CVariableActions">
+         <menu
+               label="%CVariableFormatMenu.label"
+               path="renderGroup"
+               id="org.eclipse.cdt.debug.ui.CVariableFormatMenu">
+            <separator
+                  name="formatGroup">
+            </separator>
+         </menu>
+         <action
+               label="%HexVariableFormatAction.label"
+               helpContextId="hexadecimal_variable_format_action_context"
+               class="org.eclipse.cdt.debug.internal.ui.actions.HexVariableFormatActionDelegate"
+               menubarPath="org.eclipse.cdt.debug.ui.CVariableFormatMenu/formatGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.debug.internal.ui.actions.HexVariableFormatActionDelegate">
+         </action>
+         <action
+               label="%DecVariableFormatAction.label"
+               helpContextId="decimal_variable_format_action_context"
+               class="org.eclipse.cdt.debug.internal.ui.actions.DecVariableFormatActionDelegate"
+               menubarPath="org.eclipse.cdt.debug.ui.CVariableFormatMenu/formatGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.debug.internal.ui.actions.DecVariableFormatActionDelegate">
+         </action>
+         <action
+               label="%NaturalVariableFormatAction.label"
+               helpContextId="naturall_variable_format_action_context"
+               class="org.eclipse.cdt.debug.internal.ui.actions.NaturalVariableFormatActionDelegate"
+               menubarPath="org.eclipse.cdt.debug.ui.CVariableFormatMenu/formatGroup"
+               enablesFor="1"
+               id="org.eclipse.cdt.debug.internal.ui.actions.NaturalVariableFormatActionDelegate">
+         </action>
+      </objectContribution>
    </extension>
    <extension
          point="org.eclipse.ui.viewActions">
Index: src/org/eclipse/cdt/debug/internal/ui/actions/DecVariableFormatActionDelegate.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/actions/DecVariableFormatActionDelegate.java
diff -N src/org/eclipse/cdt/debug/internal/ui/actions/DecVariableFormatActionDelegate.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/actions/DecVariableFormatActionDelegate.java 17 Dec 2002 02:45:20 -0000
@@ -0,0 +1,27 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.cdi.ICDIFormat;
+
+/**
+ *
+ * Enter type comment.
+ *
+ * @since Dec 16, 2002
+ */
+public class DecVariableFormatActionDelegate extends VariableFormatActionDelegate
+{
+
+ /**
+  * Constructor for DecVariableFormatActionDelegate.
+  * @param format
+  */
+ public DecVariableFormatActionDelegate()
+ {
+  super( ICDIFormat.DECIMAL );
+ }
+}
Index: src/org/eclipse/cdt/debug/internal/ui/actions/HexVariableFormatActionDelegate.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/actions/HexVariableFormatActionDelegate.java
diff -N src/org/eclipse/cdt/debug/internal/ui/actions/HexVariableFormatActionDelegate.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/actions/HexVariableFormatActionDelegate.java 17 Dec 2002 02:45:20 -0000
@@ -0,0 +1,26 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.cdi.ICDIFormat;
+
+/**
+ *
+ * Enter type comment.
+ *
+ * @since Dec 16, 2002
+ */
+public class HexVariableFormatActionDelegate extends VariableFormatActionDelegate
+{
+ /**
+  * Constructor for HexVariableFormatActionDelegate.
+  * @param format
+  */
+ public HexVariableFormatActionDelegate()
+ {
+  super( ICDIFormat.HEXADECIMAL );
+ }
+}
Index: src/org/eclipse/cdt/debug/internal/ui/actions/NaturalVariableFormatActionDelegate.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/actions/NaturalVariableFormatActionDelegate.java
diff -N src/org/eclipse/cdt/debug/internal/ui/actions/NaturalVariableFormatActionDelegate.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/actions/NaturalVariableFormatActionDelegate.java 17 Dec 2002 02:45:19 -0000
@@ -0,0 +1,27 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.cdi.ICDIFormat;
+
+/**
+ *
+ * Enter type comment.
+ *
+ * @since Dec 16, 2002
+ */
+public class NaturalVariableFormatActionDelegate extends VariableFormatActionDelegate
+{
+ /**
+  * Constructor for NaturalVariableFormatActionDelegate.
+  * @param format
+  */
+ public NaturalVariableFormatActionDelegate()
+ {
+  super( ICDIFormat.NATURAL );
+ }
+
+}
Index: src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java
diff -N src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java 17 Dec 2002 02:45:20 -0000
@@ -0,0 +1,155 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.cdi.ICDIFormat;
+import org.eclipse.cdt.debug.core.model.ICValue;
+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.debug.core.model.IValue;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+
+/**
+ *
+ * Enter type comment.
+ *
+ * @since Dec 16, 2002
+ */
+public class VariableFormatActionDelegate implements IObjectActionDelegate
+{
+ private int fFormat = ICDIFormat.DECIMAL;
+ private ICVariable fVariable = null;
+
+ /**
+  * Constructor for VariableFormatActionDelegate.
+  */
+ public VariableFormatActionDelegate( int format )
+ {
+  fFormat = format;
+ }
+
+ /**
+  * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+  */
+ public void setActivePart( IAction action, IWorkbenchPart targetPart )
+ {
+ }
+
+ /**
+  * @see org.eclipse.ui.IActionDelegate#run(IAction)
+  */
+ public void run( IAction action )
+ {
+  if ( getVariable() != null )
+  {
+   final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(),
+             DebugException.REQUEST_FAILED, "", null );
+   BusyIndicator.showWhile( Display.getCurrent(),
+         new Runnable()
+          {
+           public void run()
+           {
+            try
+            {
+             doAction( getVariable() );
+            }
+            catch( DebugException e )
+            {
+             ms.merge( e.getStatus() );
+            }
+           }
+          } );
+   if ( !ms.isOK() )
+   {
+    IWorkbenchWindow window = CDebugUIPlugin.getActiveWorkbenchWindow();
+    if ( window != null )
+    {
+     CDebugUIPlugin.errorDialog( "Unable to set format of variable.", ms );
+    }
+    else
+    {
+     CDebugUIPlugin.log( ms );
+    }
+   }
+
+  }
+ }
+
+ /**
+  * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection)
+  */
+ public void selectionChanged( IAction action, ISelection selection )
+ {
+  if ( selection instanceof IStructuredSelection )
+  {
+   Object element = ((IStructuredSelection)selection).getFirstElement();
+   if ( element instanceof ICVariable )
+   {
+    boolean enabled = enablesFor( (ICVariable)element );
+    action.setEnabled( enabled );
+    if ( enabled )
+    {
+     action.setChecked( ( ((ICVariable)element).getFormat() == fFormat ) );
+     setVariable( (ICVariable)element );
+     return;
+    }
+   }
+  }
+  action.setChecked( false );
+  action.setEnabled( false );
+  setVariable( null );
+ }

+ private boolean enablesFor( ICVariable var )
+ {
+  boolean enabled = false;
+  try
+  {
+   IValue value = var.getValue();
+   if ( value != null && value instanceof ICValue )
+   {
+    switch( ((ICValue)value).getType() )
+    {
+     case ICValue.TYPE_ARRAY:
+     case ICValue.TYPE_SIMPLE:
+     case ICValue.TYPE_POINTER:
+      enabled = true;
+      break;
+    }
+   }

+  }
+  catch( DebugException e )
+  {
+  }
+  return enabled;
+ }

+ private void setVariable( ICVariable var )
+ {
+  fVariable = var;
+ }

+ protected ICVariable getVariable()
+ {
+  return fVariable;
+ }
+
+ protected void doAction( ICVariable var ) throws DebugException
+ {
+  var.setFormat( fFormat );
+  var.refresh();
+ }
+}

Back to the top