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