diff --git a/python/edu/course-creator/resources/META-INF/plugin.xml b/python/edu/course-creator/resources/META-INF/plugin.xml
deleted file mode 100644
index 0e7391d1a18b..000000000000
--- a/python/edu/course-creator/resources/META-INF/plugin.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
- org.jetbrains.plugins.coursecreator
- Course Creator for PyCharm Educational
- 1.2
-
-
-
-
-
-
-
-
-
-
- com.intellij.modules.python
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- org.jetbrains.plugins.coursecreator.CCProjectComponent
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/python/edu/course-creator/resources/icons/gutter.png b/python/edu/course-creator/resources/icons/gutter.png
deleted file mode 100644
index 244e6ca045c5..000000000000
Binary files a/python/edu/course-creator/resources/icons/gutter.png and /dev/null differ
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCAnswerFileType.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCAnswerFileType.java
deleted file mode 100644
index 0f3502d4ee6c..000000000000
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCAnswerFileType.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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;
-
-import com.jetbrains.python.PythonFileType;
-import org.jetbrains.annotations.NotNull;
-
-public class CCAnswerFileType extends PythonFileType {
-
- @NotNull
- @Override
- public String getDefaultExtension() {
- return "answer";
- }
-
- @NotNull
- @Override
- public String getDescription() {
- return "Answer file";
- }
-
- @NotNull
- @Override
- public String getName() {
- return "Answer";
- }
-}
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCRunTests.java b/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCRunTests.java
deleted file mode 100644
index cf1f7e48ea3d..000000000000
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCRunTests.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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;
-
-import com.intellij.openapi.actionSystem.AnAction;
-import com.jetbrains.python.edu.PyExecuteFileExtensionPoint;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.actions.CCRunTestsAction;
-
-public class CCRunTests implements PyExecuteFileExtensionPoint {
-
- @NotNull
- public AnAction getRunAction() {
- return new CCRunTestsAction();
- }
-
-}
diff --git a/python/edu/main_pycharm_edu.iml b/python/edu/main_pycharm_edu.iml
index 565d236ec4a7..c29ec159fc09 100644
--- a/python/edu/main_pycharm_edu.iml
+++ b/python/edu/main_pycharm_edu.iml
@@ -17,7 +17,7 @@
+
-
-
+
\ No newline at end of file
diff --git a/python/edu/course-creator/course-creator.iml b/python/educational-python/course-creator-python/course-creator-python.iml
similarity index 86%
rename from python/edu/course-creator/course-creator.iml
rename to python/educational-python/course-creator-python/course-creator-python.iml
index 18baaf4ed068..e08d029ad3ce 100644
--- a/python/edu/course-creator/course-creator.iml
+++ b/python/educational-python/course-creator-python/course-creator-python.iml
@@ -9,11 +9,10 @@
-
+
-
-
+
-
+
\ No newline at end of file
diff --git a/python/educational-python/course-creator-python/resources/META-INF/plugin.xml b/python/educational-python/course-creator-python/resources/META-INF/plugin.xml
new file mode 100644
index 000000000000..b9148d8f1de2
--- /dev/null
+++ b/python/educational-python/course-creator-python/resources/META-INF/plugin.xml
@@ -0,0 +1,43 @@
+
+ com.jetbrains.edu.coursecreator.python
+ Course Creator for PyCharm Educational
+ 2.0
+
+
+
+
+
+
+
+
+
+
+ com.intellij.modules.platform
+ com.intellij.modules.python
+ com.jetbrains.edu.coursecreator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/python/edu/course-creator/resources/fileTemplates/internal/task.answer.ft b/python/educational-python/course-creator-python/resources/fileTemplates/internal/task.answer.ft
similarity index 100%
rename from python/edu/course-creator/resources/fileTemplates/internal/task.answer.ft
rename to python/educational-python/course-creator-python/resources/fileTemplates/internal/task.answer.ft
diff --git a/python/edu/course-creator/resources/fileTemplates/internal/task.html.ft b/python/educational-python/course-creator-python/resources/fileTemplates/internal/task.html.ft
similarity index 100%
rename from python/edu/course-creator/resources/fileTemplates/internal/task.html.ft
rename to python/educational-python/course-creator-python/resources/fileTemplates/internal/task.html.ft
diff --git a/python/edu/course-creator/resources/fileTemplates/internal/test_helper.py.ft b/python/educational-python/course-creator-python/resources/fileTemplates/internal/test_helper.py.ft
similarity index 100%
rename from python/edu/course-creator/resources/fileTemplates/internal/test_helper.py.ft
rename to python/educational-python/course-creator-python/resources/fileTemplates/internal/test_helper.py.ft
diff --git a/python/edu/course-creator/resources/fileTemplates/internal/tests.py.ft b/python/educational-python/course-creator-python/resources/fileTemplates/internal/tests.py.ft
similarity index 100%
rename from python/edu/course-creator/resources/fileTemplates/internal/tests.py.ft
rename to python/educational-python/course-creator-python/resources/fileTemplates/internal/tests.py.ft
diff --git a/python/edu/course-creator/resources/icons/CourseCreationProjectType.png b/python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType.png
similarity index 100%
rename from python/edu/course-creator/resources/icons/CourseCreationProjectType.png
rename to python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType.png
diff --git a/python/edu/course-creator/resources/icons/CourseCreationProjectType@2x.png b/python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType@2x.png
similarity index 100%
rename from python/edu/course-creator/resources/icons/CourseCreationProjectType@2x.png
rename to python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType@2x.png
diff --git a/python/edu/course-creator/resources/icons/CourseCreationProjectType@2x_dark.png b/python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType@2x_dark.png
similarity index 100%
rename from python/edu/course-creator/resources/icons/CourseCreationProjectType@2x_dark.png
rename to python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType@2x_dark.png
diff --git a/python/edu/course-creator/resources/icons/CourseCreationProjectType_dark.png b/python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType_dark.png
similarity index 100%
rename from python/edu/course-creator/resources/icons/CourseCreationProjectType_dark.png
rename to python/educational-python/course-creator-python/resources/icons/CourseCreationProjectType_dark.png
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCAnswerFileTypeFactory.java b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCAnswerFileTypeFactory.java
similarity index 79%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCAnswerFileTypeFactory.java
rename to python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCAnswerFileTypeFactory.java
index 7c49b8e61658..4585963375a3 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCAnswerFileTypeFactory.java
+++ b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCAnswerFileTypeFactory.java
@@ -13,16 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.openapi.fileTypes.FileTypeConsumer;
import com.intellij.openapi.fileTypes.FileTypeFactory;
+import com.jetbrains.python.PythonFileType;
import org.jetbrains.annotations.NotNull;
-public class CCAnswerFileTypeFactory extends FileTypeFactory {
+public class PyCCAnswerFileTypeFactory extends FileTypeFactory {
@Override
public void createFileTypes(@NotNull FileTypeConsumer fileTypeConsumer) {
- fileTypeConsumer.consume(CCAnswerFileType.INSTANCE, "answer");
+ fileTypeConsumer.consume(PythonFileType.INSTANCE, "answer");
}
}
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectGenerator.java b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCProjectGenerator.java
similarity index 53%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectGenerator.java
rename to python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCProjectGenerator.java
index 667134d767b5..0cb33f31733a 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectGenerator.java
+++ b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCProjectGenerator.java
@@ -1,34 +1,24 @@
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.facet.ui.FacetEditorValidator;
import com.intellij.facet.ui.FacetValidatorsManager;
import com.intellij.facet.ui.ValidationResult;
-import com.intellij.ide.fileTemplates.FileTemplate;
-import com.intellij.ide.fileTemplates.FileTemplateManager;
-import com.intellij.ide.fileTemplates.FileTemplateUtil;
-import com.intellij.ide.util.DirectoryUtil;
-import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.DirectoryProjectGenerator;
-import com.intellij.psi.PsiDirectory;
-import com.intellij.psi.PsiManager;
+import com.jetbrains.edu.coursecreator.ui.CCNewProjectPanel;
import com.jetbrains.python.newProject.PythonProjectGenerator;
-import icons.CourseCreatorIcons;
+import icons.CourseCreatorPythonIcons;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.actions.CCCreateLesson;
-import org.jetbrains.plugins.coursecreator.actions.CCCreateTask;
-import org.jetbrains.plugins.coursecreator.format.Course;
-import org.jetbrains.plugins.coursecreator.ui.CCNewProjectPanel;
import javax.swing.*;
-public class CCProjectGenerator extends PythonProjectGenerator implements DirectoryProjectGenerator {
+public class PyCCProjectGenerator extends PythonProjectGenerator implements DirectoryProjectGenerator {
private CCNewProjectPanel mySettingsPanel;
@Nls
@@ -47,34 +37,15 @@ public class CCProjectGenerator extends PythonProjectGenerator implements Direct
@Nullable
@Override
public Icon getLogo() {
- return CourseCreatorIcons.CourseCreationProjectType;
+ return CourseCreatorPythonIcons.CourseCreationProjectType;
}
@Override
public void generateProject(@NotNull final Project project, @NotNull final VirtualFile baseDir,
@Nullable Object settings, @NotNull Module module) {
-
- final CCProjectService service = CCProjectService.getInstance(project);
- final Course course = new Course(mySettingsPanel.getName(), mySettingsPanel.getAuthor(), mySettingsPanel.getDescription());
- service.setCourse(course);
-
- final PsiDirectory projectDir = PsiManager.getInstance(project).findDirectory(baseDir);
- if (projectDir == null) return;
- new WriteCommandAction.Simple(project) {
- @Override
- protected void run() throws Throwable {
- final FileTemplate template = FileTemplateManager.getInstance(project).getInternalTemplate("test_helper");
- try {
- FileTemplateUtil.createFromTemplate(template, "test_helper.py", null, projectDir);
- }
- catch (Exception ignored) {
- }
- DirectoryUtil.createSubdirectories("hints", projectDir, "\\/");
- final PsiDirectory lessonDir = CCCreateLesson.createLesson(projectDir, 1, null, null, course);
- CCCreateTask.createTask(null, project, lessonDir, false);
- }
- }.execute();
+ CCProjectGeneratorUtil.generateProject(project, baseDir, mySettingsPanel.getName(),
+ mySettingsPanel.getAuthor(), mySettingsPanel.getDescription());
}
@NotNull
diff --git a/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/actions/PyCCRunTestsAction.java b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/actions/PyCCRunTestsAction.java
new file mode 100644
index 000000000000..ee002b64c45a
--- /dev/null
+++ b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/actions/PyCCRunTestsAction.java
@@ -0,0 +1,66 @@
+/*
+ * 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 com.jetbrains.edu.coursecreator.actions;
+
+import com.intellij.execution.Executor;
+import com.intellij.execution.ProgramRunnerUtil;
+import com.intellij.execution.RunManager;
+import com.intellij.execution.RunnerAndConfigurationSettings;
+import com.intellij.execution.configurations.ConfigurationFactory;
+import com.intellij.execution.executors.DefaultRunExecutor;
+import com.intellij.ide.projectView.ProjectView;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.vfs.VirtualFileManager;
+import com.intellij.util.PathUtil;
+import com.jetbrains.python.run.PythonConfigurationType;
+import com.jetbrains.python.run.PythonRunConfiguration;
+import org.jetbrains.annotations.NotNull;
+
+public class PyCCRunTestsAction extends CCRunTestsAction {
+
+ @Override
+ protected void executeTests(@NotNull final Project project,
+ @NotNull final VirtualFile virtualFile,
+ @NotNull final VirtualFile taskDir,
+ @NotNull final VirtualFile testFile) {
+ final ConfigurationFactory factory = PythonConfigurationType.getInstance().getConfigurationFactories()[0];
+ final RunnerAndConfigurationSettings settings =
+ RunManager.getInstance(project).createRunConfiguration("test", factory);
+
+ final PythonRunConfiguration configuration = (PythonRunConfiguration)settings.getConfiguration();
+ configuration.setScriptName(testFile.getPath());
+ VirtualFile userFile = taskDir.findChild(virtualFile.getNameWithoutExtension() + ".py");
+ if (userFile == null) {
+ return;
+ }
+ VirtualFile ideaDir = project.getBaseDir().findChild(".idea");
+ if (ideaDir == null) {
+ return;
+ }
+ VirtualFileManager.getInstance().refreshWithoutFileWatcher(true);
+ ProjectView.getInstance(project).refresh();
+ VirtualFile courseDir = ideaDir.findChild("course");
+ if (courseDir == null) {
+ return;
+ }
+ configuration.setScriptParameters(PathUtil.toSystemDependentName(courseDir.getPath()) + " " + PathUtil.toSystemDependentName(userFile.getPath()));
+ Executor executor = DefaultRunExecutor.getRunExecutorInstance();
+ ProgramRunnerUtil.executeConfiguration(project, settings, executor);
+ }
+
+
+}
diff --git a/python/edu/course-creator/src/icons/CourseCreatorIcons.java b/python/educational-python/course-creator-python/src/icons/CourseCreatorPythonIcons.java
similarity index 67%
rename from python/edu/course-creator/src/icons/CourseCreatorIcons.java
rename to python/educational-python/course-creator-python/src/icons/CourseCreatorPythonIcons.java
index 191ce0d55b30..2342897dc53e 100644
--- a/python/edu/course-creator/src/icons/CourseCreatorIcons.java
+++ b/python/educational-python/course-creator-python/src/icons/CourseCreatorPythonIcons.java
@@ -8,11 +8,10 @@ import javax.swing.*;
* NOTE THIS FILE IS AUTO-GENERATED
* DO NOT EDIT IT BY HAND, run build/scripts/icons.gant instead
*/
-public class CourseCreatorIcons {
+public class CourseCreatorPythonIcons {
private static Icon load(String path) {
- return IconLoader.getIcon(path, CourseCreatorIcons.class);
+ return IconLoader.getIcon(path, CourseCreatorPythonIcons.class);
}
public static final Icon CourseCreationProjectType = load("/icons/CourseCreationProjectType.png"); // 32x32
- public static final Icon Gutter = load("/icons/gutter.png"); // 16x16
}
diff --git a/python/edu/course-creator/testData/helloworld.py b/python/educational-python/course-creator-python/testData/helloworld.py
similarity index 100%
rename from python/edu/course-creator/testData/helloworld.py
rename to python/educational-python/course-creator-python/testData/helloworld.py
diff --git a/python/edu/course-creator/testData/helloworld.xml b/python/educational-python/course-creator-python/testData/helloworld.xml
similarity index 100%
rename from python/edu/course-creator/testData/helloworld.xml
rename to python/educational-python/course-creator-python/testData/helloworld.xml
diff --git a/python/edu/course-creator/tests/CCDocumentListenerTest.java b/python/educational-python/course-creator-python/tests/CCDocumentListenerTest.java
similarity index 93%
rename from python/edu/course-creator/tests/CCDocumentListenerTest.java
rename to python/educational-python/course-creator-python/tests/CCDocumentListenerTest.java
index 24e9e85bf1ca..b489513d2123 100644
--- a/python/edu/course-creator/tests/CCDocumentListenerTest.java
+++ b/python/educational-python/course-creator-python/tests/CCDocumentListenerTest.java
@@ -5,11 +5,11 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import com.intellij.util.xmlb.XmlSerializer;
+import com.jetbrains.edu.coursecreator.actions.CCCreateCourseArchive;
+import com.jetbrains.edu.coursecreator.format.TaskFile;
+import com.jetbrains.edu.coursecreator.format.TaskWindow;
import org.jdom.input.SAXBuilder;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.actions.CCCreateCourseArchive;
-import org.jetbrains.plugins.coursecreator.format.TaskFile;
-import org.jetbrains.plugins.coursecreator.format.TaskWindow;
import java.util.List;
diff --git a/python/edu/course-creator/tests/CCTestCase.java b/python/educational-python/course-creator-python/tests/CCTestCase.java
similarity index 96%
rename from python/edu/course-creator/tests/CCTestCase.java
rename to python/educational-python/course-creator-python/tests/CCTestCase.java
index c7dbe46308c9..66c33ebf859b 100644
--- a/python/edu/course-creator/tests/CCTestCase.java
+++ b/python/educational-python/course-creator-python/tests/CCTestCase.java
@@ -25,7 +25,7 @@ public abstract class CCTestCase extends UsefulTestCase {
}
protected String getTestDataPath() {
- return PythonHelpersLocator.getPythonCommunityPath() + "/edu/course-creator/testData";
+ return PythonHelpersLocator.getPythonCommunityPath() + "/educational_python/course_creator_python/testData";
}
@Override
diff --git a/python/educational-python/educational-python.iml b/python/educational-python/educational-python.iml
new file mode 100644
index 000000000000..c90834f2d607
--- /dev/null
+++ b/python/educational-python/educational-python.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/python/educational-python/interactive-learning-python/interactive-learning-python.iml b/python/educational-python/interactive-learning-python/interactive-learning-python.iml
new file mode 100644
index 000000000000..c90834f2d607
--- /dev/null
+++ b/python/educational-python/interactive-learning-python/interactive-learning-python.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/python/educational/course-creator/course-creator.iml b/python/educational/course-creator/course-creator.iml
new file mode 100644
index 000000000000..75a2690f8e0f
--- /dev/null
+++ b/python/educational/course-creator/course-creator.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/python/educational/course-creator/resources/META-INF/plugin.xml b/python/educational/course-creator/resources/META-INF/plugin.xml
new file mode 100644
index 000000000000..6fb2817bff05
--- /dev/null
+++ b/python/educational/course-creator/resources/META-INF/plugin.xml
@@ -0,0 +1,78 @@
+
+ com.jetbrains.edu.coursecreator
+ Course Creator Plugin
+ 2.0
+
+
+
+
+
+
+
+
+
+ com.intellij.modules.platform
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ com.jetbrains.edu.coursecreator.CCProjectComponent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCDocumentListener.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCDocumentListener.java
similarity index 94%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCDocumentListener.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCDocumentListener.java
index b1917292df32..e2621bfa0342 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCDocumentListener.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCDocumentListener.java
@@ -1,11 +1,11 @@
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.event.DocumentAdapter;
import com.intellij.openapi.editor.event.DocumentEvent;
import com.intellij.openapi.editor.impl.event.DocumentEventImpl;
-import org.jetbrains.plugins.coursecreator.format.TaskFile;
-import org.jetbrains.plugins.coursecreator.format.TaskWindow;
+import com.jetbrains.edu.coursecreator.format.TaskFile;
+import com.jetbrains.edu.coursecreator.format.TaskWindow;
import java.util.ArrayList;
import java.util.List;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCEditorFactoryListener.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCEditorFactoryListener.java
similarity index 93%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCEditorFactoryListener.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCEditorFactoryListener.java
index c61ab10d7332..57d7d73a9fe5 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCEditorFactoryListener.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCEditorFactoryListener.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.codeInsight.hint.HintManager;
import com.intellij.openapi.editor.Document;
@@ -12,8 +12,11 @@ import com.intellij.openapi.editor.event.EditorFactoryListener;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
+import com.jetbrains.edu.coursecreator.format.Task;
+import com.jetbrains.edu.coursecreator.format.TaskFile;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.format.*;
public class CCEditorFactoryListener implements EditorFactoryListener {
@Override
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectComponent.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectComponent.java
similarity index 95%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectComponent.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectComponent.java
index 88a242492581..e4c44a97e62f 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectComponent.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectComponent.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ProjectComponent;
@@ -16,12 +16,12 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileAdapter;
import com.intellij.openapi.vfs.VirtualFileEvent;
import com.intellij.openapi.vfs.VirtualFileManager;
+import com.jetbrains.edu.coursecreator.actions.CCRunTestsAction;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
+import com.jetbrains.edu.coursecreator.format.Task;
+import com.jetbrains.edu.coursecreator.format.TaskFile;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.actions.CCRunTestsAction;
-import org.jetbrains.plugins.coursecreator.format.Course;
-import org.jetbrains.plugins.coursecreator.format.Lesson;
-import org.jetbrains.plugins.coursecreator.format.Task;
-import org.jetbrains.plugins.coursecreator.format.TaskFile;
import java.io.IOException;
diff --git a/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectGeneratorUtil.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectGeneratorUtil.java
new file mode 100644
index 000000000000..7ccd9a8d7f6a
--- /dev/null
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectGeneratorUtil.java
@@ -0,0 +1,45 @@
+package com.jetbrains.edu.coursecreator;
+
+import com.intellij.ide.fileTemplates.FileTemplate;
+import com.intellij.ide.fileTemplates.FileTemplateManager;
+import com.intellij.ide.fileTemplates.FileTemplateUtil;
+import com.intellij.ide.util.DirectoryUtil;
+import com.intellij.openapi.command.WriteCommandAction;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.PsiDirectory;
+import com.intellij.psi.PsiManager;
+import com.jetbrains.edu.coursecreator.actions.CCCreateLesson;
+import com.jetbrains.edu.coursecreator.actions.CCCreateTask;
+import com.jetbrains.edu.coursecreator.format.Course;
+import org.jetbrains.annotations.NotNull;
+
+
+public class CCProjectGeneratorUtil {
+ public static void generateProject(@NotNull final Project project, @NotNull final VirtualFile baseDir,
+ @NotNull final String name, @NotNull final String author,
+ @NotNull final String description) {
+
+ final CCProjectService service = CCProjectService.getInstance(project);
+ final Course course = new Course(name, author, description);
+ service.setCourse(course);
+
+ final PsiDirectory projectDir = PsiManager.getInstance(project).findDirectory(baseDir);
+ if (projectDir == null) return;
+ new WriteCommandAction.Simple(project) {
+ @Override
+ protected void run() throws Throwable {
+ final FileTemplate template = FileTemplateManager.getInstance(project).getInternalTemplate("test_helper");
+ try {
+ FileTemplateUtil.createFromTemplate(template, "test_helper.py", null, projectDir);
+ }
+ catch (Exception ignored) {
+ }
+ DirectoryUtil.createSubdirectories("hints", projectDir, "\\/");
+ final PsiDirectory lessonDir = CCCreateLesson.createLesson(projectDir, 1, null, null, course);
+ CCCreateTask.createTask(null, project, lessonDir, false);
+ }
+ }.execute();
+ }
+
+}
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectService.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectService.java
similarity index 98%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectService.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectService.java
index 6d56fe6b5962..028e449f6fda 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCProjectService.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCProjectService.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.ide.projectView.ProjectView;
import com.intellij.openapi.actionSystem.AnActionEvent;
@@ -29,10 +29,10 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.util.xmlb.XmlSerializer;
+import com.jetbrains.edu.coursecreator.format.*;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.format.*;
import java.io.File;
import java.util.Collection;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCRefactoringElementListenerProvider.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java
similarity index 90%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCRefactoringElementListenerProvider.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java
index 9ff6aa77fd44..50a4693d29cc 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCRefactoringElementListenerProvider.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.psi.PsiDirectory;
@@ -22,13 +22,13 @@ import com.intellij.psi.PsiFile;
import com.intellij.refactoring.listeners.RefactoringElementAdapter;
import com.intellij.refactoring.listeners.RefactoringElementListener;
import com.intellij.refactoring.listeners.RefactoringElementListenerProvider;
+import com.jetbrains.edu.coursecreator.actions.CCRunTestsAction;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
+import com.jetbrains.edu.coursecreator.format.Task;
+import com.jetbrains.edu.coursecreator.format.TaskFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.actions.CCRunTestsAction;
-import org.jetbrains.plugins.coursecreator.format.Course;
-import org.jetbrains.plugins.coursecreator.format.Lesson;
-import org.jetbrains.plugins.coursecreator.format.Task;
-import org.jetbrains.plugins.coursecreator.format.TaskFile;
import java.util.Map;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCUtils.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java
similarity index 97%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCUtils.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java
index e2cc9d575638..130952e8ebaa 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCUtils.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator;
+package com.jetbrains.edu.coursecreator;
import com.intellij.ide.projectView.actions.MarkRootActionBase;
import com.intellij.openapi.application.ApplicationManager;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCAddTaskWindow.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCAddTaskWindow.java
similarity index 96%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCAddTaskWindow.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCAddTaskWindow.java
index 244de123a33d..17f62ce19ef8 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCAddTaskWindow.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCAddTaskWindow.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
@@ -13,10 +13,10 @@ import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.*;
+import com.jetbrains.edu.coursecreator.ui.CreateTaskWindowDialog;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.*;
-import org.jetbrains.plugins.coursecreator.ui.CreateTaskWindowDialog;
import java.util.List;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCChangeCourseInfo.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCChangeCourseInfo.java
similarity index 93%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCChangeCourseInfo.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCChangeCourseInfo.java
index 653af6c691f6..81ee890989bb 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCChangeCourseInfo.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCChangeCourseInfo.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.ide.IdeView;
import com.intellij.ide.projectView.ProjectView;
@@ -11,11 +11,11 @@ import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.psi.PsiDirectory;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.ui.CCNewProjectPanel;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.Course;
-import org.jetbrains.plugins.coursecreator.ui.CCNewProjectPanel;
import javax.swing.*;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateCourseArchive.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateCourseArchive.java
similarity index 97%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateCourseArchive.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateCourseArchive.java
index a3d4f56e2b34..5a2cf63af8cb 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateCourseArchive.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateCourseArchive.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -18,11 +18,11 @@ 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 com.jetbrains.edu.coursecreator.CCDocumentListener;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.*;
+import com.jetbrains.edu.coursecreator.ui.CreateCourseArchiveDialog;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCDocumentListener;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.*;
-import org.jetbrains.plugins.coursecreator.ui.CreateCourseArchiveDialog;
import java.io.*;
import java.util.Collections;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateLesson.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateLesson.java
similarity index 93%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateLesson.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateLesson.java
index 58b950b5a637..a92bdd7a87fb 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateLesson.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateLesson.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.ide.IdeView;
import com.intellij.ide.util.DirectoryChooserUtil;
@@ -13,11 +13,11 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.psi.PsiDirectory;
import com.intellij.util.PlatformIcons;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.Course;
-import org.jetbrains.plugins.coursecreator.format.Lesson;
public class CCCreateLesson extends DumbAwareAction {
public CCCreateLesson() {
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateTask.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateTask.java
similarity index 94%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateTask.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateTask.java
index 216727cb266d..1a83436de9dd 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateTask.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateTask.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.ide.IdeView;
import com.intellij.ide.fileTemplates.FileTemplate;
@@ -20,12 +20,12 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.util.PlatformIcons;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.CCUtils;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
+import com.jetbrains.edu.coursecreator.format.Task;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.CCUtils;
-import org.jetbrains.plugins.coursecreator.format.Course;
-import org.jetbrains.plugins.coursecreator.format.Lesson;
-import org.jetbrains.plugins.coursecreator.format.Task;
public class CCCreateTask extends DumbAwareAction {
public CCCreateTask() {
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateTaskFile.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateTaskFile.java
similarity index 90%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateTaskFile.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateTaskFile.java
index 69b67190346a..6296ee839af4 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateTaskFile.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCCreateTaskFile.java
@@ -1,5 +1,6 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
+import com.intellij.icons.AllIcons;
import com.intellij.ide.IdeView;
import com.intellij.ide.fileTemplates.FileTemplate;
import com.intellij.ide.fileTemplates.FileTemplateManager;
@@ -16,17 +17,16 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
-import icons.PythonPsiApiIcons;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
+import com.jetbrains.edu.coursecreator.format.Task;
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;
-import org.jetbrains.plugins.coursecreator.format.Task;
public class CCCreateTaskFile extends DumbAwareAction {
public CCCreateTaskFile() {
- super("Task File", "Create new Task File", PythonPsiApiIcons.PythonFile);
+ super("Task File", "Create new Task File", AllIcons.FileTypes.Text);
}
@Override
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCDeleteTaskWindow.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCDeleteTaskWindow.java
similarity index 83%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCDeleteTaskWindow.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCDeleteTaskWindow.java
index f7245a05fe9f..a1ebd24f4c2e 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCDeleteTaskWindow.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCDeleteTaskWindow.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
@@ -6,11 +6,11 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.TaskFile;
+import com.jetbrains.edu.coursecreator.format.TaskWindow;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.Course;
-import org.jetbrains.plugins.coursecreator.format.TaskFile;
-import org.jetbrains.plugins.coursecreator.format.TaskWindow;
import java.util.List;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRename.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRename.java
similarity index 95%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRename.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRename.java
index dbaee7590277..30265ae05b6e 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRename.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRename.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.ide.IdeView;
import com.intellij.ide.projectView.ProjectView;
@@ -26,9 +26,9 @@ import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.Course;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.Course;
import javax.swing.*;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameLesson.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRenameLesson.java
similarity index 88%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameLesson.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRenameLesson.java
index 3f580454ed6e..eaea9bf7e0ad 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameLesson.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRenameLesson.java
@@ -13,13 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.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 com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
public class CCRenameLesson extends CCRename {
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameTask.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRenameTask.java
similarity index 87%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameTask.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRenameTask.java
index 342621bf0d47..4690d0d1993f 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRenameTask.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRenameTask.java
@@ -13,14 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.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;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
+import com.jetbrains.edu.coursecreator.format.Task;
public class CCRenameTask extends CCRename {
public CCRenameTask() {
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRunTestsAction.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRunTestsAction.java
similarity index 84%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRunTestsAction.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRunTestsAction.java
index 777afc4e1a85..2d8d3a6980a3 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCRunTestsAction.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRunTestsAction.java
@@ -13,14 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
-import com.intellij.execution.*;
+import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
-import com.intellij.execution.configurations.ConfigurationFactory;
-import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.icons.AllIcons;
-import com.intellij.ide.projectView.ProjectView;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
@@ -32,25 +29,21 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
-import com.intellij.util.PathUtil;
import com.intellij.util.containers.HashMap;
-import com.jetbrains.python.run.PythonConfigurationType;
-import com.jetbrains.python.run.PythonRunConfiguration;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
-public class CCRunTestsAction extends AnAction {
+public abstract class CCRunTestsAction extends AnAction {
private static final Logger LOG = Logger.getInstance(CCRunTestsAction.class.getName());
public CCRunTestsAction() {
@@ -114,7 +107,7 @@ public class CCRunTestsAction extends AnAction {
run(context);
}
- public static void run(final @NotNull ConfigurationContext context) {
+ public void run(final @NotNull ConfigurationContext context) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
@@ -199,34 +192,10 @@ public class CCRunTestsAction extends AnAction {
}
}
- private static void executeTests(@NotNull final Project project,
+ protected abstract void executeTests(@NotNull final Project project,
@NotNull final VirtualFile virtualFile,
@NotNull final VirtualFile taskDir,
- @NotNull final VirtualFile testFile) {
- final ConfigurationFactory factory = PythonConfigurationType.getInstance().getConfigurationFactories()[0];
- final RunnerAndConfigurationSettings settings =
- RunManager.getInstance(project).createRunConfiguration("test", factory);
-
- final PythonRunConfiguration configuration = (PythonRunConfiguration)settings.getConfiguration();
- configuration.setScriptName(testFile.getPath());
- VirtualFile userFile = taskDir.findChild(virtualFile.getNameWithoutExtension() + ".py");
- if (userFile == null) {
- return;
- }
- VirtualFile ideaDir = project.getBaseDir().findChild(".idea");
- if (ideaDir == null) {
- return;
- }
- VirtualFileManager.getInstance().refreshWithoutFileWatcher(true);
- ProjectView.getInstance(project).refresh();
- VirtualFile courseDir = ideaDir.findChild("course");
- if (courseDir == null) {
- return;
- }
- configuration.setScriptParameters(PathUtil.toSystemDependentName(courseDir.getPath()) + " " + PathUtil.toSystemDependentName(userFile.getPath()));
- Executor executor = DefaultRunExecutor.getRunExecutorInstance();
- ProgramRunnerUtil.executeConfiguration(project, settings, executor);
- }
+ @NotNull final VirtualFile testFile);
@Nullable
private static Task getTask(@NotNull final Course course, @NotNull final VirtualFile taskDir) {
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowPreview.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCShowPreview.java
similarity index 94%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowPreview.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCShowPreview.java
index 97a1b0300688..4578ba87388d 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowPreview.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCShowPreview.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.AnActionEvent;
@@ -34,16 +34,15 @@ 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 com.jetbrains.python.PythonFileType;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.*;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.text.SimpleDateFormat;
import java.util.Calendar;
+import java.util.HashMap;
import java.util.Map;
public class CCShowPreview extends DumbAwareAction {
@@ -118,7 +117,7 @@ public class CCShowPreview extends DumbAwareAction {
if (document == null) {
return;
}
- final EditorEx createdEditor = (EditorEx)factory.createEditor(document, project, PythonFileType.INSTANCE, true);
+ final EditorEx createdEditor = (EditorEx)factory.createEditor(document, project, userFile, true);
Disposer.register(project, new Disposable() {
public void dispose() {
factory.releaseEditor(createdEditor);
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowTaskWindowDetails.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCShowTaskWindowDetails.java
similarity index 85%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowTaskWindowDetails.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCShowTaskWindowDetails.java
index e8ae02bf44fa..fc235c2e8c69 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCShowTaskWindowDetails.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCShowTaskWindowDetails.java
@@ -1,12 +1,12 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.*;
+import com.jetbrains.edu.coursecreator.ui.CreateTaskWindowDialog;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.*;
-import org.jetbrains.plugins.coursecreator.ui.CreateTaskWindowDialog;
public class CCShowTaskWindowDetails extends CCTaskWindowAction {
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCTaskWindowAction.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCTaskWindowAction.java
similarity index 93%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCTaskWindowAction.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCTaskWindowAction.java
index 1917c308c1e7..1d7a8e31adca 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCTaskWindowAction.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCTaskWindowAction.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.actions;
+package com.jetbrains.edu.coursecreator.actions;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
@@ -8,11 +8,11 @@ import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.TaskFile;
+import com.jetbrains.edu.coursecreator.format.TaskWindow;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
-import org.jetbrains.plugins.coursecreator.format.TaskFile;
-import org.jetbrains.plugins.coursecreator.format.TaskWindow;
import javax.swing.*;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Course.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Course.java
similarity index 96%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Course.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Course.java
index e9af3472f260..7d725e7b19c9 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Course.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Course.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.format;
+package com.jetbrains.edu.coursecreator.format;
import com.google.gson.annotations.Expose;
import com.intellij.psi.PsiDirectory;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Lesson.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Lesson.java
similarity index 96%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Lesson.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Lesson.java
index bd91e8ec30af..360c37244a1a 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Lesson.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Lesson.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.format;
+package com.jetbrains.edu.coursecreator.format;
import com.google.gson.annotations.Expose;
import com.intellij.psi.PsiDirectory;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Task.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Task.java
similarity index 91%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Task.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Task.java
index 886add86ceb4..453fa007b28b 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/Task.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/Task.java
@@ -1,8 +1,8 @@
-package org.jetbrains.plugins.coursecreator.format;
+package com.jetbrains.edu.coursecreator.format;
import com.google.gson.annotations.Expose;
+import com.jetbrains.edu.coursecreator.CCProjectService;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
import java.util.HashMap;
import java.util.Map;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/TaskFile.java
similarity index 98%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/TaskFile.java
index 9fb10eaa179a..df5e5d0bc521 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/TaskFile.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.format;
+package com.jetbrains.edu.coursecreator.format;
import com.google.gson.annotations.Expose;
import com.intellij.openapi.editor.Document;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskWindow.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/TaskWindow.java
similarity index 97%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskWindow.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/TaskWindow.java
index 385aaeddf26e..edcca8a7e7e7 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskWindow.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/format/TaskWindow.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.format;
+package com.jetbrains.edu.coursecreator.format;
import com.google.gson.annotations.Expose;
import com.intellij.openapi.editor.Document;
@@ -14,8 +14,8 @@ import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.JBColor;
+import com.jetbrains.edu.coursecreator.CCProjectService;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
import java.io.File;
import java.util.List;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/projectView/CCDirectoryNode.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCDirectoryNode.java
similarity index 88%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/projectView/CCDirectoryNode.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCDirectoryNode.java
index 0969c54563c2..eb48a7af42a8 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/projectView/CCDirectoryNode.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCDirectoryNode.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.projectView;
+package com.jetbrains.edu.coursecreator.projectView;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.ide.projectView.ViewSettings;
@@ -6,11 +6,11 @@ import com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDirectory;
import com.intellij.ui.SimpleTextAttributes;
+import com.jetbrains.edu.coursecreator.CCProjectService;
+import com.jetbrains.edu.coursecreator.format.Course;
+import com.jetbrains.edu.coursecreator.format.Lesson;
+import com.jetbrains.edu.coursecreator.format.Task;
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;
-import org.jetbrains.plugins.coursecreator.format.Task;
public class CCDirectoryNode extends PsiDirectoryNode {
private final PsiDirectory myValue;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/projectView/CCTreeStructureProvider.java b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCTreeStructureProvider.java
similarity index 95%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/projectView/CCTreeStructureProvider.java
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCTreeStructureProvider.java
index 89d09f73c28c..e3a0ae7a3127 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/projectView/CCTreeStructureProvider.java
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCTreeStructureProvider.java
@@ -1,4 +1,4 @@
-package org.jetbrains.plugins.coursecreator.projectView;
+package com.jetbrains.edu.coursecreator.projectView;
import com.intellij.ide.projectView.TreeStructureProvider;
import com.intellij.ide.projectView.ViewSettings;
@@ -8,9 +8,9 @@ import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
+import com.jetbrains.edu.coursecreator.CCProjectService;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.coursecreator.CCProjectService;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/ui/CCNewProjectPanel.form b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/ui/CCNewProjectPanel.form
similarity index 97%
rename from python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/ui/CCNewProjectPanel.form
rename to python/educational/course-creator/src/com/jetbrains/edu/coursecreator/ui/CCNewProjectPanel.form
index d0a931467943..67b2e6c3e5fe 100644
--- a/python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/ui/CCNewProjectPanel.form
+++ b/python/educational/course-creator/src/com/jetbrains/edu/coursecreator/ui/CCNewProjectPanel.form
@@ -1,5 +1,5 @@
-