VCS: create files when adding module or converting to directory format through VFS -> this will allow VCS to add files under control automatically

This commit is contained in:
irengrig
2011-11-02 16:54:08 +04:00
parent 7da6e6862d
commit f6e9633353
6 changed files with 38 additions and 11 deletions
@@ -16,10 +16,11 @@
package com.intellij.ide.util.importProject;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.util.projectWizard.importSources.DetectedProjectRoot;
import com.intellij.ide.util.projectWizard.importSources.impl.JavaProjectStructureDetector;
import com.intellij.ide.util.projectWizard.importSources.ProjectFromSourcesBuilder;
import com.intellij.ide.util.projectWizard.AbstractStepWithProgress;
import com.intellij.ide.util.projectWizard.importSources.DetectedProjectRoot;
import com.intellij.ide.util.projectWizard.importSources.ProjectFromSourcesBuilder;
import com.intellij.ide.util.projectWizard.importSources.impl.JavaProjectStructureDetector;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.text.StringUtil;
@@ -107,7 +108,7 @@ public class ModulesDetectionStep extends AbstractStepWithProgress<List<ModuleDe
}
@Override
public boolean validate() {
public boolean validate() throws ConfigurationException {
final boolean validated = super.validate();
if (!validated) {
return false;
@@ -28,12 +28,14 @@ import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.MultiLineLabelUI;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.DocumentAdapter;
@@ -51,6 +53,7 @@ import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -241,7 +244,7 @@ public class SourcePathsStep extends AbstractStepWithProgress<List<JavaModuleSou
}
}
public boolean validate() {
public boolean validate() throws ConfigurationException {
if (!super.validate()) {
return false;
}
@@ -270,7 +273,12 @@ public class SourcePathsStep extends AbstractStepWithProgress<List<JavaModuleSou
CommonBundle.getErrorTitle());
return false;
}
srcDir.mkdirs();
try {
VfsUtil.createDirectories(srcDir.getPath());
}
catch (IOException e) {
throw new ConfigurationException(e.getMessage());
}
}
}
return true;
@@ -18,6 +18,7 @@ package com.intellij.ide.util.projectWizard;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.util.ProgressIndicatorBase;
@@ -152,7 +153,7 @@ public abstract class AbstractStepWithProgress<Result> extends ModuleWizardStep
myPanel.revalidate();
}
public boolean validate() {
public boolean validate() throws ConfigurationException {
if (isProgressRunning()) {
final int answer = Messages.showOkCancelDialog(getComponent(), myPromptStopSearch,
IdeBundle.message("title.question"), IdeBundle.message("action.continue.searching"), IdeBundle.message("action.stop.searching"), Messages.getWarningIcon());
@@ -19,9 +19,11 @@ import com.intellij.CommonBundle;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vfs.VfsUtil;
import org.jetbrains.annotations.NonNls;
import java.io.File;
import java.io.IOException;
/**
* @author cdr
@@ -50,8 +52,10 @@ public class ProjectWizardUtil {
return false;
}
}
final boolean ok = dir.mkdirs();
if (!ok) {
try {
VfsUtil.createDirectories(dir.getPath());
}
catch (IOException e) {
Messages.showErrorDialog(IdeBundle.message("error.failed.to.create.directory", dir.getPath()), CommonBundle.getErrorTitle());
return false;
}
@@ -16,6 +16,7 @@
package com.intellij.ide.util.projectWizard;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.util.Pair;
import org.jetbrains.annotations.Nullable;
@@ -31,7 +32,7 @@ public interface SourcePathsBuilder {
void setContentEntryPath(String moduleRootPath);
List<Pair<String,String>> getSourcePaths();
List<Pair<String,String>> getSourcePaths() throws ConfigurationException;
void setSourcePaths(List<Pair<String,String>> sourcePaths);
@@ -28,9 +28,11 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ex.ProjectEx;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import java.io.File;
import java.io.IOException;
/**
* @author spleaner
@@ -50,7 +52,7 @@ public class SaveAsDirectoryBasedFormatAction extends AnAction implements DumbAw
assert baseDir != null;
File ideaDir = new File(baseDir.getPath(), ProjectEx.DIRECTORY_STORE_FOLDER + File.separatorChar);
final boolean ok = (ideaDir.exists() && ideaDir.isDirectory()) || ideaDir.mkdirs();
final boolean ok = (ideaDir.exists() && ideaDir.isDirectory()) || createDir(ideaDir);
if (ok) {
LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ideaDir);
@@ -73,6 +75,16 @@ public class SaveAsDirectoryBasedFormatAction extends AnAction implements DumbAw
}
}
private boolean createDir(File ideaDir) {
try {
VfsUtil.createDirectories(ideaDir.getPath());
return true;
}
catch (IOException e) {
return false;
}
}
@Override
public void update(AnActionEvent e) {
final Presentation presentation = e.getPresentation();