diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index 39dd605d458..84865ea1515 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,3 +1,10 @@
+2003-03-09 Mikhail Khodjaiants
+ The implementation of the "Cast To Type" and "Restore Default Type" actions.
+ * plugin.xml
+ * plugin.propeties
+ * CastToTypeActionDelegate.java: new
+ * RestoreDefaultTypeActionDelegate.java: new
+
2003-03-05 Mikhail Khodjaiants
The extension of CEditor that displays the 'Source Not Found' form.
* plugin.properties
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties
index 2e47d2cafc9..a1b507918f4 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties
@@ -62,3 +62,7 @@ LoadSymbolsAction.label=Load Symbols
SignalAction.label=Resume With Signal
SignalZeroAction.label=Resume Without Signal
+CastToTypeAction.label=Cast To Type...
+CastToTypeAction.tooltip=Cast Varibale To Type
+RestoreDefaultTypeAction.label=Restore Default Type
+RestoreDefaultTypeAction.tooltip=Restore Default Type Of Variable
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index 4c23cb9c171..1d9ce2a0855 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -803,6 +803,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/CastToTypeActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/CastToTypeActionDelegate.java
new file mode 100644
index 00000000000..5a5529cd4f9
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/CastToTypeActionDelegate.java
@@ -0,0 +1,165 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.model.ICastToType;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.actions.ActionDelegate;
+
+/**
+ * Enter type comment.
+ *
+ * @since Mar 7, 2003
+ */
+public class CastToTypeActionDelegate extends ActionDelegate
+ implements IObjectActionDelegate
+{
+ protected class CastToTypeInputValidator implements IInputValidator
+ {
+ public CastToTypeInputValidator()
+ {
+ }
+
+ public String isValid( String newText )
+ {
+ if ( newText.trim().length() == 0 )
+ {
+ return "Type field must not be empty.";
+ }
+ return null;
+ }
+
+ }
+
+ protected class CastToTypeDialog extends InputDialog
+ {
+ public CastToTypeDialog( Shell parentShell, String initialValue )
+ {
+ super( parentShell, "Cast To Type", "Enter type:", initialValue, new CastToTypeInputValidator() );
+ }
+ }
+
+ private ICastToType fCastToType = null;
+ private IStatus fStatus = null;
+
+ public CastToTypeActionDelegate()
+ {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart( IAction action, IWorkbenchPart targetPart )
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run( IAction action )
+ {
+ if ( getCastToType() == null )
+ return;
+ BusyIndicator.showWhile( Display.getCurrent(),
+ new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ doAction( getCastToType() );
+ setStatus( null );
+ }
+ catch( DebugException e )
+ {
+ setStatus( e.getStatus() );
+ }
+ }
+ } );
+ if ( getStatus() != null && !getStatus().isOK() )
+ {
+ IWorkbenchWindow window= CDebugUIPlugin.getActiveWorkbenchWindow();
+ if ( window != null )
+ {
+ CDebugUIPlugin.errorDialog( "Unable to cast to type.", getStatus() );
+ }
+ else
+ {
+ CDebugUIPlugin.log( getStatus() );
+ }
+ }
+ }
+
+ /* (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 )
+ {
+ if ( selection instanceof IStructuredSelection )
+ {
+ Object element = ((IStructuredSelection)selection).getFirstElement();
+ if ( element instanceof ICastToType )
+ {
+ boolean enabled = ((ICastToType)element).supportsCasting();
+ action.setEnabled( enabled );
+ if ( enabled )
+ {
+ setCastToType( (ICastToType)element );
+ return;
+ }
+ }
+ }
+ action.setEnabled( false );
+ setCastToType( null );
+ }
+
+ protected ICastToType getCastToType()
+ {
+ return fCastToType;
+ }
+
+ protected void setCastToType( ICastToType castToType )
+ {
+ fCastToType = castToType;
+ }
+
+ public IStatus getStatus()
+ {
+ return fStatus;
+ }
+
+ public void setStatus( IStatus status )
+ {
+ fStatus = status;
+ }
+
+ protected void doAction( ICastToType castToType ) throws DebugException
+ {
+ String currentType = castToType.getCurrentType().trim();
+ CastToTypeDialog dialog = new CastToTypeDialog( CDebugUIPlugin.getActiveWorkbenchShell(), currentType );
+ if ( dialog.open() == Window.OK )
+ {
+ String newType = dialog.getValue().trim();
+ castToType.cast( newType );
+ }
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RestoreDefaultTypeActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RestoreDefaultTypeActionDelegate.java
new file mode 100644
index 00000000000..dcbd50c039b
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RestoreDefaultTypeActionDelegate.java
@@ -0,0 +1,133 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.model.ICastToType;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.core.runtime.IStatus;
+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.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.actions.ActionDelegate;
+
+/**
+ * Enter type comment.
+ *
+ * @since Mar 9, 2003
+ */
+public class RestoreDefaultTypeActionDelegate extends ActionDelegate
+ implements IObjectActionDelegate
+{
+ private ICastToType fCastToType = null;
+ private IStatus fStatus = null;
+
+ /**
+ *
+ */
+ public RestoreDefaultTypeActionDelegate()
+ {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart)
+ */
+ public void setActivePart( IAction action, IWorkbenchPart targetPart )
+ {
+ }
+
+ protected ICastToType getCastToType()
+ {
+ return fCastToType;
+ }
+
+ protected void setCastToType( ICastToType castToType )
+ {
+ fCastToType = castToType;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run( IAction action )
+ {
+ if ( getCastToType() == null )
+ return;
+ BusyIndicator.showWhile( Display.getCurrent(),
+ new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ doAction( getCastToType() );
+ setStatus( null );
+ }
+ catch( DebugException e )
+ {
+ setStatus( e.getStatus() );
+ }
+ }
+ } );
+ if ( getStatus() != null && !getStatus().isOK() )
+ {
+ IWorkbenchWindow window= CDebugUIPlugin.getActiveWorkbenchWindow();
+ if ( window != null )
+ {
+ CDebugUIPlugin.errorDialog( "Unable to cast to type.", getStatus() );
+ }
+ else
+ {
+ CDebugUIPlugin.log( getStatus() );
+ }
+ }
+ }
+
+ /* (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 )
+ {
+ if ( selection instanceof IStructuredSelection )
+ {
+ Object element = ((IStructuredSelection)selection).getFirstElement();
+ if ( element instanceof ICastToType )
+ {
+ boolean enabled = ((ICastToType)element).supportsCasting() && ((ICastToType)element).isCasted();
+ action.setEnabled( enabled );
+ if ( enabled )
+ {
+ setCastToType( (ICastToType)element );
+ return;
+ }
+ }
+ }
+ action.setEnabled( false );
+ setCastToType( null );
+ }
+
+ public IStatus getStatus()
+ {
+ return fStatus;
+ }
+
+ public void setStatus( IStatus status )
+ {
+ fStatus = status;
+ }
+
+ protected void doAction( ICastToType castToType ) throws DebugException
+ {
+ castToType.restoreDefault();
+ }
+}