package com.jetbrains.lang.dart.ide.refactoring;
import com.intellij.lang.refactoring.RefactoringSupportProvider;
import com.intellij.psi.PsiElement;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.refactoring.RefactoringActionHandler;
import com.jetbrains.lang.dart.ide.refactoring.extract.DartServerExtractMethodHandler;
import com.jetbrains.lang.dart.ide.refactoring.introduce.DartIntroduceFinalVariableHandler;
import com.jetbrains.lang.dart.ide.refactoring.introduce.DartServerExtractLocalVariableHandler;
import com.jetbrains.lang.dart.psi.DartNamedElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class DartRefactoringSupportProvider extends RefactoringSupportProvider {
@Override
public boolean isInplaceRenameAvailable(@NotNull PsiElement element, PsiElement context) {
return element instanceof DartNamedElement &&
element.getUseScope() instanceof LocalSearchScope;
}
@Override
public RefactoringActionHandler getIntroduceVariableHandler() {
return new DartServerExtractLocalVariableHandler();
}
@Nullable
@Override
public RefactoringActionHandler getIntroduceConstantHandler() {
return new DartIntroduceFinalVariableHandler();
}
@Nullable
@Override
public RefactoringActionHandler getExtractMethodHandler() {
return new DartServerExtractMethodHandler();
}
}