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