Class AbstractAsynchronousCustomFeature

All Implemented Interfaces:
ICustomFeature, IFeature, IFeatureProviderHolder, IDescription, IName

public abstract class AbstractAsynchronousCustomFeature extends AbstractCustomFeature

This class should be used if for some reason a CustomFeature can be long to execute. It runs execute(ICustomContext, IProgressMonitor) in a Command on top of current TransactionalEditingDomain. This command itself is run in a Job, and can use the associated IProgressMonitor

This is useful to indicate to users that the job is running, but eclipse has not crashed.

Since:
0.12
  • Constructor Details

    • AbstractAsynchronousCustomFeature

      public AbstractAsynchronousCustomFeature(IFeatureProvider fp)
  • Method Details

    • execute

      protected abstract void execute(ICustomContext context, org.eclipse.core.runtime.IProgressMonitor monitor)
      Concrete code to execute. Sub-classes should use the given monitor correctly: create tasks (and eventually sub-tasks), notify for worked and done tasks and check if user cancelled the task.
      Parameters:
      context - The CustomFeature context
      monitor - The monitor used to manage progress bar and Job cancellation
    • beforeJobExecution

      protected void beforeJobExecution()
      Callback executed just before job scheduling; called in the feature execution thread. Default implementation is empty.
    • afterJobExecution

      protected void afterJobExecution()
      Callback executed immediately after job execution in the background job execution thread. Default implementation is empty.
    • initializeJob

      protected org.eclipse.core.runtime.jobs.Job initializeJob(ICustomContext context)
      Initialize the Job.
      Parameters:
      context - The CustomContext that will be given to execute(ICustomContext, IProgressMonitor).
      Returns:
      The Job instance
    • configureJob

      protected void configureJob(org.eclipse.core.runtime.jobs.Job job)
      Initialize parameters of the given Job
      Parameters:
      job - The Job instance to configure
    • execute

      public final void execute(IContext context)
      Must not be overridden in order to guarantee correct delegation to the background job, see execute(ICustomContext).
      Specified by:
      execute in interface IFeature
      Overrides:
      execute in class AbstractCustomFeature
      Parameters:
      context - this is the general input for this method
      See Also:
    • execute

      public final void execute(ICustomContext context)
      The implementation of this method will during the execution of the feature trigger the creation of a background job, configure it and execute it.
      Clients should implement their feature functionality in execute(ICustomContext, IProgressMonitor), potentially also in the beforeJobExecution() and afterJobExecution() hooks. The background job and its behavior can be changed in the methods initializeJob(ICustomContext) and configureJob(Job).
      Parameters:
      context - The CustomFeature context
    • hasDoneChanges

      public final boolean hasDoneChanges()
      The default implementation returns false in any case. This is usually the desired return value, because this method will be queried already before the asynchronous feature will be executed ( execute(ICustomContext, IProgressMonitor) is called). Returning true here would mean that users could already undo the feature while it is still being executed; this would mean also canceling the a running job. Because of potentially strange effects and complexity this is not possible.
      Specified by:
      hasDoneChanges in interface IFeature
      Overrides:
      hasDoneChanges in class AbstractFeature
      Returns:
      Always false