X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=case-study%2Fjdt-before%2Fcore%20refactoring%2Forg%2Feclipse%2Fjdt%2Finternal%2Fcorext%2Frefactoring%2Frename%2FJavaRenameProcessor.java;fp=case-study%2Fjdt-before%2Fcore%20refactoring%2Forg%2Feclipse%2Fjdt%2Finternal%2Fcorext%2Frefactoring%2Frename%2FJavaRenameProcessor.java;h=70fbfd713dbb88a61ac2caf8fec46434888ee032;hb=1b2798f607d741df30e5197f427381cbff326adc;hp=0000000000000000000000000000000000000000;hpb=246231e4bd9b24345490f369747c0549ca308c4d;p=ifi-stolz-refaktor.git diff --git a/case-study/jdt-before/core refactoring/org/eclipse/jdt/internal/corext/refactoring/rename/JavaRenameProcessor.java b/case-study/jdt-before/core refactoring/org/eclipse/jdt/internal/corext/refactoring/rename/JavaRenameProcessor.java new file mode 100644 index 00000000..70fbfd71 --- /dev/null +++ b/case-study/jdt-before/core refactoring/org/eclipse/jdt/internal/corext/refactoring/rename/JavaRenameProcessor.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright (c) 2000, 2011 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.internal.corext.refactoring.rename; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.OperationCanceledException; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.mapping.IResourceChangeDescriptionFactory; + +import org.eclipse.ltk.core.refactoring.RefactoringStatus; +import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext; +import org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant; +import org.eclipse.ltk.core.refactoring.participants.RenameProcessor; +import org.eclipse.ltk.core.refactoring.participants.ResourceChangeChecker; +import org.eclipse.ltk.core.refactoring.participants.SharableParticipants; +import org.eclipse.ltk.core.refactoring.participants.ValidateEditChecker; + +import org.eclipse.jdt.internal.corext.refactoring.tagging.INameUpdating; + +import org.eclipse.jdt.ui.refactoring.RefactoringSaveHelper; + + +public abstract class JavaRenameProcessor extends RenameProcessor implements INameUpdating { + + private String fNewElementName; + private RenameModifications fRenameModifications; + + @Override + public final RefactoringParticipant[] loadParticipants(RefactoringStatus status, SharableParticipants shared) throws CoreException { + return fRenameModifications.loadParticipants(status, this, getAffectedProjectNatures(), shared); + } + + @Override + public final RefactoringStatus checkFinalConditions(IProgressMonitor pm, CheckConditionsContext context) throws CoreException, OperationCanceledException { + ResourceChangeChecker checker= (ResourceChangeChecker) context.getChecker(ResourceChangeChecker.class); + IResourceChangeDescriptionFactory deltaFactory= checker.getDeltaFactory(); + RefactoringStatus result= doCheckFinalConditions(pm, context); + if (result.hasFatalError()) + return result; + IFile[] changed= getChangedFiles(); + for (int i= 0; i < changed.length; i++) { + deltaFactory.change(changed[i]); + } + fRenameModifications= computeRenameModifications(); + fRenameModifications.buildDelta(deltaFactory); + fRenameModifications.buildValidateEdits((ValidateEditChecker)context.getChecker(ValidateEditChecker.class)); + return result; + } + + protected abstract RenameModifications computeRenameModifications() throws CoreException; + + protected abstract RefactoringStatus doCheckFinalConditions(IProgressMonitor pm, CheckConditionsContext context) throws CoreException, OperationCanceledException; + + protected abstract IFile[] getChangedFiles() throws CoreException; + + protected abstract String[] getAffectedProjectNatures() throws CoreException; + + public void setNewElementName(String newName) { + Assert.isNotNull(newName); + fNewElementName= newName; + } + + public String getNewElementName() { + return fNewElementName; + } + + /** + * @return a save mode from {@link RefactoringSaveHelper} + * + * @see RefactoringSaveHelper + */ + public abstract int getSaveMode(); + +}