Search in sources :

Example 26 with Change

use of org.eclipse.ltk.core.refactoring.Change in project che by eclipse.

the class ChangeCorrectionProposal method performChange.

/**
	 * Performs the change associated with this proposal.
	 * <p>
	 * Subclasses may extend, but must call the super implementation.
	 *
	 * @param activeEditor the editor currently active or <code>null</code> if no editor is active
	 * @param document the document of the editor currently active or <code>null</code> if no editor
	 *            is visible
	 * @throws CoreException when the invocation of the change failed
	 */
protected void performChange(/*IEditorPart activeEditor,*/
IDocument document) throws CoreException {
    //		StyledText disabledStyledText = null;
    //		TraverseListener traverseBlocker = null;
    Change change = null;
    //		IRewriteTarget rewriteTarget = null;
    try {
        change = getChange();
        if (change != null) {
            //				if (document != null) {
            //					LinkedModeModel.closeAllModels(document);
            //				}
            //				if (activeEditor != null) {
            //					rewriteTarget = (IRewriteTarget)activeEditor.getAdapter(IRewriteTarget.class);
            //					if (rewriteTarget != null) {
            //						rewriteTarget.beginCompoundChange();
            //					}
            //					/*
            //					 * Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=195834#c7 :
            //					 * During change execution, an EventLoopProgressMonitor can process the event queue while the text
            //					 * widget has focus. When that happens and the user e.g. pressed a key, the event is prematurely
            //					 * delivered to the text widget and screws up the document. Change execution fails or performs
            //					 * wrong changes.
            //					 *
            //					 * The fix is to temporarily disable the text widget.
            //					 */
            //					Object control= activeEditor.getAdapter(Control.class);
            //					if (control instanceof StyledText) {
            //						disabledStyledText= (StyledText) control;
            //						if (disabledStyledText.getEditable()) {
            //							disabledStyledText.setEditable(false);
            //							traverseBlocker= new TraverseListener() {
            //								public void keyTraversed(TraverseEvent e) {
            //									e.doit= true;
            //									e.detail= SWT.TRAVERSE_NONE;
            //								}
            //							};
            //							disabledStyledText.addTraverseListener(traverseBlocker);
            //						} else {
            //							disabledStyledText= null;
            //						}
            //					}
            //				}
            change.initializeValidationData(new NullProgressMonitor());
            RefactoringStatus valid = change.isValid(new NullProgressMonitor());
            if (valid.hasFatalError()) {
                IStatus status = new Status(IStatus.ERROR, JavaPlugin.getPluginId(), IStatus.ERROR, valid.getMessageMatchingSeverity(RefactoringStatus.FATAL), null);
                throw new CoreException(status);
            } else {
                //					IUndoManager manager= RefactoringCore.getUndoManager();
                Change undoChange;
                boolean successful = false;
                try {
                    //						manager.aboutToPerformChange(change);
                    undoChange = change.perform(new NullProgressMonitor());
                    successful = true;
                } finally {
                //						manager.changePerformed(change, successful);
                }
                if (undoChange != null) {
                //						undoChange.initializeValidationData(new NullProgressMonitor());
                //						manager.addUndo(getName(), undoChange);
                }
            }
        }
    } finally {
        if (change != null) {
            change.dispose();
        }
    }
}
Also used : Status(org.eclipse.core.runtime.Status) IStatus(org.eclipse.core.runtime.IStatus) RefactoringStatus(org.eclipse.ltk.core.refactoring.RefactoringStatus) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) IStatus(org.eclipse.core.runtime.IStatus) CoreException(org.eclipse.core.runtime.CoreException) RefactoringStatus(org.eclipse.ltk.core.refactoring.RefactoringStatus) NullChange(org.eclipse.ltk.core.refactoring.NullChange) Change(org.eclipse.ltk.core.refactoring.Change)

Aggregations

Change (org.eclipse.ltk.core.refactoring.Change)26 CompositeChange (org.eclipse.ltk.core.refactoring.CompositeChange)10 CoreException (org.eclipse.core.runtime.CoreException)8 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)6 SubProgressMonitor (org.eclipse.core.runtime.SubProgressMonitor)6 RefactoringStatus (org.eclipse.ltk.core.refactoring.RefactoringStatus)6 DynamicValidationStateChange (org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange)5 ArrayList (java.util.ArrayList)4 ResourceMapping (org.eclipse.core.resources.mapping.ResourceMapping)4 MoveCompilationUnitChange (org.eclipse.jdt.internal.corext.refactoring.changes.MoveCompilationUnitChange)4 RenameCompilationUnitChange (org.eclipse.jdt.internal.corext.refactoring.changes.RenameCompilationUnitChange)4 RenamePackageChange (org.eclipse.jdt.internal.corext.refactoring.changes.RenamePackageChange)4 UndoTextFileChange (org.eclipse.ltk.core.refactoring.UndoTextFileChange)4 ChangeInfo (org.eclipse.che.ide.ext.java.shared.dto.refactoring.ChangeInfo)3 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)3 JavaElementResourceMapping (org.eclipse.jdt.internal.corext.util.JavaElementResourceMapping)3 PerformChangeOperation (org.eclipse.ltk.core.refactoring.PerformChangeOperation)3 TextEditBasedChange (org.eclipse.ltk.core.refactoring.TextEditBasedChange)3 ResourceChange (org.eclipse.ltk.core.refactoring.resource.ResourceChange)3 RefactoringResult (org.eclipse.che.ide.ext.java.shared.dto.refactoring.RefactoringResult)2