package com.chrisfolger.needsmoredojo.intellij.refactoring;
import com.chrisfolger.needsmoredojo.core.settings.DojoSettings;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.refactoring.listeners.RefactoringElementListener;
import com.intellij.refactoring.listeners.RefactoringElementListenerProvider;
import org.jetbrains.annotations.Nullable;
public class RenameRefactoringProvider implements RefactoringElementListenerProvider {
@Nullable
@Override
public RefactoringElementListener getListener(PsiElement psiElement) {
if(!(psiElement instanceof PsiFile))
{
return null;
}
PsiFile file = (PsiFile) psiElement;
String extension = file.getVirtualFile().getExtension();
if(!ServiceManager.getService(file.getProject(), DojoSettings.class).isNeedsMoreDojoEnabled())
{
return null; // don't want to refactor if we've disabled Needs More Dojo.
}
if(!ServiceManager.getService(file.getProject(), DojoSettings.class).isRefactoringEnabled())
{
return null;
}
if(!extension.equals("js"))
{
return null;
}
if(!file.getText().contains("define"))
{
return null; // not a dojo module
}
return new RenameRefactoringListener(file, file.getName());
}
}