merge Edu-Intellij plugin into student plugin

This commit is contained in:
Liana.Bakradze
2017-03-07 12:16:39 +03:00
parent c3079ecaa0
commit 9262f72504
13 changed files with 201 additions and 2 deletions
+1 -1
View File
@@ -56,7 +56,6 @@
<module fileurl="file://$PROJECT_DIR$/platform/core-api/core-api.iml" filepath="$PROJECT_DIR$/platform/core-api/core-api.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/platform/core-impl/core-impl.iml" filepath="$PROJECT_DIR$/platform/core-impl/core-impl.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/python/educational-core/course-creator/course-creator.iml" filepath="$PROJECT_DIR$/python/educational-core/course-creator/course-creator.iml" group="python/educational/educational-core" />
<module fileurl="file://$PROJECT_DIR$/python/educational-python/course-creator-python/course-creator-python.iml" filepath="$PROJECT_DIR$/python/educational-python/course-creator-python/course-creator-python.iml" group="python/educational/educational-python" />
<module fileurl="file://$PROJECT_DIR$/plugins/coverage/coverage.iml" filepath="$PROJECT_DIR$/plugins/coverage/coverage.iml" group="plugins/coverage" />
<module fileurl="file://$PROJECT_DIR$/plugins/coverage-common/coverage-common.iml" filepath="$PROJECT_DIR$/plugins/coverage-common/coverage-common.iml" group="plugins/coverage" />
<module fileurl="file://$PROJECT_DIR$/plugins/coverage/coverage_rt/coverage_rt.iml" filepath="$PROJECT_DIR$/plugins/coverage/coverage_rt/coverage_rt.iml" group="plugins/coverage" />
@@ -257,6 +256,7 @@
<module fileurl="file://$PROJECT_DIR$/platform/structure-view-impl/structure-view-impl.iml" filepath="$PROJECT_DIR$/platform/structure-view-impl/structure-view-impl.iml" group="platform" />
<module fileurl="file://$PROJECT_DIR$/python/educational-core/student/student.iml" filepath="$PROJECT_DIR$/python/educational-core/student/student.iml" group="python/educational/educational-core" />
<module fileurl="file://$PROJECT_DIR$/python/educational-python/student-python/student-python.iml" filepath="$PROJECT_DIR$/python/educational-python/student-python/student-python.iml" group="python/educational/educational-python" />
<module fileurl="file://$PROJECT_DIR$/python/educational-core/edu-intellij/edu-intellij.iml" filepath="$PROJECT_DIR$/python/educational-core/edu-intellij/edu-intellij.iml" group="plugins/python/educational/educational-core" />
<module fileurl="file://$PROJECT_DIR$/plugins/svn4idea/svn4idea.iml" filepath="$PROJECT_DIR$/plugins/svn4idea/svn4idea.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/plugins/svn4idea/svn4idea-tests.iml" filepath="$PROJECT_DIR$/plugins/svn4idea/svn4idea-tests.iml" group="plugins/VCS" />
<module fileurl="file://$PROJECT_DIR$/plugins/tasks/tasks-api/tasks-api.iml" filepath="$PROJECT_DIR$/plugins/tasks/tasks-api/tasks-api.iml" group="plugins/tasks" />
+1
View File
@@ -79,6 +79,7 @@ private static String getIdeaPath() {
project(':student') {
dependencies {
compile project(':edu-intellij')
compile fileTree(dir: 'lib', include: ['*.jar'])
}
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="platform-impl" />
<orderEntry type="module" module-name="lang-api" />
<orderEntry type="module" module-name="idea-ui" />
</component>
</module>
@@ -0,0 +1,18 @@
import org.junit.runner.Description;
import org.junit.runner.JUnitCore;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
public class EduTestRunner {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> testClass = EduTestRunner.class.getClassLoader().loadClass(args[0]);
JUnitCore runner = new JUnitCore();
runner.addListener(new RunListener() {
@Override
public void testFailure(Failure failure) throws Exception {
System.out.println("#educational_plugin FAILED + " + failure.getMessage());
}
});
runner.run(testClass);
}
}
@@ -0,0 +1,13 @@
package com.jetbrains.edu.intellij;
import com.intellij.lang.LanguageExtension;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
@SuppressWarnings("unused") //used in other educational plugins that are stored in separate repository
public interface EduCourseConfigurator {
String EP_NAME = "com.jetbrains.edu.intellij.courseConfigurator";
LanguageExtension<EduCourseConfigurator> INSTANCE = new LanguageExtension<>(EP_NAME);
default void configureModule(@NotNull final Project project) {}
}
@@ -0,0 +1,9 @@
package com.jetbrains.edu.intellij;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.platform.ProjectTemplate;
public interface EduIntelliJProjectTemplate extends ProjectTemplate {
ExtensionPointName<EduIntelliJProjectTemplate> EP_NAME =
ExtensionPointName.create("Edu.eduIntelliJProjectTemplate");
}
@@ -0,0 +1,33 @@
package com.jetbrains.edu.intellij;
import com.intellij.icons.AllIcons;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.platform.ProjectTemplate;
import com.intellij.platform.ProjectTemplatesFactory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@SuppressWarnings("unused") //used in other educational plugins that are stored in separate repository
public class EduIntelliJTemplateFactory extends ProjectTemplatesFactory {
private static final String GROUP_NAME = "Education";
@NotNull
@Override
public String[] getGroups() {
return new String[]{GROUP_NAME};
}
@NotNull
@Override
public ProjectTemplate[] createTemplates(@Nullable String group, WizardContext context) {
return ApplicationManager.getApplication().getExtensions(EduIntelliJProjectTemplate.EP_NAME);
}
@Override
public Icon getGroupIcon(String group) {
return AllIcons.Modules.Types.UserDefined;
}
}
@@ -0,0 +1,61 @@
package com.jetbrains.edu.intellij.android;
import com.intellij.ide.projectWizard.ProjectSettingsStep;
import com.intellij.ide.projectWizard.ProjectTemplateList;
import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard;
import com.intellij.ide.util.newProjectWizard.StepSequence;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import com.intellij.platform.ProjectTemplate;
import com.jetbrains.edu.intellij.EduIntelliJProjectTemplate;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class EduSelectCourseProjectWizard extends AbstractProjectWizard {
private StepSequence mySequence = new StepSequence();
EduSelectCourseProjectWizard() {
super("New Course", null, (String)null);
init();
}
protected void init() {
myWizardContext.setModulesProvider(ModulesProvider.EMPTY_MODULES_PROVIDER);
MyChooseCourseStep step = new MyChooseCourseStep();
mySequence.addCommonStep(step);
mySequence.addCommonFinishingStep(new ProjectSettingsStep(myWizardContext), null);
mySequence.getAllSteps().forEach(this::addStep);
super.init();
}
@Override
public StepSequence getSequence() {
return mySequence;
}
private class MyChooseCourseStep extends ModuleWizardStep {
private ProjectTemplateList myTemplateList = new ProjectTemplateList();
@Override
public JComponent getComponent() {
return myTemplateList;
}
@Override
public void updateDataModel() {
myWizardContext.setProjectTemplate(myTemplateList.getSelectedTemplate());
}
@Override
public void updateStep() {
List<ProjectTemplate> templates = new ArrayList<>();
Collections.addAll(templates, ApplicationManager.getApplication().getExtensions(EduIntelliJProjectTemplate.EP_NAME));
myTemplateList.setTemplates(templates, false);
}
}
}
@@ -0,0 +1,28 @@
package com.jetbrains.edu.intellij.android;
import com.intellij.icons.AllIcons;
import com.intellij.ide.impl.NewProjectUtil;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.jetbrains.edu.intellij.EduIntelliJProjectTemplate;
public class EduStartLearningAction extends AnAction {
public EduStartLearningAction() {
super(AllIcons.Modules.Types.UserDefined);
}
@Override
public void actionPerformed(AnActionEvent e) {
EduSelectCourseProjectWizard wizard = new EduSelectCourseProjectWizard();
NewProjectUtil.createNewProject(AnAction.getEventProject(e), wizard);
}
@Override
public void update(AnActionEvent e) {
if (ApplicationManager.getApplication().getExtensions(EduIntelliJProjectTemplate.EP_NAME).length < 1) {
e.getPresentation().setEnabledAndVisible(false);
}
}
}
+1 -1
View File
@@ -1 +1 @@
include 'student', 'course-creator'
include 'student', 'course-creator', 'edu-intellij'
@@ -0,0 +1,9 @@
<idea-plugin>
<actions>
<action id="Edu.StartLearn" class="com.jetbrains.edu.intellij.android.EduStartLearningAction" text="Start Learning"
description="Create New Educational Project">
<add-to-group group-id="WelcomeScreen.QuickStart" anchor="last"/>
<add-to-group group-id="FileMenu" anchor="last"/>
</action>
</actions>
</idea-plugin>
@@ -0,0 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<projectTemplatesFactory implementation="com.jetbrains.edu.intellij.EduIntelliJTemplateFactory"/>
</extensions>
</idea-plugin>
@@ -20,6 +20,8 @@
on how to target different products -->
<depends>com.intellij.modules.lang</depends>
<depends optional="true" config-file="android-dependencies.xml">com.intellij.modules.androidstudio</depends>
<depends optional="true" config-file="edu-intellij.xml">com.intellij.modules.java</depends>
<project-components>
<component>
@@ -35,6 +37,10 @@
</application-components>
<extensionPoints>
<extensionPoint qualifiedName="Edu.eduIntelliJProjectTemplate" interface="com.jetbrains.edu.intellij.EduIntelliJProjectTemplate"/>
<extensionPoint qualifiedName="Edu.courseConfigurator" beanClass="com.intellij.lang.LanguageExtensionPoint">
<with attribute="implementationClass" implements="com.jetbrains.edu.intellij.EduCourseConfigurator"/>
</extensionPoint>
<extensionPoint qualifiedName="Edu.StudyExecutor" beanClass="com.intellij.lang.LanguageExtensionPoint">
<with attribute="implementationClass" implements="com.jetbrains.edu.learning.checker.StudyExecutor"/>
</extensionPoint>