mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Add extension point to edu student plugin to provide action group for study tool window toolbar
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
<extensionPoints>
|
||||
<extensionPoint qualifiedName="Edu.StudyExecutor" beanClass="com.intellij.lang.LanguageExtensionPoint"/>
|
||||
<extensionPoint qualifiedName="Edu.StudyLanguageManager" beanClass="com.intellij.lang.LanguageExtensionPoint"/>
|
||||
<extensionPoint qualifiedName="Edu.studyActionProvider" interface="com.jetbrains.edu.learning.StudyActionProvider"/>
|
||||
</extensionPoints>
|
||||
|
||||
<actions>
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.jetbrains.edu.learning;
|
||||
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface StudyActionProvider {
|
||||
ExtensionPointName<StudyActionProvider> EP_NAME = ExtensionPointName.create("Edu.studyActionProvider");
|
||||
|
||||
@Nullable
|
||||
DefaultActionGroup getActionGroup(@NotNull Project project);
|
||||
|
||||
}
|
||||
+26
-4
@@ -35,8 +35,10 @@ import com.intellij.ui.components.JBScrollPane;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.jetbrains.edu.EduNames;
|
||||
import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.StudyActionProvider;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.actions.*;
|
||||
@@ -116,18 +118,38 @@ public class StudyToolWindow extends SimpleToolWindowPanel implements DataProvid
|
||||
}
|
||||
|
||||
private static JPanel createToolbarPanel(@NotNull final Project project) {
|
||||
final DefaultActionGroup group = getActionGroup(project);
|
||||
|
||||
final ActionToolbar actionToolBar = ActionManager.getInstance().createActionToolbar("Study", group, true);
|
||||
return JBUI.Panels.simplePanel(actionToolBar.getComponent());
|
||||
}
|
||||
|
||||
private static DefaultActionGroup getActionGroup(@NotNull final Project project) {
|
||||
StudyActionProvider[] extensions = StudyActionProvider.EP_NAME.getExtensions();
|
||||
DefaultActionGroup actionGroup = null;
|
||||
Course course = StudyTaskManager.getInstance(project).getCourse();
|
||||
if (course == null) {
|
||||
return createDefaultActionGroup(project);
|
||||
}
|
||||
for (StudyActionProvider actionProvider: extensions) {
|
||||
actionGroup = actionProvider.getActionGroup(project);
|
||||
if (actionGroup != null) break;
|
||||
}
|
||||
|
||||
return actionGroup == null ? createDefaultActionGroup(project) : actionGroup;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static DefaultActionGroup createDefaultActionGroup(@NotNull Project project) {
|
||||
final DefaultActionGroup group = new DefaultActionGroup();
|
||||
group.add(StudyCheckAction.createCheckAction(StudyTaskManager.getInstance(project).getCourse()));
|
||||
group.add(new StudyPreviousStudyTaskAction());
|
||||
group.add(new StudyNextStudyTaskAction());
|
||||
group.add(new StudyRefreshTaskFileAction());
|
||||
group.add(new StudyShowHintAction());
|
||||
|
||||
group.add(new StudyRunAction());
|
||||
group.add(new StudyEditInputAction());
|
||||
|
||||
final ActionToolbar actionToolBar = ActionManager.getInstance().createActionToolbar("Study", group, true);
|
||||
return JBUI.Panels.simplePanel(actionToolBar.getComponent());
|
||||
return group;
|
||||
}
|
||||
|
||||
static class StudyFileEditorManagerListener implements FileEditorManagerListener {
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
<extensions defaultExtensionNs="Edu">
|
||||
<StudyExecutor implementationClass="com.jetbrains.edu.learning.PyStudyExecutor" language="Python"/>
|
||||
<StudyLanguageManager implementationClass="com.jetbrains.edu.learning.PyStudyLanguageManager" language="Python"/>
|
||||
<studyActionProvider implementation="com.jetbrains.edu.learning.PyStudyActionProvider" />
|
||||
</extensions>
|
||||
<actions>
|
||||
<action id="WelcomeScreen.PythonIntro" class="com.jetbrains.edu.learning.actions.PyStudyIntroductionCourseAction"
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.jetbrains.edu.learning;
|
||||
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.actions.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PyStudyActionProvider implements StudyActionProvider {
|
||||
|
||||
@Override
|
||||
public DefaultActionGroup getActionGroup(@NotNull Project project) {
|
||||
Course course = StudyTaskManager.getInstance(project).getCourse();
|
||||
if (course != null && course.getLanguage().equals("Python") && course.getCourseType().equals("PyCharm")) {
|
||||
final DefaultActionGroup group = new DefaultActionGroup();
|
||||
|
||||
group.add(StudyCheckAction.createCheckAction(course));
|
||||
group.add(new StudyPreviousStudyTaskAction());
|
||||
group.add(new StudyNextStudyTaskAction());
|
||||
group.add(new StudyRefreshTaskFileAction());
|
||||
group.add(new StudyShowHintAction());
|
||||
|
||||
group.add(new StudyRunAction());
|
||||
group.add(new StudyEditInputAction());
|
||||
return group;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user