Removed PyEduCourseProjectGenerator

This commit is contained in:
meanmail
2017-04-14 15:46:38 +07:00
parent 5aba090129
commit a359e3b72f
6 changed files with 60 additions and 103 deletions
@@ -1,93 +0,0 @@
/*
* Copyright 2000-2017 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.common.newproject;
import com.intellij.facet.ui.ValidationResult;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkAdditionalData;
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
import com.intellij.platform.DirectoryProjectGenerator;
import com.intellij.util.BooleanFunction;
import com.jetbrains.edu.learning.newproject.EduCourseProjectGenerator;
import com.jetbrains.edu.learning.PyStudyDirectoryProjectGenerator;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.python.newProject.PyNewProjectSettings;
import com.jetbrains.python.newProject.PythonProjectGenerator;
import com.jetbrains.python.sdk.PythonSdkAdditionalData;
import com.jetbrains.python.sdk.PythonSdkType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class PyEduCourseProjectGenerator implements EduCourseProjectGenerator {
private final PyStudyDirectoryProjectGenerator myGenerator;
public PyEduCourseProjectGenerator() {
this.myGenerator = new PyStudyDirectoryProjectGenerator();
}
@NotNull
@Override
public DirectoryProjectGenerator getDirectoryProjectGenerator() {
return myGenerator;
}
@Nullable
@Override
public Object getProjectSettings() {
return myGenerator.getProjectSettings();
}
@Override
public void setCourse(@NotNull Course course) {
myGenerator.setSelectedCourse(course);
}
@Override
public ValidationResult validate(@NotNull String path) {
myGenerator.setValidationResult(ValidationResult.OK);
return myGenerator.validate(path);
}
@Override
public boolean beforeProjectGenerated() {
BooleanFunction<PythonProjectGenerator> function =
myGenerator.beforeProjectGenerated(null);
return function != null && function.fun(myGenerator);
}
@Override
public void afterProjectGenerated(@NotNull Project project) {
PyNewProjectSettings settings = (PyNewProjectSettings)myGenerator.getProjectSettings();
Sdk sdk = settings.getSdk();
if (sdk == null) {
myGenerator.createAndAddVirtualEnv(project, settings);
sdk = settings.getSdk();
}
SdkConfigurationUtil.setDirectoryProjectSdk(project, sdk);
final List<Sdk> sdks = PythonSdkType.getAllSdks();
for (Sdk s : sdks) {
final SdkAdditionalData additionalData = s.getSdkAdditionalData();
if (additionalData instanceof PythonSdkAdditionalData) {
((PythonSdkAdditionalData)additionalData).reassociateWithCreatedProject(project);
}
}
}
}
@@ -15,14 +15,13 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiManager;
import com.intellij.util.PathUtil;
import com.jetbrains.edu.common.newproject.PyEduCourseProjectGenerator;
import com.jetbrains.edu.learning.newproject.EduCourseProjectGenerator;
import com.jetbrains.edu.coursecreator.settings.CCSettings;
import com.jetbrains.edu.learning.actions.StudyCheckAction;
import com.jetbrains.edu.learning.core.EduNames;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
import com.jetbrains.edu.learning.newproject.EduCourseProjectGenerator;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -149,6 +148,6 @@ public class PyEduPluginConfigurator implements EduPluginConfigurator {
@Override
public EduCourseProjectGenerator getEduCourseProjectGenerator() {
return new PyEduCourseProjectGenerator();
return new PyStudyDirectoryProjectGenerator();
}
}
@@ -18,8 +18,10 @@ import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkAdditionalData;
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl;
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.DirectoryProjectGenerator;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiManager;
import com.intellij.util.BooleanFunction;
@@ -27,6 +29,7 @@ import com.jetbrains.edu.learning.core.EduNames;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.edu.learning.courseFormat.RemoteCourse;
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
import com.jetbrains.edu.learning.newproject.EduCourseProjectGenerator;
import com.jetbrains.edu.learning.stepic.EduStepicConnector;
import com.jetbrains.edu.learning.ui.StudyNewProjectPanel;
import com.jetbrains.python.configuration.PyConfigurableInterpreterList;
@@ -38,6 +41,7 @@ import com.jetbrains.python.remote.PyProjectSynchronizer;
import com.jetbrains.python.sdk.AbstractCreateVirtualEnvDialog;
import com.jetbrains.python.sdk.PyDetectedSdk;
import com.jetbrains.python.sdk.PythonSdkAdditionalData;
import com.jetbrains.python.sdk.PythonSdkType;
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor;
import icons.InteractiveLearningPythonIcons;
import org.jetbrains.annotations.Nls;
@@ -51,7 +55,8 @@ import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.List;
public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyNewProjectSettings> {
public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyNewProjectSettings>
implements EduCourseProjectGenerator {
private static final Logger LOG = Logger.getInstance(PyStudyDirectoryProjectGenerator.class.getName());
private final StudyProjectGenerator myGenerator;
private static final String NO_PYTHON_INTERPRETER = "<html><u>Add</u> python interpreter.</html>";
@@ -113,16 +118,61 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyN
@NotNull
@Override
public ValidationResult validate(@NotNull String s) {
public DirectoryProjectGenerator getDirectoryProjectGenerator() {
return this;
}
public ValidationResult validate() {
final Project project = ProjectManager.getInstance().getDefaultProject();
final List<Sdk> sdks = PyConfigurableInterpreterList.getInstance(project).getAllPythonSdks();
ValidationResult validationResult;
if (sdks.isEmpty()) {
myValidationResult = new ValidationResult(NO_PYTHON_INTERPRETER);
validationResult = new ValidationResult(NO_PYTHON_INTERPRETER);
} else {
validationResult = ValidationResult.OK;
}
return validationResult;
}
@NotNull
@Override
public ValidationResult validate(@NotNull String s) {
ValidationResult validationResult = validate();
if (!validationResult.isOk()) {
myValidationResult = validationResult;
}
return myValidationResult;
}
@Override
public boolean beforeProjectGenerated() {
BooleanFunction<PythonProjectGenerator> function = beforeProjectGenerated(null);
return function != null && function.fun(this);
}
@Override
public void afterProjectGenerated(@NotNull Project project) {
PyNewProjectSettings settings = (PyNewProjectSettings)getProjectSettings();
Sdk sdk = settings.getSdk();
if (sdk == null) {
createAndAddVirtualEnv(project, settings);
sdk = settings.getSdk();
}
SdkConfigurationUtil.setDirectoryProjectSdk(project, sdk);
final List<Sdk> sdks = PythonSdkType.getAllSdks();
for (Sdk s : sdks) {
final SdkAdditionalData additionalData = s.getSdkAdditionalData();
if (additionalData instanceof PythonSdkAdditionalData) {
((PythonSdkAdditionalData)additionalData).reassociateWithCreatedProject(project);
}
}
}
public void setValidationResult(ValidationResult validationResult) {
myValidationResult = validationResult;
}
@@ -172,7 +222,7 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyN
return mySettingsPanel;
}
public void setSelectedCourse(Course course) {
public void setCourse(@NotNull Course course) {
myGenerator.setSelectedCourse(course);
}
@@ -76,7 +76,7 @@ public class PyStudyIntroductionCourseAction extends AnAction {
final ProjectSpecificSettingsStep step = new ProjectSpecificSettingsStep(generator, callback);
step.createPanel(); // initialize panel to set location
step.setLocation(projectDir.toString());
generator.setSelectedCourse(introCourse);
generator.setCourse(introCourse);
callback.consume(step);
}