package com.intellij.javascript.karma.execution;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiUtilBase;
import com.intellij.refactoring.listeners.RefactoringElementListener;
import com.intellij.refactoring.listeners.UndoRefactoringElementAdapter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Sergey Simonchik
*/
public class KarmaRunConfigurationRefactoringHandler {
@Nullable
public static RefactoringElementListener getRefactoringElementListener(@NotNull KarmaRunConfiguration configuration,
@Nullable PsiElement element) {
VirtualFile fileAtElement = PsiUtilBase.asVirtualFile(element);
if (fileAtElement == null) {
return null;
}
KarmaRunSettings settings = configuration.getRunSettings();
String path = fileAtElement.getPath();
String configPath = FileUtil.toSystemIndependentName(settings.getConfigPath());
if (configPath.equals(path)) {
return new FilePathRefactoringElementListener(configuration);
}
return null;
}
private static class FilePathRefactoringElementListener extends UndoRefactoringElementAdapter {
private final KarmaRunConfiguration myConfiguration;
private FilePathRefactoringElementListener(@NotNull KarmaRunConfiguration configuration) {
myConfiguration = configuration;
}
@Override
protected void refactored(@NotNull PsiElement element, @Nullable String oldQualifiedName) {
VirtualFile newFile = PsiUtilBase.asVirtualFile(element);
if (newFile != null) {
myConfiguration.setConfigFilePath(newFile.getPath());
}
}
}
}