mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed NullPointerException on Select in editor action
This commit is contained in:
+2
-2
@@ -36,11 +36,11 @@ import java.util.regex.Pattern;
|
||||
public class StudyDirectoryProjectGenerator extends PythonProjectGenerator implements DirectoryProjectGenerator {
|
||||
private static final Logger LOG = Logger.getInstance(StudyDirectoryProjectGenerator.class.getName());
|
||||
private static final String REPO_URL = "https://github.com/JetBrains/pycharm-courses/archive/master.zip";
|
||||
private static final String USER_NAME = "medvector";
|
||||
private static final String USER_NAME = "PyCharm";
|
||||
private static final String COURSE_META_FILE = "course.json";
|
||||
private static final String COURSE_NAME_ATTRIBUTE = "name";
|
||||
private static final Pattern CACHE_PATTERN = Pattern.compile("(name=(.*)) (path=(.*course.json)) (author=(.*)) (description=(.*))");
|
||||
private static final String REPOSITORY_NAME = "initial-python-course";
|
||||
private static final String REPOSITORY_NAME = "pycharm-courses";
|
||||
public static final String AUTHOR_ATTRIBUTE = "author";
|
||||
private final File myCoursesDir = new File(PathManager.getConfigPath(), "courses");
|
||||
private static final String CACHE_NAME = "courseNames.txt";
|
||||
|
||||
@@ -5,11 +5,10 @@ import com.intellij.ide.structureView.StructureViewBuilder;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorLocation;
|
||||
import com.intellij.openapi.fileEditor.FileEditorState;
|
||||
import com.intellij.openapi.fileEditor.FileEditorStateLevel;
|
||||
import com.intellij.openapi.editor.impl.DocumentImpl;
|
||||
import com.intellij.openapi.fileEditor.*;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
|
||||
import com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl;
|
||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider;
|
||||
@@ -17,6 +16,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.Navigatable;
|
||||
import com.intellij.ui.HideableTitledPanel;
|
||||
import com.jetbrains.python.edu.StudyDocumentListener;
|
||||
import com.jetbrains.python.edu.StudyTaskManager;
|
||||
@@ -40,7 +40,7 @@ import java.util.Map;
|
||||
* Implementation of StudyEditor which has panel with special buttons and task text
|
||||
* also @see {@link com.jetbrains.python.edu.editor.StudyFileEditorProvider}
|
||||
*/
|
||||
public class StudyEditor implements FileEditor {
|
||||
public class StudyEditor implements TextEditor {
|
||||
private static final String TASK_TEXT_HEADER = "Task Text";
|
||||
private final FileEditor myDefaultEditor;
|
||||
private final JComponent myComponent;
|
||||
@@ -49,6 +49,7 @@ public class StudyEditor implements FileEditor {
|
||||
private JButton myPrevTaskButton;
|
||||
private JButton myRefreshButton;
|
||||
private static final Map<Document, StudyDocumentListener> myDocumentListeners = new HashMap<Document, StudyDocumentListener>();
|
||||
private Project myProject;
|
||||
|
||||
public JButton getCheckButton() {
|
||||
return myCheckButton;
|
||||
@@ -77,14 +78,15 @@ public class StudyEditor implements FileEditor {
|
||||
}
|
||||
|
||||
public StudyEditor(@NotNull final Project project, @NotNull final VirtualFile file) {
|
||||
myDefaultEditor = TextEditorProvider.getInstance().createEditor(project, file);
|
||||
myProject = project;
|
||||
myDefaultEditor = TextEditorProvider.getInstance().createEditor(myProject, file);
|
||||
myComponent = myDefaultEditor.getComponent();
|
||||
JPanel studyPanel = new JPanel();
|
||||
studyPanel.setLayout(new BoxLayout(studyPanel, BoxLayout.Y_AXIS));
|
||||
TaskFile taskFile = StudyTaskManager.getInstance(project).getTaskFile(file);
|
||||
TaskFile taskFile = StudyTaskManager.getInstance(myProject).getTaskFile(file);
|
||||
if (taskFile != null) {
|
||||
Task currentTask = taskFile.getTask();
|
||||
String taskText = currentTask.getResourceText(project, currentTask.getText(), false);
|
||||
String taskText = currentTask.getResourceText(myProject, currentTask.getText(), false);
|
||||
final JLabel taskTextLabel = new JLabel(taskText);
|
||||
taskTextLabel.setBorder(new EmptyBorder(15, 20, 0, 100));
|
||||
int fontSize = EditorColorsManager.getInstance().getGlobalScheme().getEditorFontSize();
|
||||
@@ -97,13 +99,13 @@ public class StudyEditor implements FileEditor {
|
||||
JPanel taskActionsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
|
||||
studyButtonPanel.add(taskActionsPanel);
|
||||
studyButtonPanel.add(new JPanel());
|
||||
initializeButtons(project, taskActionsPanel, taskFile);
|
||||
initializeButtons(taskActionsPanel, taskFile);
|
||||
studyPanel.add(studyButtonPanel);
|
||||
myComponent.add(studyPanel, BorderLayout.NORTH);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeButtons(@NotNull final Project project, @NotNull final JPanel taskActionsPanel, @NotNull final TaskFile taskFile) {
|
||||
private void initializeButtons(@NotNull final JPanel taskActionsPanel, @NotNull final TaskFile taskFile) {
|
||||
myCheckButton = addButton(taskActionsPanel, "Check task", StudyIcons.Resolve);
|
||||
myPrevTaskButton = addButton(taskActionsPanel, "Prev Task", StudyIcons.Prev);
|
||||
myNextTaskButton = addButton(taskActionsPanel, "Next Task", StudyIcons.Next);
|
||||
@@ -114,7 +116,7 @@ public class StudyEditor implements FileEditor {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudyRunAction studyRunAction = (StudyRunAction)ActionManager.getInstance().getAction("StudyRunAction");
|
||||
studyRunAction.run(project);
|
||||
studyRunAction.run(myProject);
|
||||
}
|
||||
});
|
||||
JButton watchInputButton = addButton(taskActionsPanel, "Watch test input", StudyIcons.WatchInput);
|
||||
@@ -122,7 +124,7 @@ public class StudyEditor implements FileEditor {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudyEditInputAction studyEditInputAction = (StudyEditInputAction)ActionManager.getInstance().getAction("WatchInputAction");
|
||||
studyEditInputAction.showInput(project);
|
||||
studyEditInputAction.showInput(myProject);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -130,7 +132,7 @@ public class StudyEditor implements FileEditor {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudyCheckAction studyCheckAction = (StudyCheckAction)ActionManager.getInstance().getAction("CheckAction");
|
||||
studyCheckAction.check(project);
|
||||
studyCheckAction.check(myProject);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -138,7 +140,7 @@ public class StudyEditor implements FileEditor {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudyNextStudyTaskAction studyNextTaskAction = (StudyNextStudyTaskAction)ActionManager.getInstance().getAction("NextTaskAction");
|
||||
studyNextTaskAction.navigateTask(project);
|
||||
studyNextTaskAction.navigateTask(myProject);
|
||||
}
|
||||
});
|
||||
myPrevTaskButton.addActionListener(new ActionListener() {
|
||||
@@ -146,14 +148,14 @@ public class StudyEditor implements FileEditor {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudyPreviousStudyTaskAction
|
||||
prevTaskAction = (StudyPreviousStudyTaskAction)ActionManager.getInstance().getAction("PreviousTaskAction");
|
||||
prevTaskAction.navigateTask(project);
|
||||
prevTaskAction.navigateTask(myProject);
|
||||
}
|
||||
});
|
||||
myRefreshButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudyRefreshTaskAction studyRefreshTaskAction = (StudyRefreshTaskAction)ActionManager.getInstance().getAction("RefreshTaskAction");
|
||||
studyRefreshTaskAction.refresh(project);
|
||||
studyRefreshTaskAction.refresh(myProject);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -293,4 +295,27 @@ public class StudyEditor implements FileEditor {
|
||||
public static void removeListener(Document document) {
|
||||
myDocumentListeners.remove(document);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Editor getEditor() {
|
||||
if (myDefaultEditor instanceof TextEditor)
|
||||
return ((TextEditor)myDefaultEditor).getEditor();
|
||||
return EditorFactory.getInstance().createViewer(new DocumentImpl(""), myProject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canNavigateTo(@NotNull Navigatable navigatable) {
|
||||
if (myDefaultEditor instanceof TextEditor) {
|
||||
((TextEditor)myDefaultEditor).canNavigateTo(navigatable);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void navigateTo(@NotNull Navigatable navigatable) {
|
||||
if (myDefaultEditor instanceof TextEditor) {
|
||||
((TextEditor)myDefaultEditor).navigateTo(navigatable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user