|
Eclipse JDT Release 3.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.eclipse.ltk.core.refactoring.Change
org.eclipse.ltk.core.refactoring.CompositeChange
Represents a composite change. Composite changes can be marked as synthetic. A synthetic composite changes might not be rendered in the refactoring preview tree to save display real-estate.
Clients may subclass this class.
Change
Constructor Summary | |
CompositeChange(String name)
Creates a new composite change with the given name. |
|
CompositeChange(String name,
Change[] children)
Creates a new composite change with the given name and array of children. |
Method Summary | |
void |
add(Change change)
Adds the given change to the list of children. |
void |
addAll(Change[] changes)
Adds all changes in the given array to the list of children. |
protected Change |
createUndoChange(Change[] childUndos)
Hook to create an undo change. |
void |
dispose()
Disposes this change. Subclasses that override this method typically unregister listeners which got registered during the call to
initializeValidationState .
Subclasses may override this method. The composite change sendsdispose to all its children. |
Change[] |
getChildren()
Returns the children managed by this composite change. |
Object |
getModifiedElement()
Returns the element modified by this Change . The method may return
null if the change isn't related to an element. |
String |
getName()
Returns the human readable name of this change. The name MUST not be null . |
Change |
getUndoUntilException()
Returns the undo object containing all undo changes of those children that got successfully executed while performing this change. |
void |
initializeValidationData(org.eclipse.core.runtime.IProgressMonitor pm)
Hook method to initialize some internal state to provide an adequate answer for the isValid method. This method gets called after a change
or a whole change tree has been created.
Typically this method is implemented in one of the following ways:
For example, a change object that manipulates the content of an initializeValidationData to all its
children.
|
protected void |
internalHandleException(Change change,
Throwable t)
Note: this is an internal method and should not be overridden outside of the refacotring framework. |
boolean |
isSynthetic()
Returns whether this change is synthetic or not. |
RefactoringStatus |
isValid(org.eclipse.core.runtime.IProgressMonitor pm)
Verifies that this change object is still valid and can be executed by calling perform . If a refactoring status with a severity of RefactoringStatus.FATAL is returned then the change has to be treated as invalid
and can no longer be executed. Performing such a change produces an unspecified
result and will very likely throw an exception.
This method is also called by the isValid to all its children
until the first one returns a status with a severity of FATAL
. |
void |
markAsSynthetic()
Marks this change as synthetic. |
void |
merge(CompositeChange change)
Merges the children of the given composite change into this change. |
Change |
perform(org.eclipse.core.runtime.IProgressMonitor pm)
Performs this change. If this method is call on an invalid or disabled change object the result is unspecified. Changes should in general not respond to IProgressMonitor.isCanceled() since canceling a change tree in the
middle of its execution leaves the workspace in a half changed state.
The composite change sends perform to all its enabled
children. |
boolean |
remove(Change change)
Removes the given change from the list of children. |
void |
setEnabled(boolean enabled)
Sets whether this change is enabled or not. The composite change sends setEnabled to all its children.
|
String |
toString()
|
Methods inherited from class org.eclipse.ltk.core.refactoring.Change |
getAdapter, getParent, isEnabled |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public CompositeChange(String name)
name
- the human readable name of the change. Will
be used to display the change in the user interfacepublic CompositeChange(String name, Change[] children)
name
- the human readable name of the change. Will
be used to display the change in the user interfacechildren
- the initial array of childrenMethod Detail |
public boolean isSynthetic()
true
if this change is synthetic; otherwise
false
public void markAsSynthetic()
public String getName()
null
.
getName
in class Change
public void add(Change change)
null
. Adding a "null" change does nothing.
change
- the change to addpublic void addAll(Change[] changes)
changes
- the changes to addpublic void merge(CompositeChange change)
change
- the change to mergepublic boolean remove(Change change)
change
- the change to remove
true
if the change contained the given
child; otherwise false
is returnedpublic Change[] getChildren()
public void setEnabled(boolean enabled)
The composite change sends setEnabled
to all its children.
Client are allowed to extend this method.
setEnabled
in class Change
enabled
- true
to enable this change;
false
otherwisepublic void initializeValidationData(org.eclipse.core.runtime.IProgressMonitor pm)
isValid
method. This method gets called after a change
or a whole change tree has been created.
Typically this method is implemented in one of the following ways:
dispose
.isValid
is called.
For example, a change object that manipulates the content of an IFile
could either listen to resource changes and detect that the file got changed or
it could remember some content stamp and compare it with the actual content stamp
when isValid
is called.
The composite change sends initializeValidationData
to all its
children.
Client are allowed to extend this method.
initializeValidationData
in class Change
pm
- a progress monitorpublic RefactoringStatus isValid(org.eclipse.core.runtime.IProgressMonitor pm) throws org.eclipse.core.runtime.CoreException
perform
. If a refactoring status with a severity of RefactoringStatus.FATAL
is returned then the change has to be treated as invalid
and can no longer be executed. Performing such a change produces an unspecified
result and will very likely throw an exception.
This method is also called by the UndoManager
to decide if
an undo or redo change is still valid and therefore can be executed.
The composite change sends isValid
to all its children
until the first one returns a status with a severity of FATAL
. If one of the children throws an exception the remaining children
will not receive the isValid
call.
Client are allowed to extend this method.
isValid
in class Change
pm
- a progress monitor.
org.eclipse.core.runtime.CoreException
- if an error occurred during validation check. The change
is to be treated as invalid if an exception occurspublic Change perform(org.eclipse.core.runtime.IProgressMonitor pm) throws org.eclipse.core.runtime.CoreException
IProgressMonitor.isCanceled()
since canceling a change tree in the
middle of its execution leaves the workspace in a half changed state.
The composite change sends perform
to all its enabled
children. If one of the children throws an exception the remaining children
will not receive the perform
call. In this case the method
getUndoUntilException
can be used to get an undo object containing the
undo objects of all executed children.
Client are allowed to extend this method.
perform
in class Change
pm
- a progress monitor
null
if no
undo is provided
org.eclipse.core.runtime.CoreException
- if an error occurred during change executionprotected void internalHandleException(Change change, Throwable t)
The method gets called if one of the changes managed by this composite change generates and exception when performed.
change
- the change that caused the exceptiont
- the exception itselfpublic void dispose()
initializeValidationState
.
Subclasses may override this method.
The composite change sends dispose
to all its children. It is guaranteed
that all children receive the dispose
call.
dispose
in class Change
public Change getUndoUntilException()
null
if all changes were executed successfully.
This method is not intended to be overridden or extended.
protected Change createUndoChange(Change[] childUndos)
childUndos
- the child undo. The undos appear in the
list in the reverse order of their execution. So the first
change in the array is the undo change of the last change
that got executed.
public Object getModifiedElement()
Change
. The method may return
null
if the change isn't related to an element.
getModifiedElement
in class Change
public String toString()
|
Eclipse JDT Release 3.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |