diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java index 81443e2e8329..198b7d0a2e62 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java @@ -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 rootDetectors = componentDescriptor.getRootDetectors(); + final List 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 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); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/RootDetectionUtil.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/RootDetectionUtil.java index 70a5440e8ab2..bcab5f29a5e7 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/RootDetectionUtil.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/RootDetectionUtil.java @@ -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 detectors, boolean allowUserToSelectRootTypeIfNothingIsDetected) { + LOG.assertTrue(!detectors.isEmpty()); final List result = new ArrayList(); final List suggestedRoots = new ArrayList(); 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) {