Navigation to a target task

This commit is contained in:
meanmail
2017-04-08 09:12:32 +07:00
parent a2aecb5daf
commit 3aff09380d
7 changed files with 125 additions and 46 deletions
@@ -23,6 +23,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiManager;
import com.intellij.util.BooleanFunction;
import com.intellij.util.Consumer;
import com.jetbrains.edu.learning.core.EduNames;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.edu.learning.courseFormat.RemoteCourse;
@@ -56,15 +57,17 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyN
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>";
private final Consumer<Project> myCallback;
public ValidationResult myValidationResult = new ValidationResult("selected course is not valid");
private StudyNewProjectPanel mySettingsPanel;
private final StudyNewProjectPanel mySettingsPanel;
@SuppressWarnings("unused") // used on startup
public PyStudyDirectoryProjectGenerator() {
this(false);
}
public PyStudyDirectoryProjectGenerator(boolean isLocal) {
public PyStudyDirectoryProjectGenerator(boolean isLocal, @Nullable Consumer<Project> callback) {
myCallback = callback;
myGenerator = new StudyProjectGenerator();
myGenerator.addSettingsStateListener(new StudyProjectGenerator.SettingsListener() {
@Override
@@ -111,6 +114,10 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyN
});
}
public PyStudyDirectoryProjectGenerator(boolean isLocal) {
this(isLocal, null);
}
@Nls
@NotNull
@Override
@@ -142,6 +149,10 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyN
catch (Exception exception) {
LOG.error("Can't copy test_helper.py " + exception.getMessage());
}
if (myCallback != null) {
myCallback.consume(project);
}
}
@NotNull
@@ -15,12 +15,15 @@
*/
package com.jetbrains.edu.learning.builtInServer;
import com.intellij.openapi.project.Project;
import com.intellij.platform.DirectoryProjectGenerator;
import com.intellij.util.Consumer;
import com.jetbrains.edu.learning.PyStudyDirectoryProjectGenerator;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
import com.jetbrains.python.newProject.steps.PyCharmNewProjectStep;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
@@ -28,17 +31,17 @@ import java.util.ArrayList;
* @author meanmail
*/
public class BuiltInServerNewProjectStep extends PyCharmNewProjectStep {
public BuiltInServerNewProjectStep(@NotNull Course course) {
super(new BuiltInServerNewProjectStep.MyCustomization(course));
public BuiltInServerNewProjectStep(@NotNull Course course, @Nullable Consumer<Project> callback) {
super(new BuiltInServerNewProjectStep.MyCustomization(course, callback));
}
protected static class MyCustomization extends PyCharmNewProjectStep.Customization {
private final Course myCourse;
private final PyStudyDirectoryProjectGenerator myGenerator;
public MyCustomization(@NotNull Course course) {
public MyCustomization(@NotNull Course course, @Nullable Consumer<Project> callback) {
myCourse = course;
myGenerator = new PyStudyDirectoryProjectGenerator(true);
myGenerator = new PyStudyDirectoryProjectGenerator(true, callback);
}
@NotNull
@@ -18,9 +18,12 @@ package com.jetbrains.edu.learning.builtInServer;
import com.intellij.ide.util.projectWizard.AbstractNewProjectDialog;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.util.Consumer;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.python.PythonLanguage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author meanmail
@@ -32,12 +35,12 @@ public class EduPythonProjectCreator extends EduProjectCreator {
}
@Override
public boolean createCourseProject(@NotNull Course course) {
public boolean createCourseProject(@NotNull Course course, @Nullable Consumer<Project> callback) {
ApplicationManager.getApplication().invokeAndWait(() -> {
AbstractNewProjectDialog dlg = new AbstractNewProjectDialog() {
@Override
protected DefaultActionGroup createRootStep() {
return new BuiltInServerNewProjectStep(course);
return new BuiltInServerNewProjectStep(course, callback);
}
};
dlg.show();