From 2710d59344f385f77d78354ea41fc35542631696 Mon Sep 17 00:00:00 2001 From: Liana Bakradze Date: Tue, 2 Aug 2016 19:35:23 +0300 Subject: [PATCH] EDU-425 Show actual lesson name --- .../handlers/CCRenameHandler.java | 5 +++ .../student/resources/META-INF/plugin.xml | 1 + .../edu/learning/StudyTabTitleProvider.java | 45 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 python/educational-core/student/src/com/jetbrains/edu/learning/StudyTabTitleProvider.java diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/handlers/CCRenameHandler.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/handlers/CCRenameHandler.java index e98ba1ab133f..9814a6631fe2 100644 --- a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/handlers/CCRenameHandler.java +++ b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/handlers/CCRenameHandler.java @@ -4,6 +4,7 @@ import com.intellij.ide.projectView.ProjectView; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.text.StringUtil; @@ -50,6 +51,10 @@ public abstract class CCRenameHandler implements RenameHandler { } rename(project, course, directory); ProjectView.getInstance(project).refresh(); + FileEditorManagerEx managerEx = FileEditorManagerEx.getInstanceEx(project); + for (VirtualFile virtualFile : managerEx.getOpenFiles()) { + managerEx.updateFilePresentation(virtualFile); + } } protected abstract void rename(@NotNull Project project, @NotNull Course course, @NotNull PsiDirectory directory); diff --git a/python/educational-core/student/resources/META-INF/plugin.xml b/python/educational-core/student/resources/META-INF/plugin.xml index a5ac8e742d05..c0ad88e0a788 100644 --- a/python/educational-core/student/resources/META-INF/plugin.xml +++ b/python/educational-core/student/resources/META-INF/plugin.xml @@ -106,6 +106,7 @@ + diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyTabTitleProvider.java b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyTabTitleProvider.java new file mode 100644 index 000000000000..e2a96a1d6c42 --- /dev/null +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyTabTitleProvider.java @@ -0,0 +1,45 @@ +package com.jetbrains.edu.learning; + +import com.intellij.openapi.fileEditor.impl.EditorTabTitleProvider; +import com.intellij.openapi.fileEditor.impl.UniqueNameEditorTabTitleProvider; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VirtualFile; +import com.jetbrains.edu.learning.core.EduNames; +import com.jetbrains.edu.learning.courseFormat.Lesson; +import com.jetbrains.edu.learning.courseFormat.Task; +import com.jetbrains.edu.learning.courseFormat.TaskFile; +import org.jetbrains.annotations.Nullable; + +import java.io.File; + +public class StudyTabTitleProvider implements EditorTabTitleProvider { + @Nullable + @Override + public String getEditorTabTitle(Project project, VirtualFile file) { + TaskFile taskFile = StudyUtils.getTaskFile(project, file); + if (taskFile == null) { + return null; + } + String title = new UniqueNameEditorTabTitleProvider().getEditorTabTitle(project, file); + if (title == null) { + return null; + } + String[] split = title.split(File.separator); + for (int i = 0; i < split.length; i++) { + String part = split[i]; + Task task = taskFile.getTask(); + VirtualFile taskDir = task.getTaskDir(project); + if (taskDir != null && part.equals(taskDir.getName())) { + split[i] = task.getName(); + continue; + } + Lesson lesson = task.getLesson(); + int lessonIndex = lesson.getIndex(); + if (part.equals(EduNames.LESSON + lessonIndex)) { + split[i] = lesson.getName(); + } + } + return StringUtil.join(split, File.separator); + } +}