package org.xtest.ui.refactoring;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.ui.refactoring.ui.IRenameElementContext;
import org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelRenameElementHandler;
import org.xtest.xTest.XMethodDef;
/**
* Custom rename element handler that allows renaming a reference to an Xtest method to also
* refactor the declaration of the method.
*
* @author Michael Barry
*/
@SuppressWarnings("restriction")
public class XtestRenameElementHandler extends JvmModelRenameElementHandler {
@Override
public IRenameElementContext createRenameElementContext(EObject targetElement,
XtextEditor editor, ITextSelection selection, XtextResource resource) {
if (!isJvmMember(targetElement) || !isTypeResource(targetElement)) {
EObject declarationTarget = getDeclarationTarget(targetElement);
if (declarationTarget instanceof XMethodDef) {
targetElement = declarationTarget;
}
}
return super.createRenameElementContext(targetElement, editor, selection, resource);
}
}