mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-29887 - IOOBE: RootDetectionUtil.detectRoots
This commit is contained in:
+19
-10
@@ -28,6 +28,7 @@ import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.roots.libraries.LibraryType;
|
||||
import com.intellij.openapi.roots.libraries.ui.LibraryRootsComponentDescriptor;
|
||||
import com.intellij.openapi.roots.libraries.ui.OrderRoot;
|
||||
import com.intellij.openapi.roots.libraries.ui.RootDetector;
|
||||
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.libraries.LibraryEditingUtil;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.BaseLibrariesConfigurable;
|
||||
@@ -72,17 +73,25 @@ public class CreateNewLibraryAction extends DumbAwareAction {
|
||||
if (componentDescriptor == null) {
|
||||
componentDescriptor = new DefaultLibraryRootsComponentDescriptor();
|
||||
}
|
||||
final FileChooserDescriptor chooserDescriptor = componentDescriptor.createAttachFilesChooserDescriptor();
|
||||
chooserDescriptor.setTitle("Select Library Files");
|
||||
final VirtualFile[] rootCandidates = FileChooser.chooseFiles(myLibrariesConfigurable.getTree(), chooserDescriptor, myProject.getBaseDir());
|
||||
if (rootCandidates.length == 0) {
|
||||
return;
|
||||
}
|
||||
final List<? extends RootDetector> rootDetectors = componentDescriptor.getRootDetectors();
|
||||
final List<OrderRoot> roots;
|
||||
if (!rootDetectors.isEmpty()) {
|
||||
final FileChooserDescriptor chooserDescriptor = componentDescriptor.createAttachFilesChooserDescriptor();
|
||||
chooserDescriptor.setTitle("Select Library Files");
|
||||
final VirtualFile[] rootCandidates = FileChooser.chooseFiles(myLibrariesConfigurable.getTree(), chooserDescriptor,
|
||||
myProject.getBaseDir());
|
||||
if (rootCandidates.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
final List<OrderRoot> roots = RootDetectionUtil
|
||||
.detectRoots(Arrays.asList(rootCandidates), myLibrariesConfigurable.getTree(), myProject, componentDescriptor.getRootDetectors(),
|
||||
true);
|
||||
if (roots.isEmpty()) return;
|
||||
roots = RootDetectionUtil
|
||||
.detectRoots(Arrays.asList(rootCandidates), myLibrariesConfigurable.getTree(), myProject, rootDetectors,
|
||||
true);
|
||||
if (roots.isEmpty()) return;
|
||||
}
|
||||
else {
|
||||
roots = Collections.emptyList();
|
||||
}
|
||||
|
||||
final LibrariesModifiableModel modifiableModel = myLibrariesConfigurable.getModelProvider().getModifiableModel();
|
||||
final Library library = modifiableModel.createLibrary(LibraryEditingUtil.suggestNewLibraryName(modifiableModel, roots), myType);
|
||||
|
||||
+9
-4
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.openapi.roots.ui.configuration.libraryEditor;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.Task;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -37,6 +38,8 @@ import java.util.List;
|
||||
* @author nik
|
||||
*/
|
||||
public class RootDetectionUtil {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.ui.configuration.libraryEditor.RootDetectionUtil");
|
||||
|
||||
private RootDetectionUtil() {
|
||||
}
|
||||
|
||||
@@ -45,6 +48,7 @@ public class RootDetectionUtil {
|
||||
@Nullable Project project,
|
||||
@NotNull final List<? extends RootDetector> detectors,
|
||||
boolean allowUserToSelectRootTypeIfNothingIsDetected) {
|
||||
LOG.assertTrue(!detectors.isEmpty());
|
||||
final List<OrderRoot> result = new ArrayList<OrderRoot>();
|
||||
final List<SuggestedChildRootInfo> suggestedRoots = new ArrayList<SuggestedChildRootInfo>();
|
||||
new Task.Modal(project, "Scanning for Roots", true) {
|
||||
@@ -69,14 +73,15 @@ public class RootDetectionUtil {
|
||||
|
||||
if (!suggestedRoots.isEmpty()) {
|
||||
final DetectedRootsChooserDialog dialog = parentComponent != null
|
||||
? new DetectedRootsChooserDialog(parentComponent, suggestedRoots)
|
||||
: new DetectedRootsChooserDialog(project, suggestedRoots);
|
||||
? new DetectedRootsChooserDialog(parentComponent, suggestedRoots)
|
||||
: new DetectedRootsChooserDialog(project, suggestedRoots);
|
||||
dialog.show();
|
||||
if (!dialog.isOK()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
for (SuggestedChildRootInfo rootInfo : dialog.getChosenRoots()) {
|
||||
result.add(new OrderRoot(rootInfo.getSuggestedRoot(), rootInfo.getDetector().getRootType(), rootInfo.getDetector().isJarDirectory()));
|
||||
result
|
||||
.add(new OrderRoot(rootInfo.getSuggestedRoot(), rootInfo.getDetector().getRootType(), rootInfo.getDetector().isJarDirectory()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +91,7 @@ public class RootDetectionUtil {
|
||||
names.add(detector.getPresentableRootTypeName());
|
||||
}
|
||||
final int i = Messages.showChooseDialog("Choose category for selected files:", "Attach Files",
|
||||
ArrayUtil.toStringArray(names), names.get(0), null);
|
||||
ArrayUtil.toStringArray(names), names.get(0), null);
|
||||
if (i != -1) {
|
||||
final RootDetector detector = detectors.get(i);
|
||||
for (VirtualFile candidate : rootCandidates) {
|
||||
|
||||
Reference in New Issue
Block a user