Eclipse Platform
Release 3.1

org.eclipse.ltk.core.refactoring.participants
Class ProcessorBasedRefactoring

java.lang.Object
  extended byorg.eclipse.core.runtime.PlatformObject
      extended byorg.eclipse.ltk.core.refactoring.Refactoring
          extended byorg.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring
All Implemented Interfaces:
IAdaptable
Direct Known Subclasses:
CopyRefactoring, DeleteRefactoring, MoveRefactoring, RenameRefactoring

public abstract class ProcessorBasedRefactoring
extends Refactoring

An abstract base implementation for refactorings that are split into one refactoring processor and 0..n participants.

This class should be subclassed by clients wishing to provide a special refactoring which uses a processor/participant architecture.

Since:
3.0

Constructor Summary
protected ProcessorBasedRefactoring()
          Deprecated. use ProcessorBasedRefactoring(RefactoringProcessor) instead
protected ProcessorBasedRefactoring(RefactoringProcessor processor)
          Creates a new processor based refactoring.
 
Method Summary
 RefactoringStatus checkFinalConditions(IProgressMonitor pm)
          After checkInitialConditions has been performed and the user has provided all input necessary to perform the refactoring this method is called to check the remaining preconditions.

The refactoring has to be considered as not being executable if the returned status has the severity of RefactoringStatus#FATAL.

This method can be called more than once.

 RefactoringStatus checkInitialConditions(IProgressMonitor pm)
          Checks some initial conditions based on the element to be refactored. The method is typically called by the UI to perform an initial checks after an action has been executed.

The refactoring has to be considered as not being executable if the returned status has the severity of RefactoringStatus#FATAL.

This method can be called more than once.

 Change createChange(IProgressMonitor pm)
          Creates a Change object that performs the actual workspace transformation.
 Object getAdapter(Class clazz)
          Adapts the refactoring to the given type.
 String getName()
          Returns the refactoring's name.
abstract  RefactoringProcessor getProcessor()
          Return the processor associated with this refactoring.
 TextChange getTextChange(Object element)
          Returns the text change for the given element or null if a text change doesn't exist.
 boolean isApplicable()
          Checks whether the refactoring is applicable to the elements to be refactored or not.
 String toString()
           
 
Methods inherited from class org.eclipse.ltk.core.refactoring.Refactoring
checkAllConditions, getValidationContext, setValidationContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ProcessorBasedRefactoring

protected ProcessorBasedRefactoring()
Deprecated. use ProcessorBasedRefactoring(RefactoringProcessor) instead

Creates a new processor based refactoring.


ProcessorBasedRefactoring

protected ProcessorBasedRefactoring(RefactoringProcessor processor)
Creates a new processor based refactoring.

Parameters:
processor - the refactoring's main processor
Since:
3.1
Method Detail

getProcessor

public abstract RefactoringProcessor getProcessor()
Return the processor associated with this refactoring. The method must not return null.

Returns:
the processor associated with this refactoring

isApplicable

public final boolean isApplicable()
                           throws CoreException
Checks whether the refactoring is applicable to the elements to be refactored or not.

This default implementation forwards the call to the refactoring processor.

Returns:
true if the refactoring is applicable to the elements; otherwise false is returned.
Throws:
CoreException - if the test fails

getName

public String getName()
Returns the refactoring's name.

Specified by:
getName in class Refactoring
Returns:
the refactoring's human readable name. Must not be null

checkInitialConditions

public RefactoringStatus checkInitialConditions(IProgressMonitor pm)
                                         throws CoreException
Checks some initial conditions based on the element to be refactored. The method is typically called by the UI to perform an initial checks after an action has been executed.

The refactoring has to be considered as not being executable if the returned status has the severity of RefactoringStatus#FATAL.

This method can be called more than once.

Specified by:
checkInitialConditions in class Refactoring
Parameters:
pm - a progress monitor to report progress. Although initial checks are supposed to execute fast, there can be certain situations where progress reporting is necessary. For example rebuilding a corrupted index may report progress.
Returns:
a refactoring status. If the status is RefactoringStatus#FATAL the refactoring has to be considered as not being executable.
Throws:
CoreException - if an exception occurred during initial condition checking. If this happens then the initial condition checking has to be interpreted as failed
See Also:
Refactoring.checkFinalConditions(IProgressMonitor), RefactoringStatus.FATAL

checkFinalConditions

public RefactoringStatus checkFinalConditions(IProgressMonitor pm)
                                       throws CoreException
After checkInitialConditions has been performed and the user has provided all input necessary to perform the refactoring this method is called to check the remaining preconditions.

The refactoring has to be considered as not being executable if the returned status has the severity of RefactoringStatus#FATAL.

This method can be called more than once.

Specified by:
checkFinalConditions in class Refactoring
Parameters:
pm - a progress monitor to report progress
Returns:
a refactoring status. If the status is RefactoringStatus#FATAL the refactoring is considered as not being executable.
Throws:
CoreException - if an exception occurred during final condition checking If this happens then the final condition checking is interpreted as failed
See Also:
Refactoring.checkInitialConditions(IProgressMonitor), RefactoringStatus.FATAL

createChange

public Change createChange(IProgressMonitor pm)
                    throws CoreException
Creates a Change object that performs the actual workspace transformation.

Specified by:
createChange in class Refactoring
Parameters:
pm - a progress monitor to report progress
Returns:
the change representing the workspace modifications of the refactoring
Throws:
CoreException - if an error occurred while creating the change

getTextChange

public TextChange getTextChange(Object element)
Returns the text change for the given element or null if a text change doesn't exist. This method only returns a valid result during change creation. Outside of change creation always null is returned.

Parameters:
element - the element to be modified for which a text change is requested
Returns:
the text change or null if no text change exists for the element
Since:
3.1

getAdapter

public Object getAdapter(Class clazz)
Adapts the refactoring to the given type. The adapter is resolved as follows:
  1. the refactoring itself is checked whether it is an instance of the requested type.
  2. its processor is checked whether it is an instance of the requested type.
  3. the request is delegated to the super class.

Specified by:
getAdapter in interface IAdaptable
Overrides:
getAdapter in class Refactoring
Parameters:
clazz - the adapter class to look up
Returns:
the requested adapter or nullif no adapter exists.

toString

public String toString()
Overrides:
toString in class Refactoring

Eclipse Platform
Release 3.1

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp. and others 2000, 2005. All rights reserved.