package com.thoughtworks.gauge.markdownPreview;
import com.intellij.openapi.fileEditor.*;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.PossiblyDumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.thoughtworks.gauge.helper.ModuleHelper;
import com.thoughtworks.gauge.util.GaugeUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
public class MarkdownPreviewEditorProvider implements FileEditorProvider, PossiblyDumbAware {
private final ModuleHelper helper;
public MarkdownPreviewEditorProvider() {
this.helper = new ModuleHelper();
}
public MarkdownPreviewEditorProvider(ModuleHelper helper) {
this.helper = helper;
}
@Override
public boolean accept(Project project, VirtualFile file) {
Module module = helper.getModule(file, project);
return module != null && GaugeUtil.isGaugeFile(file) && helper.isGaugeModule(module);
}
@NotNull
@Override
public FileEditor createEditor(@NotNull Project project, @NotNull VirtualFile file) {
return new MarkdownPreviewEditor(project, FileDocumentManager.getInstance().getDocument(file));
}
@Override
public void disposeEditor(@NotNull FileEditor fileEditor) {
fileEditor.dispose();
}
@NotNull
@Override
public FileEditorState readState(@NotNull Element element, @NotNull Project project, @NotNull VirtualFile virtualFile) {
return FileEditorState.INSTANCE;
}
@Override
public void writeState(@NotNull FileEditorState fileEditorState, @NotNull Project project, @NotNull Element element) {
}
@NotNull
@Override
public String getEditorTypeId() {
return "MarkdownPreview";
}
@NotNull
@Override
public FileEditorPolicy getPolicy() {
return FileEditorPolicy.PLACE_AFTER_DEFAULT_EDITOR;
}
@Override
public boolean isDumbAware() {
return true;
}
}