package jetbrains.mps.ide.newModuleDialogs;
/*Generated by MPS */
import jetbrains.mps.smodel.Language;
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import jetbrains.mps.project.MPSProject;
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.ide.newSolutionDialog.NewModuleUtil;
import jetbrains.mps.project.StandaloneMPSProject;
import jetbrains.mps.ide.ui.dialogs.modules.NewLanguageSettings;
import jetbrains.mps.project.Solution;
import java.io.IOException;
import org.apache.log4j.Level;
import jetbrains.mps.project.MPSExtentions;
public class NewLanguageDialog extends AbstractModuleCreationDialog<Language> {
private static final Logger LOG = LogManager.getLogger(NewLanguageDialog.class);
public NewLanguageDialog(MPSProject project, @Nullable String virtualFolder) {
super(project, virtualFolder);
setTitle("New Language");
init();
}
@Override
protected void runCreation() {
// TODO: reuse runnable in DefaultLanguageProjectTemplate
Language language = NewModuleUtil.createLanguage(mySettings.getModuleName(), mySettings.getModuleLocation(), (MPSProject) myProject);
((StandaloneMPSProject) myProject).setFolderFor(language, myVirtualFolder);
try {
if (as_xpx6i8_a0a0a5a4(mySettings, NewLanguageSettings.class).isRuntimeSolutionNeeded()) {
Solution runtimeSolution = NewModuleUtil.createRuntimeSolution(language, mySettings.getModuleLocation(), (MPSProject) myProject);
((StandaloneMPSProject) myProject).setFolderFor(runtimeSolution, myVirtualFolder);
language.getModuleDescriptor().getRuntimeModules().add(runtimeSolution.getModuleReference());
}
if (as_xpx6i8_a0a1a5a4(mySettings, NewLanguageSettings.class).isSandBoxSolutionNeeded()) {
Solution sandboxSolution = NewModuleUtil.createSandboxSolution(language, mySettings.getModuleLocation(), (MPSProject) myProject);
((StandaloneMPSProject) myProject).setFolderFor(sandboxSolution, myVirtualFolder);
}
} catch (IOException e) {
// todo: !
if (LOG.isEnabledFor(Level.ERROR)) {
LOG.error("Cannot create runtime / sandbox module", e);
}
}
myResult = language;
}
@Override
protected String getExtension() {
return MPSExtentions.DOT_LANGUAGE;
}
@Override
protected NewLanguageSettings createSettingsInstance() {
return new NewLanguageSettings(getProjectPath());
}
private static <T> T as_xpx6i8_a0a0a5a4(Object o, Class<T> type) {
return (type.isInstance(o) ? (T) o : null);
}
private static <T> T as_xpx6i8_a0a1a5a4(Object o, Class<T> type) {
return (type.isInstance(o) ? (T) o : null);
}
}