public abstract class AbstractDebugCommand extends Object implements IDebugCommandHandler
IDebugCommandRequest
and IEnabledStateRequest
updates asynchronously using jobs.
Clients may subclass this class.
Constructor and Description |
---|
AbstractDebugCommand() |
Modifier and Type | Method and Description |
---|---|
void |
canExecute(IEnabledStateRequest request)
Determines whether this handler can execute on the elements specified
in the given request by reporting enabled state to the request.
|
protected abstract void |
doExecute(Object[] targets,
IProgressMonitor monitor,
IRequest request)
Executes this command synchronously on the specified targets, reporting progress.
|
boolean |
execute(IDebugCommandRequest request)
Executes this command on the elements specified in the given request
reporting status to the given request and returns whether this handler should
remain enabled while the command is executing.
|
protected Object |
getAdapter(Object element,
Class<?> type)
Convenience method to return an adapter of the specified type for the given object or
null
if none. |
protected Object |
getEnabledStateJobFamily(IDebugCommandRequest request)
Returns the job family for the this command's
IEnabledStateRequest update job
or null if none. |
protected ISchedulingRule |
getEnabledStateSchedulingRule(IDebugCommandRequest request)
Returns a scheduling rule for this command's
IEnabledStateRequest update job
or null if none. |
protected String |
getEnabledStateTaskName()
Returns the name to use for a job and progress monitor task names when performing
an
IEnabledStateRequest . |
protected Object |
getExecuteJobFamily(IDebugCommandRequest request)
Returns the job family for the this command's
IDebugCommandRequest execute job
or null if none. |
protected ISchedulingRule |
getExecuteSchedulingRule(IDebugCommandRequest request)
Returns a scheduling rule for this command's
IDebugCommandRequest execute job
or null if none. |
protected String |
getExecuteTaskName()
Returns the name to use for jobs and progress monitor task names when executing
an
IDebugCommandRequest . |
protected abstract Object |
getTarget(Object element)
Returns the appropriate target for this command handler for the given object.
|
protected abstract boolean |
isExecutable(Object[] targets,
IProgressMonitor monitor,
IEnabledStateRequest request)
Returns whether this command is executable on the specified targets, reporting progress.
|
protected boolean |
isRemainEnabled(IDebugCommandRequest request)
Returns whether this command should remain enabled after starting execution of the specified request.
|
public boolean execute(IDebugCommandRequest request)
IDebugCommandHandler
Implementations must be non-blocking and may respond asynchronously to the
given request. Errors can reported by setting an appropriate status
on the given request. A request can be canceled by this handler or the caller.
A null
status is equivalent to an OK status. When a request is
complete, has encountered an error, or canceled, implementations must call
done()
on the given collector.
Handlers are expected to poll the request (using isCanceled
)
periodically and abort at their earliest convenience calling done()
on the request.
execute
in interface IDebugCommandHandler
request
- specifies elements to operate on and collects execution statusprotected boolean isRemainEnabled(IDebugCommandRequest request)
request
- the request being executedpublic void canExecute(IEnabledStateRequest request)
IDebugCommandHandler
Implementations must be non-blocking and may respond asynchronously to the
given request. Errors can reported by setting an appropriate status
on the given request. A request can be canceled by this handler or caller.
A null
status is equivalent to an OK status.
When a request succeeds, fails, or is canceled, implementations must call
done()
on the given request.
Clients are expected to poll the request (using isCanceled
)
periodically and abort at their earliest convenience calling done()
on the request.
canExecute
in interface IDebugCommandHandler
request
- specifies elements to operate on and collects enabled stateprotected String getEnabledStateTaskName()
IEnabledStateRequest
.protected String getExecuteTaskName()
IDebugCommandRequest
.protected abstract void doExecute(Object[] targets, IProgressMonitor monitor, IRequest request) throws CoreException
Handlers must override this method.
targets
- objects to perform this command onmonitor
- progress monitorrequest
- can be used to cancel this commandCoreException
- if this handler fails to perform the requestprotected abstract boolean isExecutable(Object[] targets, IProgressMonitor monitor, IEnabledStateRequest request) throws CoreException
false
if the request is canceled.
Handlers must override this method.
targets
- objects to check command enabled state formonitor
- progress monitorrequest
- can be used to cancel this update requestCoreException
- if a problem is encounteredprotected abstract Object getTarget(Object element)
doExecute(Object[], IProgressMonitor, IRequest)
and isExecutable(Object[], IProgressMonitor, IEnabledStateRequest)
.
The target may be the element itself, or some other object. Allows for redirection.
Clients must override this method.
element
- element from a IDebugCommandRequest
null
.protected Object getAdapter(Object element, Class<?> type)
null
if none.element
- element to retrieve adapter fortype
- adapter typenull
protected ISchedulingRule getEnabledStateSchedulingRule(IDebugCommandRequest request)
IEnabledStateRequest
update job
or null
if none. By default a rule is created to serialize
jobs on the first element in the request.
Clients may override this method as required.
request
- request that a scheduling rule is required fornull
protected ISchedulingRule getExecuteSchedulingRule(IDebugCommandRequest request)
IDebugCommandRequest
execute job
or null
if none. By default, execution jobs have no scheduling rule.
Clients may override this method as required.
request
- request that a scheduling rule is required fornull
protected Object getEnabledStateJobFamily(IDebugCommandRequest request)
IEnabledStateRequest
update job
or null
if none. The default implementation returns null
.
Clients may override this method as required.
request
- request the job family is required fornull
if noneprotected Object getExecuteJobFamily(IDebugCommandRequest request)
IDebugCommandRequest
execute job
or null
if none. The default implementation returns null
.
Clients may override this method as required.
request
- request the job family is required fornull
if none
Copyright (c) 2000, 2015 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.