package jetbrains.mps.ide.newModuleDialogs; /*Generated by MPS */ import jetbrains.mps.project.AbstractModule; import com.intellij.openapi.ui.DialogWrapper; import jetbrains.mps.ide.ui.dialogs.modules.AbstractModuleCreationSettings; import jetbrains.mps.project.MPSProject; import org.jetbrains.annotations.Nullable; import com.intellij.project.ProjectKt; import javax.swing.JComponent; import jetbrains.mps.ide.newSolutionDialog.NewModuleUtil; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; public abstract class AbstractModuleCreationDialog<R extends AbstractModule> extends DialogWrapper { protected R myResult; protected AbstractModuleCreationSettings mySettings; protected final MPSProject myProject; protected String myError = null; protected String myVirtualFolder; public AbstractModuleCreationDialog(MPSProject project, @Nullable String virtualFolder) { super(project.getProject()); setOKButtonText("&OK"); setCancelButtonText("Ca&ncel"); myProject = project; myVirtualFolder = virtualFolder; } protected String getProjectPath() { // looks like magic return (myProject != null ? ((!(ProjectKt.isDirectoryBased(myProject.getProject())) ? myProject.getProjectFile().getParentFile().getAbsolutePath() : myProject.getProjectFile().getAbsolutePath())) : null); } @Nullable @Override public JComponent getPreferredFocusedComponent() { return mySettings.getPreferredFocusedComponent(); } @Override protected void doOKAction() { if (!(check())) { return; } super.doOKAction(); NewModuleUtil.runModuleCreation(myProject, new _FunctionTypes._void_P0_E0() { public void invoke() { runCreation(); } }); } public R getModule() { return myResult; } @Nullable public String getError() { return myError; } protected boolean check() { myError = NewModuleUtil.check(myProject.getRepository(), getExtension(), mySettings.getModuleName(), mySettings.getModuleLocation()); setErrorText(myError); return myError == null; } @Nullable public JComponent createCenterPanel() { if (mySettings == null) { mySettings = createSettingsInstance(); mySettings.setListener(new AbstractModuleCreationSettings.ModuleCreationSettingsListener() { @Override public void changed() { AbstractModuleCreationDialog.this.check(); } }); } return mySettings; } protected abstract String getExtension(); protected abstract AbstractModuleCreationSettings createSettingsInstance(); protected abstract void runCreation(); }