blob: 631b5a9eaf4c2ee30ce52bf61d168e19790b0fc2 [file] [log] [blame]
package com.jetbrains.python.edu.editor;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorPolicy;
import com.intellij.openapi.fileEditor.FileEditorProvider;
import com.intellij.openapi.fileEditor.FileEditorState;
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import com.jetbrains.python.edu.StudyTaskManager;
import com.jetbrains.python.edu.course.TaskFile;
/**
* User: lia
* Date: 10.05.14
* Time: 12:45
*/
class StudyFileEditorProvider implements FileEditorProvider, DumbAware {
static final private String EDITOR_TYPE_ID = "StudyEditor";
final private FileEditorProvider defaultTextEditorProvider = TextEditorProvider.getInstance();
@Override
public boolean accept(@NotNull Project project, @NotNull VirtualFile file) {
TaskFile taskFile = StudyTaskManager.getInstance(project).getTaskFile(file);
return taskFile != null && !taskFile.isUserCreated();
}
@NotNull
@Override
public FileEditor createEditor(@NotNull Project project, @NotNull VirtualFile file) {
return new StudyEditor(project, file);
}
@Override
public void disposeEditor(@NotNull FileEditor editor) {
defaultTextEditorProvider.disposeEditor(editor);
}
@NotNull
@Override
public FileEditorState readState(@NotNull Element sourceElement, @NotNull Project project, @NotNull VirtualFile file) {
return defaultTextEditorProvider.readState(sourceElement, project, file);
}
@Override
public void writeState(@NotNull FileEditorState state, @NotNull Project project, @NotNull Element targetElement) {
defaultTextEditorProvider.writeState(state, project, targetElement);
}
@NotNull
@Override
public String getEditorTypeId() {
return EDITOR_TYPE_ID;
}
@NotNull
@Override
public FileEditorPolicy getPolicy() {
return FileEditorPolicy.HIDE_DEFAULT_EDITOR;
}
}