package de.janthomae.leiningenplugin.project;
import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.packaging.artifacts.ModifiableArtifactModel;
import com.intellij.projectImport.ProjectImportBuilder;
import de.janthomae.leiningenplugin.LeiningenIcons;
import javax.swing.*;
import java.util.List;
/**
* This is for when we select the 'Import a Project' from the Main Menu in IDEA.
*
* Essentially, we create an IDEA project with a module in it that corresponds to the project.clj file that was selected.
*
* @author <a href="janthomae@janthomae.de">Jan Thomä</a>
* @version $Id:$
*/
public class LeiningenProjectBuilder extends ProjectImportBuilder<LeiningenProject> {
private VirtualFile projectFile;
@Override
public String getName() {
return "Leiningen";
}
@Override
public Icon getIcon() {
return LeiningenIcons.PROJECT_ICON;
}
@Override
public List<LeiningenProject> getList() {
return null;
}
@Override
public boolean isMarked(LeiningenProject leiningenProject) {
return true;
}
@Override
public void setList(List<LeiningenProject> leiningenProjects) {
}
@Override
public void setOpenProjectSettingsAfter(boolean b) {
}
@Override
public List<Module> commit(Project project, ModifiableModuleModel modifiableModuleModel,
ModulesProvider modulesProvider, ModifiableArtifactModel modifiableArtifactModel) {
LeiningenProjectsManager manager = LeiningenProjectsManager.getInstance(project);
return manager.importLeiningenProject(getProjectFile(), project);
}
public void setProjectFile(VirtualFile projectFile) {
this.projectFile = projectFile;
}
public VirtualFile getProjectFile() {
return projectFile;
}
public String getSuggestedProjectName() {
return LeiningenProject.nameAndVersionFromProjectFile(getProjectFile())[0];
}
}