package de.janthomae.leiningenplugin.project.wizard;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.projectImport.ProjectImportWizardStep;
import de.janthomae.leiningenplugin.module.forms.LeiningenModuleInformationForm;
import de.janthomae.leiningenplugin.module.model.ModuleInformation;
import de.janthomae.leiningenplugin.module.model.ModuleInformationUtils;
import de.janthomae.leiningenplugin.project.LeiningenProjectBuilder;
import javax.swing.*;
/**
* Created with IntelliJ IDEA.
* User: Chris Shellenbarger
* Date: 4/14/13
* Time: 4:33 PM
* <p/>
* The first page in the 'Import Project' workflow. After the user chooses the project.clj file location.
*/
public class LeiningenProjectImportWizardStep extends ProjectImportWizardStep {
private final ModuleInformationUtils moduleInformationUtils;
private final String projectFile;
private ModuleInformation moduleInformation;
private LeiningenModuleInformationForm moduleInformationForm;
/**
* Initialize the wizard step with wizard context and the path of the project.clj file.
*
* @param context The wizard context.
* @param projectFile Absolute path to the project.clj file to import.
*/
public LeiningenProjectImportWizardStep(WizardContext context,String projectFile) {
super(context);
this.projectFile = projectFile;
moduleInformationForm = new LeiningenModuleInformationForm(false);
this.moduleInformationUtils = new ModuleInformationUtils();
}
@Override
public boolean validate() throws ConfigurationException {
boolean result = true;
moduleInformationForm.getData(moduleInformation);
return result;
}
@Override
public void updateStep() {
String path = FileUtil.toSystemDependentName(projectFile);
moduleInformation = moduleInformationUtils.fromProjectFile(path);
moduleInformationForm.setData(moduleInformation);
}
@Override
public JComponent getComponent() {
return moduleInformationForm.getMainPanel();
}
@Override
public void updateDataModel() {
moduleInformationForm.getData(moduleInformation);
//Tell the builder where the projectFile is.
VirtualFile projectFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(moduleInformation.getProjectFilePath());
getBuilder().setProjectFile(projectFile);
//Point to the parent directory so we can create the .idea directory.
VirtualFile parent = getBuilder().getProjectFile().getParent();
String parentDir = FileUtil.toSystemDependentName(parent.getCanonicalPath());
getWizardContext().setProjectFileDirectory(parentDir);
}
@Override
protected LeiningenProjectBuilder getBuilder() {
return (LeiningenProjectBuilder) super.getBuilder();
}
}