1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 06:45:43 +02:00

The implementation of the "Cast To Type" and "Restore Default Type" actions.

This commit is contained in:
Mikhail Khodjaiants 2003-03-09 22:51:22 +00:00
parent d32a10f776
commit 2236ae2e8f
5 changed files with 344 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -803,6 +803,41 @@
</enablement>
</action>
</objectContribution>
<objectContribution
objectClass="org.eclipse.cdt.debug.core.model.ICastToType"
id="org.eclipse.cdt.debug.ui.VariableActions">
<action
label="%RestoreDefaultTypeAction.label"
helpContextId="restore_default_type_action_context"
tooltip="%RestoreDefaultTypeAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.RestoreDefaultTypeActionDelegate"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.RestoreDefaultTypeActionDelegate">
<enablement>
<pluginState
id="org.eclipse.cdt.debug.ui"
value="activated">
</pluginState>
</enablement>
</action>
<action
label="%CastToTypeAction.label"
icon="icons/full/clcl16/casttotype_co.gif"
helpContextId="cast_to_type_action_context"
tooltip="%CastToTypeAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate">
<enablement>
<pluginState
value="activated"
id="org.eclipse.cdt.debug.ui">
</pluginState>
</enablement>
</action>
</objectContribution>
</extension>
<extension
point="org.eclipse.ui.viewActions">

View file

@ -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 );
}
}
}

View file

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