diff options
author | Tor Norbye <tnorbye@google.com> | 2014-09-18 11:43:07 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-09-18 11:43:28 -0700 |
commit | e782c57d74000722f9db4c9426317410520670c6 (patch) | |
tree | 6e5d3e8934107ffabb7661f8bfc0e1a08eb37faf /python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions | |
parent | c3d3a90f6b4ead083d63e28e6b9fcea93d675678 (diff) | |
download | idea-e782c57d74000722f9db4c9426317410520670c6.tar.gz |
Snapshot idea/138.2210 from git://git.jetbrains.org/idea/community.git
Change-Id: I8f0204d7887ee78cf1fd8c09f936c5afff0edd2f
Diffstat (limited to 'python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions')
8 files changed, 439 insertions, 80 deletions
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/AddTaskWindow.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/AddTaskWindow.java index ff88cea5fd42..0bc631dbd784 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/AddTaskWindow.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/AddTaskWindow.java @@ -13,6 +13,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.coursecreator.CCProjectService; import org.jetbrains.plugins.coursecreator.format.*; import org.jetbrains.plugins.coursecreator.ui.CreateTaskWindowDialog; @@ -59,12 +60,12 @@ public class AddTaskWindow extends DumbAwareAction { } int index = taskFile.getTaskWindows().size() + 1; taskFile.addTaskWindow(taskWindow, index); - taskWindow.drawHighlighter(editor); + taskWindow.drawHighlighter(editor, false); DaemonCodeAnalyzerImpl.getInstance(project).restart(file); } @Override - public void update(AnActionEvent event) { + public void update(@NotNull AnActionEvent event) { final Presentation presentation = event.getPresentation(); final Project project = event.getData(CommonDataKeys.PROJECT); if (project == null) { diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRename.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRename.java new file mode 100644 index 000000000000..321a86a5ba35 --- /dev/null +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRename.java @@ -0,0 +1,97 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.coursecreator.actions; + +import com.intellij.ide.IdeView; +import com.intellij.ide.projectView.ProjectView; +import com.intellij.ide.util.DirectoryChooserUtil; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.Presentation; +import com.intellij.openapi.project.DumbAwareAction; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.coursecreator.CCProjectService; +import org.jetbrains.plugins.coursecreator.format.Course; + +import javax.swing.*; + +public abstract class CCRename extends DumbAwareAction { + public CCRename(String text, String description, Icon icon) { + super(text, description, icon); + } + + @Override + public void update(@NotNull AnActionEvent event) { + final Presentation presentation = event.getPresentation(); + final Project project = event.getData(CommonDataKeys.PROJECT); + if (project == null) { + presentation.setVisible(false); + presentation.setEnabled(false); + return; + } + + final IdeView view = event.getData(LangDataKeys.IDE_VIEW); + if (view == null) { + presentation.setVisible(false); + presentation.setEnabled(false); + return; + } + + final PsiDirectory[] directories = view.getDirectories(); + if (directories.length == 0) { + presentation.setVisible(false); + presentation.setEnabled(false); + return; + } + final PsiFile file = CommonDataKeys.PSI_FILE.getData(event.getDataContext()); + final PsiDirectory directory = DirectoryChooserUtil.getOrChooseDirectory(view); + if (file != null ||directory == null || !directory.getName().contains(getFolderName())) { + presentation.setEnabled(false); + presentation.setVisible(false); + return; + } + presentation.setVisible(true); + presentation.setEnabled(true); + } + + public abstract String getFolderName(); + + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + final IdeView view = e.getData(LangDataKeys.IDE_VIEW); + final Project project = e.getData(CommonDataKeys.PROJECT); + + if (view == null || project == null) { + return; + } + final PsiDirectory directory = DirectoryChooserUtil.getOrChooseDirectory(view); + if (directory == null || !directory.getName().contains(getFolderName())) { + return; + } + Course course = CCProjectService.getInstance(project).getCourse(); + if (course == null) { + return; + } + if (!processRename(project, directory, course)) return; + ProjectView.getInstance(project).refresh(); + } + + public abstract boolean processRename(Project project, PsiDirectory directory, Course course); +} diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameLesson.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameLesson.java new file mode 100644 index 000000000000..3f580454ed6e --- /dev/null +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameLesson.java @@ -0,0 +1,48 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.coursecreator.actions; + +import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.Messages; +import com.intellij.psi.PsiDirectory; +import org.jetbrains.plugins.coursecreator.format.Course; +import org.jetbrains.plugins.coursecreator.format.Lesson; + +public class CCRenameLesson extends CCRename { + + public CCRenameLesson() { + super("Rename Lesson", "Rename Lesson", null); + } + + @Override + public String getFolderName() { + return "lesson"; + } + + @Override + public boolean processRename(Project project, PsiDirectory directory, Course course) { + Lesson lesson = course.getLesson(directory.getName()); + if (lesson == null) { + return false; + } + String newName = Messages.showInputDialog(project, "Enter new name", "Rename " + getFolderName(), null); + if (newName == null) { + return false; + } + lesson.setName(newName); + return true; + } +} diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameTask.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameTask.java new file mode 100644 index 000000000000..342621bf0d47 --- /dev/null +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameTask.java @@ -0,0 +1,57 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.coursecreator.actions; + +import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.Messages; +import com.intellij.psi.PsiDirectory; +import org.jetbrains.plugins.coursecreator.format.Course; +import org.jetbrains.plugins.coursecreator.format.Lesson; +import org.jetbrains.plugins.coursecreator.format.Task; + +public class CCRenameTask extends CCRename { + public CCRenameTask() { + super("Rename Task", "Rename Task", null); + } + + @Override + public String getFolderName() { + return "task"; + } + + @Override + public boolean processRename(Project project, PsiDirectory directory, Course course) { + PsiDirectory lessonDir = directory.getParent(); + if (lessonDir == null || !lessonDir.getName().contains("lesson")) { + return false; + } + Lesson lesson = course.getLesson(lessonDir.getName()); + if (lesson == null) { + return false; + } + Task task = lesson.getTask(directory.getName()); + if (task == null) { + return false; + } + String newName = Messages.showInputDialog(project, "Enter new name", "Rename " + getFolderName(), null); + if (newName == null) { + return false; + } + task.setName(newName); + return true; + + } +} diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowPreview.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowPreview.java new file mode 100644 index 000000000000..bccaacaf1957 --- /dev/null +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowPreview.java @@ -0,0 +1,104 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.coursecreator.actions; + +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.Presentation; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.fileEditor.FileEditorManager; +import com.intellij.openapi.project.DumbAwareAction; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiFile; +import com.intellij.util.containers.hash.HashMap; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.coursecreator.CCProjectService; +import org.jetbrains.plugins.coursecreator.format.*; + +import java.util.Map; + +public class CCShowPreview extends DumbAwareAction { + public CCShowPreview() { + super("Show preview","Show preview", null); + } + + @Override + public void update(@NotNull AnActionEvent e) { + Presentation presentation = e.getPresentation(); + presentation.setEnabled(false); + presentation.setVisible(false); + final PsiFile file = CommonDataKeys.PSI_FILE.getData(e.getDataContext()); + if (file != null && file.getName().contains(".answer")) { + presentation.setEnabled(true); + presentation.setVisible(true); + } + } + + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + final Project project = e.getProject(); + if (project == null) { + return; + } + final PsiFile file = CommonDataKeys.PSI_FILE.getData(e.getDataContext()); + if (file == null || !file.getName().contains(".answer")) { + return; + } + final PsiDirectory taskDir = file.getContainingDirectory(); + if (taskDir == null) { + return; + } + PsiDirectory lessonDir = taskDir.getParentDirectory(); + if (lessonDir == null) { + return; + } + Course course = CCProjectService.getInstance(project).getCourse(); + if (course == null) { + return; + } + Lesson lesson = course.getLesson(lessonDir.getName()); + Task task = lesson.getTask(taskDir.getName()); + TaskFile taskFile = task.getTaskFile(file.getName()); + final Map<TaskFile, TaskFile> taskFilesCopy = new HashMap<TaskFile, TaskFile>(); + for (final Map.Entry<String, TaskFile> entry : task.getTaskFiles().entrySet()) { + if (entry.getValue() == taskFile) { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + CreateCourseArchive.createUserFile(project, taskFilesCopy, taskDir.getVirtualFile(), taskDir.getVirtualFile(), entry); + } + }); + } + } + String userFileName = FileUtil.getNameWithoutExtension(file.getName()) + ".py"; + VirtualFile userFile = taskDir.getVirtualFile().findChild(userFileName); + if (userFile != null) { + FileEditorManager.getInstance(project).openFile(userFile, true); + Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); + if (editor == null) { + return; + } + for (TaskWindow taskWindow : taskFile.getTaskWindows()) { + taskWindow.drawHighlighter(editor, true); + } + CreateCourseArchive.resetTaskFiles(taskFilesCopy); + } + } +}
\ No newline at end of file diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateCourseArchive.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateCourseArchive.java index 05428f4e82d1..8db49156c987 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateCourseArchive.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateCourseArchive.java @@ -18,6 +18,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.util.io.ZipUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.coursecreator.CCProjectService; import org.jetbrains.plugins.coursecreator.StudyDocumentListener; import org.jetbrains.plugins.coursecreator.format.*; @@ -29,8 +30,8 @@ import java.util.zip.ZipOutputStream; public class CreateCourseArchive extends DumbAwareAction { private static final Logger LOG = Logger.getInstance(CreateCourseArchive.class.getName()); - String myZipName; - String myLocationDir; + private String myZipName; + private String myLocationDir; public void setZipName(String zipName) { myZipName = zipName; @@ -60,46 +61,124 @@ public class CreateCourseArchive extends DumbAwareAction { } final VirtualFile baseDir = project.getBaseDir(); final Map<String, Lesson> lessons = course.getLessonsMap(); - //List<FileEditor> editorList = new ArrayList<FileEditor>(); - Map<VirtualFile, TaskFile> taskFiles = new HashMap<VirtualFile, TaskFile>(); + //map to store initial task file + final Map<TaskFile, TaskFile> taskFiles = new HashMap<TaskFile, TaskFile>(); for (Map.Entry<String, Lesson> lesson : lessons.entrySet()) { final VirtualFile lessonDir = baseDir.findChild(lesson.getKey()); if (lessonDir == null) continue; for (Map.Entry<String, Task> task : lesson.getValue().myTasksMap.entrySet()) { final VirtualFile taskDir = lessonDir.findChild(task.getKey()); if (taskDir == null) continue; - for (Map.Entry<String, TaskFile> entry : task.getValue().task_files.entrySet()) { - final VirtualFile file = taskDir.findChild(entry.getKey()); - if (file == null) continue; - final Document document = FileDocumentManager.getInstance().getDocument(file); - if (document == null) continue; - final TaskFile taskFile = entry.getValue(); - document.addDocumentListener(new InsertionListener(taskFile)); - taskFiles.put(file, taskFile); - taskFile.setTrackChanges(false); - Collections.sort(taskFile.getTaskWindows()); - for (int i = taskFile.getTaskWindows().size() - 1; i >=0 ; i--) { - final TaskWindow taskWindow = taskFile.getTaskWindows().get(i); - final String taskText = taskWindow.getTaskText(); - final int lineStartOffset = document.getLineStartOffset(taskWindow.line); - final int offset = lineStartOffset + taskWindow.start; - CommandProcessor.getInstance().executeCommand(project, new Runnable() { - @Override - public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - document.replaceString(offset, offset + taskWindow.getReplacementLength(), taskText); - FileDocumentManager.getInstance().saveDocument(document); - } - }); - } - }, "x", "qwe"); - } + for (final Map.Entry<String, TaskFile> entry : task.getValue().task_files.entrySet()) { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + createUserFile(project, taskFiles, taskDir, taskDir, entry); + } + }); } } } generateJson(project); + packCourse(baseDir, lessons); + resetTaskFiles(taskFiles); + synchronize(project); + } + + public static void createUserFile(@NotNull final Project project, + @NotNull final Map<TaskFile, TaskFile> taskFilesCopy, + @NotNull final VirtualFile userFileDir, + @NotNull final VirtualFile answerFileDir, + @NotNull final Map.Entry<String, TaskFile> taskFiles) { + final String name = taskFiles.getKey(); + VirtualFile file = userFileDir.findChild(name); + if (file != null) { + try { + file.delete(project); + } + catch (IOException e) { + LOG.error(e); + } + } + try { + userFileDir.createChildData(project, name); + } + catch (IOException e) { + LOG.error(e); + } + + file = userFileDir.findChild(name); + assert file != null; + String answerFileName = file.getNameWithoutExtension() + ".answer"; + VirtualFile answerFile = answerFileDir.findChild(answerFileName); + if (answerFile == null) { + return; + } + final Document answerDocument = FileDocumentManager.getInstance().getDocument(answerFile); + if (answerDocument == null) { + return; + } + final Document document = FileDocumentManager.getInstance().getDocument(file); + if (document == null) return; + final TaskFile taskFile = taskFiles.getValue(); + TaskFile taskFileSaved = new TaskFile(); + taskFile.copy(taskFileSaved); + CommandProcessor.getInstance().executeCommand(project, new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + document.replaceString(0, document.getTextLength(), answerDocument.getText()); + } + }); + } + }, "x", "qwe"); + InsertionListener listener = new InsertionListener(taskFile); + document.addDocumentListener(listener); + taskFilesCopy.put(taskFile, taskFileSaved); + Collections.sort(taskFile.getTaskWindows()); + for (int i = taskFile.getTaskWindows().size() - 1; i >= 0; i--) { + final TaskWindow taskWindow = taskFile.getTaskWindows().get(i); + replaceTaskWindow(project, document, taskWindow); + } + document.removeDocumentListener(listener); + } + + private static void replaceTaskWindow(@NotNull final Project project, + @NotNull final Document document, + @NotNull final TaskWindow taskWindow) { + final String taskText = taskWindow.getTaskText(); + final int lineStartOffset = document.getLineStartOffset(taskWindow.line); + final int offset = lineStartOffset + taskWindow.start; + CommandProcessor.getInstance().executeCommand(project, new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + document.replaceString(offset, offset + taskWindow.getReplacementLength(), taskText); + FileDocumentManager.getInstance().saveDocument(document); + } + }); + } + }, "x", "qwe"); + } + + private static void synchronize(@NotNull final Project project) { + VirtualFileManager.getInstance().refreshWithoutFileWatcher(true); + ProjectView.getInstance(project).refresh(); + } + + public static void resetTaskFiles(@NotNull final Map<TaskFile, TaskFile> taskFiles) { + for (Map.Entry<TaskFile, TaskFile> entry : taskFiles.entrySet()) { + TaskFile realTaskFile = entry.getKey(); + TaskFile savedTaskFile = entry.getValue(); + realTaskFile.update(savedTaskFile); + } + } + + private void packCourse(@NotNull final VirtualFile baseDir, @NotNull final Map<String, Lesson> lessons) { try { File zipFile = new File(myLocationDir, myZipName + ".zip"); ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile))); @@ -108,7 +187,12 @@ public class CreateCourseArchive extends DumbAwareAction { final VirtualFile lessonDir = baseDir.findChild(entry.getKey()); if (lessonDir == null) continue; - ZipUtil.addFileOrDirRecursively(zos, null, new File(lessonDir.getPath()), lessonDir.getName(), null, null); + ZipUtil.addFileOrDirRecursively(zos, null, new File(lessonDir.getPath()), lessonDir.getName(), new FileFilter() { + @Override + public boolean accept(File pathname) { + return !pathname.getName().contains(".answer"); + } + }, null); } ZipUtil.addFileOrDirRecursively(zos, null, new File(baseDir.getPath(), "hints"), "hints", null, null); ZipUtil.addFileOrDirRecursively(zos, null, new File(baseDir.getPath(), "course.json"), "course.json", null, null); @@ -119,36 +203,9 @@ public class CreateCourseArchive extends DumbAwareAction { catch (IOException e1) { LOG.error(e1); } - - for (Map.Entry<VirtualFile, TaskFile> entry: taskFiles.entrySet()) { - TaskFile value = entry.getValue(); - final Document document = FileDocumentManager.getInstance().getDocument(entry.getKey()); - if (document == null) { - continue; - } - for (final TaskWindow taskWindow : value.getTaskWindows()){ - final int lineStartOffset = document.getLineStartOffset(taskWindow.line); - final int offset = lineStartOffset + taskWindow.start; - CommandProcessor.getInstance().executeCommand(project, new Runnable() { - @Override - public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - document.replaceString(offset, offset + taskWindow.length, taskWindow.getPossibleAnswer()); - FileDocumentManager.getInstance().saveDocument(document); - } - }); - } - }, "x", "qwe"); - } - value.setTrackChanges(true); - } - VirtualFileManager.getInstance().refreshWithoutFileWatcher(true); - ProjectView.getInstance(project).refresh(); } - private void generateJson(Project project) { + private static void generateJson(@NotNull final Project project) { final CCProjectService service = CCProjectService.getInstance(project); final Course course = service.getCourse(); final Gson gson = new GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create(); @@ -179,7 +236,7 @@ public class CreateCourseArchive extends DumbAwareAction { } } - private class InsertionListener extends StudyDocumentListener { + private static class InsertionListener extends StudyDocumentListener { public InsertionListener(TaskFile taskFile) { super(taskFile); @@ -187,12 +244,7 @@ public class CreateCourseArchive extends DumbAwareAction { @Override protected void updateTaskWindowLength(CharSequence fragment, TaskWindow taskWindow, int change) { - //we don't need to update task window length - } - - @Override - protected boolean needModify() { - return true; + //we don't need to update task window length } } }
\ No newline at end of file diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTask.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTask.java index 0940135b97be..57a37b3f4194 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTask.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTask.java @@ -18,6 +18,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.util.PlatformIcons; +import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.coursecreator.CCProjectService; import org.jetbrains.plugins.coursecreator.format.Course; import org.jetbrains.plugins.coursecreator.format.Lesson; @@ -29,7 +30,7 @@ public class CreateTask extends DumbAwareAction { } @Override - public void actionPerformed(AnActionEvent e) { + public void actionPerformed(final AnActionEvent e) { final IdeView view = e.getData(LangDataKeys.IDE_VIEW); final Project project = e.getData(CommonDataKeys.PROJECT); @@ -42,7 +43,7 @@ public class CreateTask extends DumbAwareAction { final CCProjectService service = CCProjectService.getInstance(project); final Course course = service.getCourse(); final Lesson lesson = course.getLesson(directory.getName()); - final int size = lesson.getTasklist().size(); + final int size = lesson.getTaskList().size(); final String taskName = Messages.showInputDialog("Name:", "Task Name", null, "task" + (size + 1), null); if (taskName == null) return; @@ -54,17 +55,16 @@ public class CreateTask extends DumbAwareAction { if (taskDirectory != null) { final FileTemplate template = FileTemplateManager.getInstance().getInternalTemplate("task.html"); final FileTemplate testsTemplate = FileTemplateManager.getInstance().getInternalTemplate("tests"); - final FileTemplate taskTemplate = FileTemplateManager.getInstance().getInternalTemplate("task.py"); + final FileTemplate taskTemplate = FileTemplateManager.getInstance().getInternalTemplate("task.answer"); try { final PsiElement taskFile = FileTemplateUtil.createFromTemplate(template, "task.html", null, taskDirectory); final PsiElement testsFile = FileTemplateUtil.createFromTemplate(testsTemplate, "tests.py", null, taskDirectory); - final PsiElement taskPyFile = FileTemplateUtil.createFromTemplate(taskTemplate, "file1" + ".py", null, taskDirectory); + final PsiElement taskPyFile = FileTemplateUtil.createFromTemplate(taskTemplate, "file1", null, taskDirectory); final Task task = new Task(taskName); - task.addTaskFile(taskPyFile.getContainingFile().getName(), size + 1); + task.addTaskFile("file1.py", size + 1); task.setIndex(size + 1); lesson.addTask(task, taskDirectory); - ApplicationManager.getApplication().invokeLater(new Runnable() { @Override public void run() { @@ -84,7 +84,7 @@ public class CreateTask extends DumbAwareAction { } @Override - public void update(AnActionEvent event) { + public void update(@NotNull AnActionEvent event) { final Presentation presentation = event.getPresentation(); final Project project = event.getData(CommonDataKeys.PROJECT); if (project == null) { diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTaskFile.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTaskFile.java index 5aafcebefd6e..368be275a5a4 100644 --- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTaskFile.java +++ b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CreateTaskFile.java @@ -55,10 +55,10 @@ public class CreateTaskFile extends DumbAwareAction { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - final FileTemplate taskTemplate = FileTemplateManager.getInstance().getInternalTemplate("task.py"); + final FileTemplate taskTemplate = FileTemplateManager.getInstance().getInternalTemplate("task.answer"); try { - final PsiElement taskPyFile = FileTemplateUtil.createFromTemplate(taskTemplate, taskFileName + ".py", null, taskDir); - task.addTaskFile(taskPyFile.getContainingFile().getName(), index); + final PsiElement taskPyFile = FileTemplateUtil.createFromTemplate(taskTemplate, taskFileName, null, taskDir); + task.addTaskFile(taskFileName + ".py", index); ApplicationManager.getApplication().invokeLater(new Runnable() { @Override public void run() { |