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.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.io.File; import java.util.List; public abstract class PythonProjectGenerator { private final List myListeners = ContainerUtil.newArrayList(); @Nullable public JComponent getSettingsPanel(File baseDir) throws ProcessCanceledException { return null; } public Object getProjectSettings() { return new PyNewProjectSettings(); } public ValidationResult warningValidation(@Nullable final Sdk sdk) { return ValidationResult.OK; } public void addSettingsStateListener(@NotNull SettingsListener listener) { myListeners.add(listener); } public void locationChanged(@NotNull final String newLocation) {} public interface SettingsListener { void stateChanged(); } public void fireStateChanged() { for (SettingsListener listener : myListeners) { listener.stateChanged(); } } }