mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
added extension to run some action before project generated
This commit is contained in:
@@ -21,7 +21,9 @@ import com.intellij.ide.util.projectWizard.actions.ProjectSpecificAction;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.platform.DirectoryProjectGenerator;
|
||||
import com.intellij.util.BooleanFunction;
|
||||
import com.intellij.util.NullableConsumer;
|
||||
import com.jetbrains.python.newProject.PyFrameworkProjectGenerator;
|
||||
import com.jetbrains.python.newProject.PythonBaseProjectGenerator;
|
||||
@@ -59,7 +61,8 @@ public class PyCharmNewProjectStep extends DefaultActionGroup implements DumbAwa
|
||||
List<DirectoryProjectGenerator> pluginSpecificGenerators = Lists.newArrayList();
|
||||
for (DirectoryProjectGenerator generator : generators) {
|
||||
if (generator instanceof PythonProjectGenerator) {
|
||||
ProjectSpecificAction group = new ProjectSpecificAction(generator, new ProjectSpecificSettingsStep(generator, callback));
|
||||
ProjectSpecificAction group =
|
||||
new ProjectSpecificAction(generator, new ProjectSpecificSettingsStep(generator, new PythonGenerateProjectCallback()));
|
||||
addAll(group.getChildren(null));
|
||||
}
|
||||
else
|
||||
@@ -71,4 +74,28 @@ public class PyCharmNewProjectStep extends DefaultActionGroup implements DumbAwa
|
||||
addAll(step.getChildren(null));
|
||||
}
|
||||
}
|
||||
|
||||
private static class PythonGenerateProjectCallback implements NullableConsumer<ProjectSettingsStepBase> {
|
||||
@Override
|
||||
public void consume(@Nullable ProjectSettingsStepBase base) {
|
||||
if (base == null) return;
|
||||
final DirectoryProjectGenerator generator = base.getProjectGenerator();
|
||||
final NullableConsumer<ProjectSettingsStepBase> callback = new GenerateProjectCallback();
|
||||
if (generator instanceof PythonProjectGenerator) {
|
||||
final BooleanFunction<PythonProjectGenerator> beforeProjectGenerated = ((PythonProjectGenerator)generator).beforeProjectGenerated();
|
||||
if (beforeProjectGenerated != null) {
|
||||
final boolean result = beforeProjectGenerated.fun((PythonProjectGenerator)generator);
|
||||
if (result) {
|
||||
callback.consume(base);
|
||||
}
|
||||
else {
|
||||
Messages.showWarningDialog("Project can not be generated", "Error in Project Generation");
|
||||
}
|
||||
}
|
||||
else {
|
||||
callback.consume(base);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.jetbrains.python.newProject;
|
||||
import com.intellij.facet.ui.ValidationResult;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.util.BooleanFunction;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -62,4 +63,9 @@ public abstract class PythonProjectGenerator {
|
||||
listener.stateChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public BooleanFunction<PythonProjectGenerator> beforeProjectGenerated() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user