mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-05 07:15:39 +02:00
The implementation of the "Cast To Type" and "Restore Default Type" actions.
This commit is contained in:
parent
d32a10f776
commit
2236ae2e8f
5 changed files with 344 additions and 0 deletions
|
@ -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
|
2003-03-05 Mikhail Khodjaiants
|
||||||
The extension of CEditor that displays the 'Source Not Found' form.
|
The extension of CEditor that displays the 'Source Not Found' form.
|
||||||
* plugin.properties
|
* plugin.properties
|
||||||
|
|
|
@ -62,3 +62,7 @@ LoadSymbolsAction.label=Load Symbols
|
||||||
SignalAction.label=Resume With Signal
|
SignalAction.label=Resume With Signal
|
||||||
SignalZeroAction.label=Resume Without 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
|
||||||
|
|
|
@ -803,6 +803,41 @@
|
||||||
</enablement>
|
</enablement>
|
||||||
</action>
|
</action>
|
||||||
</objectContribution>
|
</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>
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.viewActions">
|
point="org.eclipse.ui.viewActions">
|
||||||
|
|
|
@ -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 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue