package com.jetbrains.lang.dart.projectWizard;
import com.intellij.ide.util.projectWizard.WebProjectTemplate;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModifiableModelsProvider;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.vfs.VirtualFile;
import com.jetbrains.lang.dart.DartBundle;
import icons.DartIcons;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public class DartProjectGenerator extends WebProjectTemplate<DartProjectWizardData> implements Comparable<DartProjectGenerator> {
@NotNull
public final String getName() {
return DartBundle.message("dart.title");
}
@NotNull
public final String getDescription() {
return DartBundle.message("dart.project.description");
}
public Icon getIcon() {
return DartIcons.Dart_16;
}
@NotNull
public GeneratorPeer<DartProjectWizardData> createPeer() {
return new DartGeneratorPeer();
}
@Override
public final void generateProject(@NotNull final Project project,
@NotNull final VirtualFile baseDir,
@NotNull final DartProjectWizardData data,
@NotNull final Module module) {
ApplicationManager.getApplication().runWriteAction(
() -> {
final ModifiableRootModel modifiableModel = ModifiableModelsProvider.SERVICE.getInstance().getModuleModifiableModel(module);
DartModuleBuilder.setupProject(modifiableModel, baseDir, data);
ModifiableModelsProvider.SERVICE.getInstance().commitModuleModifiableModel(modifiableModel);
});
}
@Override
public int compareTo(@NotNull final DartProjectGenerator generator) {
return getName().compareTo(generator.getName());
}
}