diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/jikes/JikesConfigurable.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/jikes/JikesConfigurable.java index 838a67406028..d9cc3f71b7a3 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/jikes/JikesConfigurable.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/jikes/JikesConfigurable.java @@ -49,9 +49,9 @@ public class JikesConfigurable implements Configurable{ myJikesPathFieldBrowseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); - VirtualFile[] files = FileChooser.chooseFiles(myPathField, descriptor); - if (files.length != 0) { - myPathField.setText(files[0].getPath().replace('/', File.separatorChar)); + VirtualFile file = FileChooser.chooseFile(myPathField, descriptor, null); + if (file != null) { + myPathField.setText(file.getPath().replace('/', File.separatorChar)); } } }); diff --git a/java/compiler/impl/src/com/intellij/compiler/options/AnnotationProcessorsConfigurable.java b/java/compiler/impl/src/com/intellij/compiler/options/AnnotationProcessorsConfigurable.java index 30b53a166208..507d0d35692e 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/AnnotationProcessorsConfigurable.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/AnnotationProcessorsConfigurable.java @@ -2,7 +2,7 @@ package com.intellij.compiler.options; import com.intellij.compiler.CompilerConfiguration; import com.intellij.openapi.fileChooser.FileChooser; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.options.ConfigurationException; @@ -93,7 +93,7 @@ public class AnnotationProcessorsConfigurable implements SearchableConfigurable myProcessorPathField = new TextFieldWithBrowseButton(new ActionListener() { public void actionPerformed(ActionEvent e) { final VirtualFile[] files = - FileChooser.chooseFiles(myProcessorPathField, new FileChooserDescriptor(true, true, true, true, false, true)); + FileChooser.chooseFiles(myProcessorPathField, FileChooserDescriptorFactory.createAllButJarContentsDescriptor()); if (files.length > 0) { final StringBuilder builder = new StringBuilder(); for (VirtualFile file : files) { diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/elements/DirectoryCopyElementType.java b/java/compiler/impl/src/com/intellij/packaging/impl/elements/DirectoryCopyElementType.java index af4bb30a93d5..c92e6be88b2b 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/elements/DirectoryCopyElementType.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/elements/DirectoryCopyElementType.java @@ -15,9 +15,7 @@ */ package com.intellij.packaging.impl.elements; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; -import com.intellij.openapi.fileChooser.FileChooserDialog; -import com.intellij.openapi.fileChooser.FileChooserFactory; +import com.intellij.openapi.fileChooser.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.VirtualFile; @@ -54,9 +52,8 @@ public class DirectoryCopyElementType extends PackagingElementType chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact, @NotNull CompositePackagingElement parent) { - final FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, false, false, false, true); - final FileChooserDialog chooser = FileChooserFactory.getInstance().createFileChooser(descriptor, context.getProject()); - final VirtualFile[] files = chooser.choose(null, context.getProject()); + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createMultipleFoldersDescriptor(); + final VirtualFile[] files = FileChooser.chooseFiles(context.getProject(), descriptor); final List list = new ArrayList(); for (VirtualFile file : files) { list.add(new DirectoryCopyPackagingElement(file.getPath())); diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/elements/ManifestFileUtil.java b/java/compiler/impl/src/com/intellij/packaging/impl/elements/ManifestFileUtil.java index e579d3ec9df4..56e215103e98 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/elements/ManifestFileUtil.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/elements/ManifestFileUtil.java @@ -261,12 +261,12 @@ public class ManifestFileUtil { public static VirtualFile showDialogAndCreateManifest(final ArtifactEditorContext context, final CompositePackagingElement element) { FileChooserDescriptor descriptor = createDescriptorForManifestDirectory(); final VirtualFile directory = suggestManifestFileDirectory(element, context, context.getArtifactType()); - final VirtualFile[] files = FileChooser.chooseFiles(context.getProject(), descriptor, directory); - if (files.length != 1) { + final VirtualFile file = FileChooser.chooseFile(context.getProject(), descriptor, directory); + if (file == null) { return null; } - return createManifestFile(files[0], context.getProject()); + return createManifestFile(file, context.getProject()); } @Nullable diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/ui/properties/ElementWithManifestPropertiesPanel.java b/java/compiler/impl/src/com/intellij/packaging/impl/ui/properties/ElementWithManifestPropertiesPanel.java index 210113da362a..d568c524ce8c 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/ui/properties/ElementWithManifestPropertiesPanel.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/ui/properties/ElementWithManifestPropertiesPanel.java @@ -105,10 +105,10 @@ public abstract class ElementWithManifestPropertiesPanel libraries) { - FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, true, false, true, true); + FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createMultipleJavaPathDescriptor(); descriptor.setTitle(ProjectBundle.message("library.attach.sources.action")); descriptor.setDescription(ProjectBundle.message("library.attach.sources.description")); final Library firstLibrary = libraries.get(0).getLibrary(); diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java index 283a6713197e..30f6471b4d06 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SourcePathsStep.java @@ -25,6 +25,7 @@ import com.intellij.openapi.application.ApplicationManager; 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.ui.Messages; import com.intellij.openapi.ui.MultiLineLabelUI; import com.intellij.openapi.util.Computable; @@ -107,7 +108,7 @@ public class SourcePathsStep extends AbstractStepWithProgress implements D private void createUIComponents() { myLanguageLevelCombo = new LanguageLevelCombo(); final JTextField textField = new JTextField(); - final FileChooserDescriptor outputPathsChooserDescriptor = new FileChooserDescriptor(false, true, false, false, false, false); + final FileChooserDescriptor outputPathsChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); InsertPathAction.addTo(textField, outputPathsChooserDescriptor); outputPathsChooserDescriptor.setHideIgnored(false); BrowseFilesListener listener = new BrowseFilesListener(textField, "", ProjectBundle.message("project.compiler.output"), outputPathsChooserDescriptor); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DefaultLibraryRootsComponentDescriptor.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DefaultLibraryRootsComponentDescriptor.java index 5a788800b5fc..b6561e6c2c59 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DefaultLibraryRootsComponentDescriptor.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DefaultLibraryRootsComponentDescriptor.java @@ -13,6 +13,7 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.ui.Util; @@ -86,7 +87,7 @@ public class DefaultLibraryRootsComponentDescriptor extends LibraryRootsComponen } public FileChooserDescriptor createChooserDescriptor() { - return new FileChooserDescriptor(false, true, false, false, false, true); + return FileChooserDescriptorFactory.createMultipleFoldersDescriptor(); } public boolean addAsJarDirectories() { @@ -113,7 +114,7 @@ public class DefaultLibraryRootsComponentDescriptor extends LibraryRootsComponen } public FileChooserDescriptor createChooserDescriptor() { - return new FileChooserDescriptor(false, true, false, false, false, true); + return FileChooserDescriptorFactory.createMultipleFoldersDescriptor(); } public boolean addAsJarDirectories() { @@ -168,7 +169,7 @@ public class DefaultLibraryRootsComponentDescriptor extends LibraryRootsComponen @Override public FileChooserDescriptor createChooserDescriptor() { - return new FileChooserDescriptor(false, true, false, false, false, false); + return FileChooserDescriptorFactory.createSingleFolderDescriptor(); } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java index b8bb50cf7fa7..1ce1106df716 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java @@ -21,6 +21,7 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.JavaSdkVersion; @@ -57,7 +58,7 @@ public class JavadocOrderRootTypeUIFactory implements OrderRootTypeUIFactory { public JavadocPathsEditor(Sdk sdk) { super(ProjectBundle.message("sdk.configure.javadoc.tab"), JavadocOrderRootType.getInstance(), - new FileChooserDescriptor(false, true, true, false, true, true)); + FileChooserDescriptorFactory.createMultipleJavaPathDescriptor()); mySdk = sdk; } diff --git a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java index 7637beb3e27e..b15c2381b54f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java @@ -1094,7 +1094,7 @@ public class ExpectedTypesProvider { } if (("assertEquals".equals(name) || "assertSame".equals(name)) && method.getParameterList().getParametersCount() == 2 && args.length == 2) { ExpectedTypeInfo info = getEqualsType(args[0] == argument ? args[1] : args[0]); - if (info != null) { + if (info != null && parameterType.isAssignableFrom(info.getDefaultType())) { return info.getDefaultType(); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java index 029f15799340..78e19e9979ee 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java @@ -232,26 +232,24 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager { final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); descriptor.setTitle(ProjectBundle.message("external.annotations.root.chooser.title", entry.getPresentableName())); descriptor.setDescription(ProjectBundle.message("external.annotations.root.chooser.description")); - final VirtualFile[] files = FileChooser.chooseFiles(project, descriptor); - if (files.length > 0) { + final VirtualFile file = FileChooser.chooseFile(project, descriptor); + if (file != null) { new WriteCommandAction(project) { protected void run(final Result result) throws Throwable { - if (files[0] != null) { - appendChosenAnnotationsRoot(entry, files[0]); - final List xmlFiles = findExternalAnnotationsFile(listOwner); - if (xmlFiles != null) { //file already exists under appeared content root - if (!CodeInsightUtilBase.preparePsiElementForWrite(xmlFiles.get(0))) return; - annotateExternally(listOwner, annotationFQName, xmlFiles.get(0), fromFile, value); - } - else { - final XmlFile annotationsXml = createAnnotationsXml(files[0], packageName); - if (annotationsXml != null) { - final List createdFiles = new ArrayList(); - createdFiles.add(annotationsXml); - myExternalAnnotations.put(getFQN(packageName, virtualFile), createdFiles); - } - annotateExternally(listOwner, annotationFQName, annotationsXml, fromFile, value); + appendChosenAnnotationsRoot(entry, file); + final List xmlFiles = findExternalAnnotationsFile(listOwner); + if (xmlFiles != null) { //file already exists under appeared content root + if (!CodeInsightUtilBase.preparePsiElementForWrite(xmlFiles.get(0))) return; + annotateExternally(listOwner, annotationFQName, xmlFiles.get(0), fromFile, value); + } + else { + final XmlFile annotationsXml = createAnnotationsXml(file, packageName); + if (annotationsXml != null) { + final List createdFiles = new ArrayList(); + createdFiles.add(annotationsXml); + myExternalAnnotations.put(getFQN(packageName, virtualFile), createdFiles); } + annotateExternally(listOwner, annotationFQName, annotationsXml, fromFile, value); } } }.execute(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/LocateLibraryDialog.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/LocateLibraryDialog.java index 17d2534f583f..cf9675ae78cc 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/LocateLibraryDialog.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/LocateLibraryDialog.java @@ -17,6 +17,7 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -75,7 +76,7 @@ public class LocateLibraryDialog extends DialogWrapper { myCopyToDir.setText(new File (module.getModuleFilePath()).getParent()); myCopyToDir.addBrowseFolderListener(QuickFixBundle.message("add.library.title.choose.folder"), QuickFixBundle.message("add.library.description.choose.folder"), myProject, - new FileChooserDescriptor(false,true,false,false,false,false)); + FileChooserDescriptorFactory.createSingleFolderDescriptor()); final ActionListener listener = new ActionListener() { public void actionPerformed(final ActionEvent e) { diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java index 22c4e9d513f2..626a1d62ba55 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java @@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; @@ -74,12 +75,12 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper { myElementsToMove = elementsToMove; myMoveCallback = moveCallback; myDestDirectoryField.setText(FileUtil.toSystemDependentName(directory.getVirtualFile().getPath())); - final FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, false, false, false, false); + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); myDestDirectoryField.getButton().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - final VirtualFile[] files = FileChooser.chooseFiles(myDirectory.getProject(), descriptor, directory.getVirtualFile()); - if (files.length == 1) { - myDestDirectoryField.setText(FileUtil.toSystemDependentName(files[0].getPath())); + final VirtualFile file = FileChooser.chooseFile(myDirectory.getProject(), descriptor, directory.getVirtualFile()); + if (file != null) { + myDestDirectoryField.setText(FileUtil.toSystemDependentName(file.getPath())); } } }); diff --git a/java/openapi/src/com/intellij/psi/util/MethodSignatureBase.java b/java/openapi/src/com/intellij/psi/util/MethodSignatureBase.java index c74c6b00d7c4..67abbb2dd995 100644 --- a/java/openapi/src/com/intellij/psi/util/MethodSignatureBase.java +++ b/java/openapi/src/com/intellij/psi/util/MethodSignatureBase.java @@ -84,7 +84,7 @@ public abstract class MethodSignatureBase implements MethodSignature { @SuppressWarnings({"HardCodedStringLiteral"}) public String toString() { - String s = "MethodSignature: "; + String s = getClass().getSimpleName() + ": "; final PsiTypeParameter[] typeParameters = getTypeParameters(); if (typeParameters.length != 0) { String sep = "<"; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java b/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java index 35c685422204..849987b4cd1f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java @@ -16,7 +16,9 @@ package com.intellij.codeInsight; +import com.intellij.codeInsight.completion.CompletionPhase; import com.intellij.codeInsight.completion.CompletionProgressIndicator; +import com.intellij.codeInsight.completion.CompletionType; import com.intellij.codeInsight.completion.impl.CompletionServiceImpl; import com.intellij.codeInsight.editorActions.CompletionAutoPopupHandler; import com.intellij.codeInsight.hint.ShowParameterInfoHandler; @@ -38,7 +40,6 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; -import com.intellij.psi.util.PsiUtilBase; import com.intellij.util.Alarm; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.Nullable; @@ -83,34 +84,43 @@ public class AutoPopupController implements Disposable { } public void autoPopupMemberLookup(final Editor editor, @Nullable final Condition condition){ + scheduleAutoPopup(editor, condition); + } + + public void scheduleAutoPopup(final Editor editor, @Nullable final Condition condition) { if (ApplicationManager.getApplication().isUnitTestMode() && !CompletionAutoPopupHandler.ourTestingAutopopup) { return; } - final CodeInsightSettings settings = CodeInsightSettings.getInstance(); - if (settings.AUTO_POPUP_COMPLETION_LOOKUP) { - if (PsiUtilBase.getPsiFileInEditor(editor, myProject) == null) return; - final Runnable request = new Runnable(){ - public void run(){ - if (!myProject.isDisposed() && !editor.isDisposed()) { - CompletionAutoPopupHandler.scheduleAutoPopup(editor, condition); - } - } - }; - - addRequest(request, settings.AUTO_LOOKUP_DELAY); + if (!CodeInsightSettings.getInstance().AUTO_POPUP_COMPLETION_LOOKUP) { + return; } - } - public void invokeAutoPopupRunnable(final Runnable request, final int delay) { - if (ApplicationManager.getApplication().isUnitTestMode() && !CompletionAutoPopupHandler.ourTestingAutopopup) return; final CompletionProgressIndicator currentCompletion = CompletionServiceImpl.getCompletionService().getCurrentCompletion(); if (currentCompletion != null) { currentCompletion.closeAndFinish(true); } - addRequest(request, delay); + final CompletionPhase.AutoPopupAlarm phase = new CompletionPhase.AutoPopupAlarm(false, editor); + CompletionServiceImpl.setCompletionPhase(phase); + + addRequest(new Runnable() { + @Override + public void run() { + CompletionAutoPopupHandler.runLaterWithCommitted(myProject, editor.getDocument(), new Runnable() { + @Override + public void run() { + if (phase.isExpired()) return; + + PsiFile file = PsiDocumentManager.getInstance(myProject).getPsiFile(editor.getDocument()); + if (file != null && condition != null && !condition.value(file)) return; + + CompletionAutoPopupHandler.invokeCompletion(CompletionType.BASIC, true, myProject, editor, 0); + } + }); + } + }, CodeInsightSettings.getInstance().AUTO_LOOKUP_DELAY); } @TestOnly diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java index ce42b95735b9..f028179b006f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.completion; +import com.intellij.codeInsight.AutoPopupController; import com.intellij.codeInsight.CodeInsightSettings; import com.intellij.codeInsight.completion.impl.CompletionServiceImpl; import com.intellij.codeInsight.completion.impl.CompletionSorterImpl; @@ -599,7 +600,7 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement public void scheduleRestart() { if (isAutopopupCompletion() && hideAutopopupIfMeaningless()) { - CompletionAutoPopupHandler.scheduleAutoPopup(myEditor, null); + AutoPopupController.getInstance(getProject()).scheduleAutoPopup(myEditor, null); return; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java index 7f71d361997c..4478e4949191 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java @@ -53,8 +53,11 @@ public class CompletionServiceImpl extends CompletionService{ ProjectManager.getInstance().addProjectManagerListener(new ProjectManagerAdapter() { @Override public void projectClosing(Project project) { - LookupManager.getInstance(project).hideActiveLookup(); - setCompletionPhase(CompletionPhase.NoCompletion); + CompletionProgressIndicator indicator = getCurrentCompletion(); + if (indicator != null && indicator.getProject() == project) { + LookupManager.getInstance(project).hideActiveLookup(); + setCompletionPhase(CompletionPhase.NoCompletion); + } } }); } @@ -214,7 +217,7 @@ public class CompletionServiceImpl extends CompletionService{ CompletionPhase oldPhase = getCompletionPhase(); CompletionProgressIndicator oldIndicator = oldPhase.indicator; if (oldIndicator != null && !(phase instanceof CompletionPhase.BgCalculation)) { - LOG.assertTrue(!oldIndicator.isRunning() || oldIndicator.isCanceled(), "don't change phase during running completion"); + LOG.assertTrue(!oldIndicator.isRunning() || oldIndicator.isCanceled(), "don't change phase during running completion: oldPhase=" + oldPhase); } Disposer.dispose(oldPhase); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java index 22c9126264e8..e5eaf619e081 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java @@ -29,13 +29,11 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.PsiDocumentManagerImpl; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * @author peter @@ -83,35 +81,10 @@ public class CompletionAutoPopupHandler extends TypedHandlerDelegate { return Result.CONTINUE; } - scheduleAutoPopup(editor, null); + AutoPopupController.getInstance(project).scheduleAutoPopup(editor, null); return Result.STOP; } - public static void scheduleAutoPopup(final Editor editor, @Nullable final Condition condition) { - final Project project = editor.getProject(); - if (project == null) return; - - final CompletionPhase.AutoPopupAlarm phase = new CompletionPhase.AutoPopupAlarm(false, editor); - CompletionServiceImpl.setCompletionPhase(phase); - - AutoPopupController.getInstance(project).invokeAutoPopupRunnable(new Runnable() { - @Override - public void run() { - runLaterWithCommitted(project, editor.getDocument(), new Runnable() { - @Override - public void run() { - if (phase.isExpired()) return; - - PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); - if (file != null && condition != null && !condition.value(file)) return; - - invokeCompletion(CompletionType.BASIC, true, project, editor, 0); - } - }); - } - }, CodeInsightSettings.getInstance().AUTO_LOOKUP_DELAY); - } - public static void invokeCompletion(CompletionType completionType, boolean autopopup, Project project, Editor editor, int time) { @@ -130,7 +103,8 @@ public class CompletionAutoPopupHandler extends TypedHandlerDelegate { } } - public static void runLaterWithCommitted(@NotNull final Project project, final Document document, final Runnable runnable) { + public static void runLaterWithCommitted(@NotNull final Project project, + @NotNull final Document document, @NotNull final Runnable runnable) { final long beforeStamp = document.getModificationStamp(); ((PsiDocumentManagerImpl)PsiDocumentManager.getInstance(project)).performWhenAllCommitted(new Runnable() { @Override diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/TypedHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/TypedHandler.java index 8818e3716e61..dbf450fa2409 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/TypedHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/TypedHandler.java @@ -16,10 +16,10 @@ package com.intellij.codeInsight.lookup.impl; +import com.intellij.codeInsight.AutoPopupController; import com.intellij.codeInsight.completion.*; import com.intellij.codeInsight.completion.impl.CompletionServiceImpl; import com.intellij.codeInsight.editorActions.AutoHardWrapHandler; -import com.intellij.codeInsight.editorActions.CompletionAutoPopupHandler; import com.intellij.codeInsight.lookup.CharFilter; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupManager; @@ -81,7 +81,7 @@ public class TypedHandler extends TypedActionHandlerBase { }); lookup.appendPrefix(charTyped); if (lookup.isStartCompletionWhenNothingMatches() && lookup.getItems().isEmpty()) { - CompletionAutoPopupHandler.scheduleAutoPopup(editor, null); + AutoPopupController.getInstance(editor.getProject()).scheduleAutoPopup(editor, null); } AutoHardWrapHandler.getInstance().wrapLineIfNecessary(editor, dataContext, modificationStamp); diff --git a/platform/lang-impl/src/com/intellij/codeInspection/actions/ViewOfflineResultsAction.java b/platform/lang-impl/src/com/intellij/codeInspection/actions/ViewOfflineResultsAction.java index 925ace296deb..4ed2b0c5a7df 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/actions/ViewOfflineResultsAction.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/actions/ViewOfflineResultsAction.java @@ -81,16 +81,15 @@ public class ViewOfflineResultsAction extends AnAction implements DumbAware { LOG.assertTrue(project != null); - final VirtualFile[] virtualFiles = FileChooser.chooseFiles(project, BrowseFilesListener.SINGLE_DIRECTORY_DESCRIPTOR); - if (virtualFiles.length == 0) return; - if (!virtualFiles[0].isDirectory()) return; + final VirtualFile virtualFile = FileChooser.chooseFile(project, BrowseFilesListener.SINGLE_DIRECTORY_DESCRIPTOR); + if (virtualFile == null || !virtualFile.isDirectory()) return; final Map>> resMap = new HashMap>>(); final String [] profileName = new String[1]; final Runnable process = new Runnable() { public void run() { - final VirtualFile[] files = virtualFiles[0].getChildren(); + final VirtualFile[] files = virtualFile.getChildren(); try { for (final VirtualFile inspectionFile : files) { if (inspectionFile.isDirectory()) continue; diff --git a/platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java b/platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java index e23f341ab296..92bdfba069af 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java @@ -71,9 +71,9 @@ public class CommonProgramParametersPanel extends JPanel { FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fileChooserDescriptor.setTitle(ExecutionBundle.message("select.working.directory.message")); fileChooserDescriptor.putUserData(LangDataKeys.MODULE_CONTEXT, myModuleContext); - VirtualFile[] files = FileChooser.chooseFiles(myWorkingDirectoryComponent, fileChooserDescriptor); - if (files.length != 0) { - setWorkingDirectory(files[0].getPresentableUrl()); + VirtualFile file = FileChooser.chooseFile(myWorkingDirectoryComponent, fileChooserDescriptor, null); + if (file != null) { + setWorkingDirectory(file.getPresentableUrl()); } } }); diff --git a/platform/lang-impl/src/com/intellij/internal/DumpIntentionsAction.java b/platform/lang-impl/src/com/intellij/internal/DumpIntentionsAction.java index b9a36f7c30cd..5ed1ef54842b 100644 --- a/platform/lang-impl/src/com/intellij/internal/DumpIntentionsAction.java +++ b/platform/lang-impl/src/com/intellij/internal/DumpIntentionsAction.java @@ -47,11 +47,11 @@ public class DumpIntentionsAction extends AnAction implements DumbAware { } public void actionPerformed(AnActionEvent e) { - final VirtualFile[] files = - FileChooser.chooseFiles(e.getData(PlatformDataKeys.PROJECT), FileChooserDescriptorFactory.createSingleFolderDescriptor()); - if (files.length > 0) { + final VirtualFile file = + FileChooser.chooseFile(e.getData(PlatformDataKeys.PROJECT), FileChooserDescriptorFactory.createSingleFolderDescriptor(), null); + if (file != null) { final List list = IntentionManagerSettings.getInstance().getMetaData(); - final File root = VfsUtil.virtualToIoFile(files[0]); + final File root = VfsUtil.virtualToIoFile(file); Element el = new Element("root"); Map categoryMap = new HashMap(); for (IntentionActionMetaData metaData : list) { diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/ChooserBasedAttachRootButtonDescriptor.java b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/ChooserBasedAttachRootButtonDescriptor.java index c8689ee0635e..4e4de9a2826d 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/ChooserBasedAttachRootButtonDescriptor.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/ChooserBasedAttachRootButtonDescriptor.java @@ -15,6 +15,7 @@ package com.intellij.openapi.roots.libraries.ui; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; @@ -33,7 +34,7 @@ public abstract class ChooserBasedAttachRootButtonDescriptor extends AttachRootB } public FileChooserDescriptor createChooserDescriptor() { - return new FileChooserDescriptor(false, true, true, false, true, true); + return FileChooserDescriptorFactory.createMultipleJavaPathDescriptor(); } public abstract String getChooserTitle(final @Nullable String libraryName); diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java index 148fa8c5a243..c1704f937b0b 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java @@ -26,6 +26,7 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.actionSystem.ex.CustomComponentAction; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.fileChooser.FileSystemTree; import com.intellij.openapi.fileChooser.actions.NewFolderAction; import com.intellij.openapi.fileChooser.ex.FileSystemTreeImpl; @@ -91,7 +92,7 @@ public class ContentEntryTreeEditor { myTreePanel.add(new ToolbarPanel(scrollPane, myEditingActionsGroup), BorderLayout.CENTER); myTreePanel.setVisible(false); - myDescriptor = new FileChooserDescriptor(false, true, false, false, false, true); + myDescriptor = FileChooserDescriptorFactory.createMultipleFoldersDescriptor(); myDescriptor.setShowFileSystemRoots(false); } diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionToolsConfigurable.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionToolsConfigurable.java index 81cd24a06836..57ced2e56459 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionToolsConfigurable.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/InspectionToolsConfigurable.java @@ -122,12 +122,12 @@ public abstract class InspectionToolsConfigurable extends BaseConfigurable imple } }; descriptor.setDescription("Choose profile file"); - final VirtualFile[] files = FileChooser.chooseFiles(myWholePanel, descriptor); - if (files.length == 0) return; + final VirtualFile file = FileChooser.chooseFile(myWholePanel, descriptor, null); + if (file == null) return; InspectionProfileImpl profile = new InspectionProfileImpl("TempProfile", InspectionToolRegistrar.getInstance(), myProfileManager); try { - Element rootElement = JDOMUtil.loadDocument(VfsUtil.virtualToIoFile(files[0])).getRootElement(); + Element rootElement = JDOMUtil.loadDocument(VfsUtil.virtualToIoFile(file)).getRootElement(); if (Comparing.strEqual(rootElement.getName(), "component")) {//import right from .idea/inspectProfiles/xxx.xml rootElement = (Element)rootElement.getChildren().get(0); } @@ -187,15 +187,15 @@ public abstract class InspectionToolsConfigurable extends BaseConfigurable imple public void actionPerformed(ActionEvent e) { final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); descriptor.setDescription("Choose directory to store profile file"); - final VirtualFile[] files = FileChooser.chooseFiles(myWholePanel, descriptor); - if (files.length == 0) return; + final VirtualFile file = FileChooser.chooseFile(myWholePanel, descriptor, null); + if (file == null) return; final Element element = new Element("inspections"); try { final SingleInspectionProfilePanel panel = getSelectedPanel(); LOG.assertTrue(panel != null); final InspectionProfileImpl profile = (InspectionProfileImpl)panel.getSelectedProfile(); profile.writeExternal(element); - final String filePath = FileUtil.toSystemDependentName(files[0].getPath()) + File.separator + FileUtil.sanitizeFileName(profile.getName()) + ".xml"; + final String filePath = FileUtil.toSystemDependentName(file.getPath()) + File.separator + FileUtil.sanitizeFileName(profile.getName()) + ".xml"; if (new File(filePath).isFile()) { if (Messages.showOkCancelDialog(myWholePanel, "File \'" + filePath + "\' already exist. Do you want to overwrite it?", "Warning", Messages.getQuestionIcon()) != DialogWrapper.OK_EXIT_CODE) return; } diff --git a/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java b/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java index 988da055f10d..39926811501a 100644 --- a/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java +++ b/platform/lang-impl/src/com/intellij/tools/ToolEditorDialog.java @@ -229,9 +229,8 @@ public class ToolEditorDialog extends DialogWrapper { new ActionListener() { public void actionPerformed(ActionEvent e) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); - VirtualFile[] files = FileChooser.chooseFiles(myProject, descriptor); - if (files.length != 0) { - VirtualFile file = files[0]; + VirtualFile file = FileChooser.chooseFile(myProject, descriptor, null); + if (file != null) { myTfCommand.setText(file.getPresentableUrl()); String workingDirectory = myTfCommandWorkingDirectory.getText(); if (workingDirectory == null || workingDirectory.length() == 0){ @@ -309,9 +308,9 @@ public class ToolEditorDialog extends DialogWrapper { new ActionListener() { public void actionPerformed(ActionEvent e) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); - VirtualFile[] files = FileChooser.chooseFiles(myProject, descriptor); - if (files.length != 0) { - myTfCommandWorkingDirectory.setText(files[0].getPresentableUrl()); + VirtualFile file = FileChooser.chooseFile(myProject, descriptor); + if (file != null) { + myTfCommandWorkingDirectory.setText(file.getPresentableUrl()); } } } diff --git a/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java b/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java index 25ecd9392179..59f2117e9870 100644 --- a/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java +++ b/platform/lang-impl/src/com/intellij/ui/debugger/extensions/PlaybackDebugger.java @@ -176,12 +176,12 @@ public class PlaybackDebugger implements UiDebuggerExtension, PlaybackRunner.Sta public void actionPerformed(AnActionEvent e) { if (pathToFile() == null) { - VirtualFile[] files = FileChooser.chooseFiles(myComponent, FILE_DESCRIPTOR); - if (files.length > 0) { - VirtualFile selectedFile = files[0]; + VirtualFile selectedFile = FileChooser.chooseFile(myComponent, FILE_DESCRIPTOR, null); + if (selectedFile != null) { myState.currentScript = selectedFile.getPresentableUrl(); myCurrentScript.setText(myState.currentScript); - } else { + } + else { Messages.showErrorDialog("File to save is not selected.", "Cannot save script"); return; } @@ -217,9 +217,8 @@ public class PlaybackDebugger implements UiDebuggerExtension, PlaybackRunner.Sta @Override public void actionPerformed(AnActionEvent e) { - VirtualFile[] files = FileChooser.chooseFiles(myComponent, FILE_DESCRIPTOR, pathToFile()); - if (files.length > 0) { - VirtualFile selectedFile = files[0]; + VirtualFile selectedFile = FileChooser.chooseFile(myComponent, FILE_DESCRIPTOR, pathToFile()); + if (selectedFile != null) { myState.currentScript = selectedFile.getPresentableUrl(); loadFrom(selectedFile); myCurrentScript.setText(myState.currentScript); diff --git a/platform/lang-impl/src/com/intellij/util/download/impl/FileDownloaderImpl.java b/platform/lang-impl/src/com/intellij/util/download/impl/FileDownloaderImpl.java index e34a50ca2d42..a9d10e413c3a 100644 --- a/platform/lang-impl/src/com/intellij/util/download/impl/FileDownloaderImpl.java +++ b/platform/lang-impl/src/com/intellij/util/download/impl/FileDownloaderImpl.java @@ -37,7 +37,6 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; -import com.intellij.util.ArrayUtil; import com.intellij.util.download.DownloadableFileDescription; import com.intellij.util.download.FileDownloader; import com.intellij.util.io.UrlConnectionUtil; @@ -178,15 +177,15 @@ public class FileDownloaderImpl implements FileDownloader { final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); descriptor.setTitle(IdeBundle.message("dialog.directory.for.downloaded.files.title")); - final VirtualFile[] files; + final VirtualFile file; if (myProject != null) { - files = FileChooser.chooseFiles(myProject, descriptor, myProject.getBaseDir()); + file = FileChooser.chooseFile(myProject, descriptor, myProject.getBaseDir()); } else { - files = FileChooser.chooseFiles(myParent, descriptor); + file = FileChooser.chooseFile(myParent, descriptor, null); } - return ArrayUtil.getFirstElement(files); + return file; } @NotNull diff --git a/platform/platform-api/src/com/intellij/execution/util/ExecutableDialog.java b/platform/platform-api/src/com/intellij/execution/util/ExecutableDialog.java index 650c14a3e4ea..82841fb99bd5 100644 --- a/platform/platform-api/src/com/intellij/execution/util/ExecutableDialog.java +++ b/platform/platform-api/src/com/intellij/execution/util/ExecutableDialog.java @@ -13,6 +13,7 @@ package com.intellij.execution.util; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; @@ -58,7 +59,7 @@ public class ExecutableDialog extends DialogWrapper { private void createUIComponents() { myExecutablePath = new TextFieldWithBrowseButton(); myExecutablePath.setText(myExecutableValidator.getCurrentExecutable()); - FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, false); + FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); myExecutablePath.addBrowseFolderListener(myExecutableValidator.getFileChooserTitle(), myExecutableValidator.getFileChooserDescription(), null, descriptor); myExecutablePath.getTextField().getDocument().addDocumentListener(new DocumentAdapter() { diff --git a/platform/platform-api/src/com/intellij/ide/util/BrowseFilesListener.java b/platform/platform-api/src/com/intellij/ide/util/BrowseFilesListener.java index e25f96811077..14fdfe6a7789 100644 --- a/platform/platform-api/src/com/intellij/ide/util/BrowseFilesListener.java +++ b/platform/platform-api/src/com/intellij/ide/util/BrowseFilesListener.java @@ -17,6 +17,7 @@ package com.intellij.ide.util; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -37,8 +38,8 @@ public class BrowseFilesListener implements ActionListener { private final String myTitle; private final String myDescription; private final FileChooserDescriptor myChooserDescriptor; - public static final FileChooserDescriptor SINGLE_DIRECTORY_DESCRIPTOR = new FileChooserDescriptor(false, true, false, false, false, false); - public static final FileChooserDescriptor SINGLE_FILE_DESCRIPTOR = new FileChooserDescriptor(true, false, false, false, false, false); + public static final FileChooserDescriptor SINGLE_DIRECTORY_DESCRIPTOR = FileChooserDescriptorFactory.createSingleFolderDescriptor(); + public static final FileChooserDescriptor SINGLE_FILE_DESCRIPTOR = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); public BrowseFilesListener(JTextField textField, final String title, final String description, final FileChooserDescriptor chooserDescriptor) { myTextField = textField; diff --git a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooser.java b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooser.java index 04af7455f9c6..db6d6546a8fc 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooser.java +++ b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooser.java @@ -15,10 +15,12 @@ */ package com.intellij.openapi.fileChooser; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.ArrayUtil; import com.intellij.util.Consumer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -26,6 +28,7 @@ import org.jetbrains.annotations.Nullable; import java.awt.*; public class FileChooser { + private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.fileChooser.FileChooser"); private FileChooser() {} @@ -39,6 +42,28 @@ public class FileChooser { return chooseFiles(parent, descriptor, null); } + @Nullable + public static VirtualFile chooseFile(Project project, FileChooserDescriptor descriptor) { + return chooseFile(project, descriptor, null); + } + + @Nullable + public static VirtualFile chooseFile(Project project, FileChooserDescriptor descriptor, @Nullable VirtualFile toSelect) { + LOG.assertTrue(!descriptor.isChooseMultiple()); + return ArrayUtil.getFirstElement(chooseFiles(project, descriptor, toSelect)); + } + + @Nullable + public static VirtualFile chooseFile(Component parent, FileChooserDescriptor descriptor) { + return chooseFile(parent, descriptor, null); + } + + @Nullable + public static VirtualFile chooseFile(Component parent, FileChooserDescriptor descriptor, @Nullable VirtualFile toSelect) { + LOG.assertTrue(!descriptor.isChooseMultiple()); + return ArrayUtil.getFirstElement(chooseFiles(parent, descriptor, toSelect)); + } + @NotNull public static VirtualFile[] chooseFiles(Project project, FileChooserDescriptor descriptor, @Nullable VirtualFile toSelect) { FileChooserDialog chooser = FileChooserFactory.getInstance().createFileChooser(descriptor, project); diff --git a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java index 7816dcd949f7..9d8fe5eff7cf 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java +++ b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooserDescriptor.java @@ -32,6 +32,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * @see FileChooserDescriptorFactory + */ public class FileChooserDescriptor implements Cloneable{ private boolean myChooseFiles; private boolean myChooseFolders; @@ -51,6 +54,7 @@ public class FileChooserDescriptor implements Cloneable{ private final Map myUserData = new HashMap(); /** + * Creates new instance. Use methods from {@link FileChooserDescriptorFactory} for most used descriptors * @param chooseFiles controls whether files can be chosen * @param chooseFolders controls whether folders can be chosen * @param chooseJars diff --git a/platform/platform-api/src/com/intellij/ui/GuiUtils.java b/platform/platform-api/src/com/intellij/ui/GuiUtils.java index 6fa3d4f9e77f..ff93d78becc7 100644 --- a/platform/platform-api/src/com/intellij/ui/GuiUtils.java +++ b/platform/platform-api/src/com/intellij/ui/GuiUtils.java @@ -80,9 +80,9 @@ public class GuiUtils { return constructFieldWithBrowseButton(aTextField, new ActionListener() { public void actionPerformed(ActionEvent e) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.getDirectoryChooserDescriptor(aSearchedObjectName); - VirtualFile[] files = FileChooser.chooseFiles(aTextField, descriptor); - if (files.length != 0) { - aTextField.setText(FileUtil.toSystemDependentName(files[0].getPath())); + VirtualFile file = FileChooser.chooseFile(aTextField, descriptor); + if (file != null) { + aTextField.setText(FileUtil.toSystemDependentName(file.getPath())); aTextField.postActionEvent(); } } @@ -94,10 +94,10 @@ public class GuiUtils { return constructFieldWithBrowseButton(aFieldWithHistory, new ActionListener() { public void actionPerformed(ActionEvent e) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.getFileChooserDescriptor(aSearchedObjectName); - VirtualFile[] files = FileChooser.chooseFiles(aFieldWithHistory, descriptor); - if (files.length != 0) { + VirtualFile file = FileChooser.chooseFile(aFieldWithHistory, descriptor); + if (file != null) { try { - aFieldWithHistory.setText(VfsUtil.virtualToIoFile(files[0]).toURL().toString()); + aFieldWithHistory.setText(VfsUtil.virtualToIoFile(file).toURL().toString()); } catch (MalformedURLException e1) { aFieldWithHistory.setText(""); diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ChooseComponentsToExportDialog.java b/platform/platform-impl/src/com/intellij/ide/actions/ChooseComponentsToExportDialog.java index 7874189358ca..4415fc3d5e46 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ChooseComponentsToExportDialog.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ChooseComponentsToExportDialog.java @@ -23,6 +23,7 @@ import com.intellij.openapi.components.ExportableComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.openapi.util.io.FileUtil; @@ -123,8 +124,7 @@ public class ChooseComponentsToExportDialog extends DialogWrapper { @Nullable public static String chooseSettingsFile(String oldPath, Component parent, final String title, final String description) { - FileChooserDescriptor chooserDescriptor; - chooserDescriptor = new FileChooserDescriptor(true, true, true, true, false, false); + FileChooserDescriptor chooserDescriptor = FileChooserDescriptorFactory.createSingleLocalFileDescriptor(); chooserDescriptor.setDescription(description); chooserDescriptor.setHideIgnored(false); chooserDescriptor.setTitle(title); @@ -140,11 +140,10 @@ public class ChooseComponentsToExportDialog extends DialogWrapper { else { initialDir = null; } - final VirtualFile[] files = FileChooser.chooseFiles(parent, chooserDescriptor, initialDir); - if (files.length == 0) { + final VirtualFile file = FileChooser.chooseFile(parent, chooserDescriptor, initialDir); + if (file == null) { return null; } - VirtualFile file = files[0]; String path; if (file.isDirectory()) { String defaultName = new File(DEFAULT_PATH).getName(); diff --git a/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java b/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java index 87e9057814ff..3b72381bb875 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java @@ -75,7 +75,7 @@ public class OpenFileAction extends AnAction implements DumbAware { } }); - final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, true); + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createMultipleFilesNoJarsDescriptor(); descriptor.setTitle(IdeBundle.message("title.open.file")); final String lastFilePath = project != null ? getLastFilePath(project) : null; diff --git a/platform/platform-impl/src/com/intellij/internal/encodings/EncodingViewer.java b/platform/platform-impl/src/com/intellij/internal/encodings/EncodingViewer.java index 8beea507d621..6525b612ed90 100644 --- a/platform/platform-impl/src/com/intellij/internal/encodings/EncodingViewer.java +++ b/platform/platform-impl/src/com/intellij/internal/encodings/EncodingViewer.java @@ -17,7 +17,6 @@ package com.intellij.internal.encodings; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.vfs.CharsetToolkit; @@ -47,10 +46,9 @@ public class EncodingViewer extends DialogWrapper { initEncodings(); myLoadFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); - VirtualFile[] files = FileChooser.chooseFiles(myPanel, descriptor); - if (files.length != 0) { - loadFrom(files[0]); + VirtualFile file = FileChooser.chooseFile(myPanel, FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); + if (file != null) { + loadFrom(file); } } }); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/ScrollingModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/ScrollingModelImpl.java index 45a94d32f015..fb79e8be27cb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/ScrollingModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/ScrollingModelImpl.java @@ -37,15 +37,13 @@ import com.intellij.openapi.editor.event.VisibleAreaListener; import com.intellij.openapi.editor.ex.ScrollingModelEx; import com.intellij.openapi.editor.ex.util.EditorUtil; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.ui.UIUtil; +import com.intellij.util.ui.Animator; import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.concurrent.CopyOnWriteArrayList; @@ -384,9 +382,6 @@ public class ScrollingModelImpl implements ScrollingModelEx { private static final int SCROLL_DURATION = 150; private static final int SCROLL_INTERVAL = 10; - private final Timer myTimer; - private int myTicksCount = 0; - private final int myStartHOffset; private final int myStartVOffset; private final int myEndHOffset; @@ -404,6 +399,7 @@ public class ScrollingModelImpl implements ScrollingModelEx { private final int myStepCount; private final double myPow; + private final Animator myAnimator; public AnimatedScrollingRunnable(int startHOffset, int startVOffset, @@ -435,13 +431,26 @@ public class ScrollingModelImpl implements ScrollingModelEx { myStartCommand = CommandProcessor.getInstance().getCurrentCommand(); - myTimer = UIUtil.createNamedTimer("Animated scroller",SCROLL_INTERVAL, new ActionListener() { - public void actionPerformed(final ActionEvent e) { - tick(); + myAnimator = new Animator("Animated scroller", myStepCount, SCROLL_INTERVAL, false, 0, 0, true) { + @Override + public void paintNow(float frame, float totalFrames, float cycle) { + double time = (frame + 1) / (double)totalFrames; + double fraction = timeToFraction(time); + + final int hOffset = (int)(myStartHOffset + (myEndHOffset - myStartHOffset) * fraction + 0.5); + final int vOffset = (int)(myStartVOffset + (myEndVOffset - myStartVOffset) * fraction + 0.5); + + _scrollHorizontally(hOffset); + _scrollVertically(vOffset); } - }); - myTimer.setRepeats(true); - myTimer.start(); + + @Override + protected void paintCycleEnd() { + finish(true); + } + }; + + myAnimator.resume(); } public Rectangle getTargetVisibleArea() { @@ -454,21 +463,6 @@ public class ScrollingModelImpl implements ScrollingModelEx { // return myStartCommand; //} - private void tick() { - double time = (myTicksCount + 1) / (double)myStepCount; - double fraction = timeToFraction(time); - - final int hOffset = (int)(myStartHOffset + (myEndHOffset - myStartHOffset) * fraction + 0.5); - final int vOffset = (int)(myStartVOffset + (myEndVOffset - myStartVOffset) * fraction + 0.5); - - _scrollHorizontally(hOffset); - _scrollVertically(vOffset); - - if (++myTicksCount == myStepCount) { - finish(true); - } - } - public void cancel(boolean scrollToTarget) { assertIsDispatchThread(); finish(scrollToTarget); @@ -485,7 +479,7 @@ public class ScrollingModelImpl implements ScrollingModelEx { executePostRunnables(); } - myTimer.stop(); + myAnimator.dispose(); if (myCurrentAnimationRequest == this) { myCurrentAnimationRequest = null; } diff --git a/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectDialog.java b/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectDialog.java index 47369f156cfd..0ec0403a2492 100644 --- a/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectDialog.java +++ b/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectDialog.java @@ -23,6 +23,7 @@ import com.intellij.ide.ui.ListCellRendererWrapper; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComponentWithBrowseButton; import com.intellij.openapi.ui.DialogWrapper; @@ -68,7 +69,7 @@ public class NewDirectoryProjectDialog extends DialogWrapper { myLocationField.setText(projectName.toString()); myProjectNameTextField.setText(projectName.getName()); - FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); ComponentWithBrowseButton.BrowseFolderActionListener listener = new ComponentWithBrowseButton.BrowseFolderActionListener("Select Location for Project Directory", "", myLocationField, project, diff --git a/platform/platform-impl/src/com/intellij/util/ui/LocalPathCellEditor.java b/platform/platform-impl/src/com/intellij/util/ui/LocalPathCellEditor.java index cedfd1c90493..22ed5780f52f 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/LocalPathCellEditor.java +++ b/platform/platform-impl/src/com/intellij/util/ui/LocalPathCellEditor.java @@ -50,10 +50,10 @@ public class LocalPathCellEditor extends AbstractTableCellEditor { final FileChooserDescriptor d = getFileChooserDescriptor(); String initial = (String)getCellEditorValue(); VirtualFile initialFile = StringUtil.isNotEmpty(initial) ? LocalFileSystem.getInstance().findFileByPath(initial) : null; - VirtualFile[] files = - myProject != null ? FileChooser.chooseFiles(myProject, d, initialFile) : FileChooser.chooseFiles(table, d, initialFile); - if (files.length == 1 && files[0] != null) { - String path = files[0].getPresentableUrl(); + VirtualFile file = + myProject != null ? FileChooser.chooseFile(myProject, d, initialFile) : FileChooser.chooseFile(table, d, initialFile); + if (file != null) { + String path = file.getPresentableUrl(); if (SystemInfo.isWindows && path.length() == 2 && Character.isLetter(path.charAt(0)) && path.charAt(1) == ':') { path += "\\"; // make path absolute } diff --git a/platform/testRunner/src/com/intellij/execution/testframework/export/ExportTestResultsForm.java b/platform/testRunner/src/com/intellij/execution/testframework/export/ExportTestResultsForm.java index 43e50d4d41ad..c49df8b5e8ac 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/export/ExportTestResultsForm.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/export/ExportTestResultsForm.java @@ -17,6 +17,7 @@ package com.intellij.execution.testframework.export; import com.intellij.execution.ExecutionBundle; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.TextComponentAccessor; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.io.FileUtil; @@ -77,7 +78,7 @@ public class ExportTestResultsForm { myFolderField .addBrowseFolderListener(ExecutionBundle.message("export.test.results.output.folder.chooser.title"), null, null, - new FileChooserDescriptor(false, true, false, false, false, false), + FileChooserDescriptorFactory.createSingleFolderDescriptor(), TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT, false); myFileNameField.getDocument().addDocumentListener(new DocumentAdapter() { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchDifferentiatedDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchDifferentiatedDialog.java index 36f0ecacfa36..905300223626 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchDifferentiatedDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchDifferentiatedDialog.java @@ -23,6 +23,7 @@ import com.intellij.openapi.diff.impl.patch.PatchVirtualFileReader; import com.intellij.openapi.diff.impl.patch.TextFilePatch; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.project.Project; @@ -541,18 +542,17 @@ public class ApplyPatchDifferentiatedDialog extends DialogWrapper { private class NewBaseSelector implements Runnable { public void run() { - final FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, false, false, false, false); - VirtualFile[] selectedFiles = FileChooser.chooseFiles(myProject, descriptor); - if (selectedFiles.length != 1 || selectedFiles[0] == null) { + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); + VirtualFile selectedFile = FileChooser.chooseFile(myProject, descriptor); + if (selectedFile == null) { return; } - final VirtualFile selectedValue = selectedFiles[0]; final List selectedChanges = myChangesTreeList.getSelectedChanges(); if (selectedChanges.size() >= 1) { for (FilePatchInProgress.PatchChange patchChange : selectedChanges) { final FilePatchInProgress patch = patchChange.getPatchInProgress(); - patch.setNewBase(selectedValue); + patch.setNewBase(selectedFile); } updateTree(false); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoreUnversionedDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoreUnversionedDialog.java index 5cc0fd1fb11f..6efc794c0780 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoreUnversionedDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/IgnoreUnversionedDialog.java @@ -17,6 +17,7 @@ package com.intellij.openapi.vcs.changes.ui; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -78,7 +79,7 @@ public class IgnoreUnversionedDialog extends DialogWrapper { myIgnoreDirectoryTextField.addBrowseFolderListener("Select Directory to Ignore", "Select the directory which will not be tracked for changes", project, - new FileChooserDescriptor(false, true, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFolderDescriptor()); ActionListener listener = new ActionListener() { public void actionPerformed(final ActionEvent e) { updateControls(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java index c530a09af433..5e110fe7b1e5 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java @@ -17,6 +17,7 @@ package com.intellij.openapi.vcs.configurable; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.UnnamedConfigurable; import com.intellij.openapi.project.Project; @@ -63,7 +64,7 @@ public class VcsMappingConfigurationDialog extends DialogWrapper { myVCSComboBox.setModel(VcsDirectoryConfigurationPanel.buildVcsWrappersModel(project)); myDirectoryTextField.addActionListener(new MyBrowseFolderListener("Select Directory", "Select directory to map to a VCS", myDirectoryTextField, project, - new FileChooserDescriptor(false, true, false, false, false, false))); + FileChooserDescriptorFactory.createSingleFolderDescriptor())); myMappingCopy = new VcsDirectoryMapping("", ""); setTitle(title); init(); diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java index 39016182f4cf..9b6e2247e7cd 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java @@ -20,8 +20,8 @@ import com.intellij.ide.DataManager; import com.intellij.ide.ui.SplitterProportionsDataImpl; import com.intellij.lang.Language; import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; -import com.intellij.openapi.fileChooser.FileChooserDialog; import com.intellij.openapi.fileChooser.FileChooserFactory; import com.intellij.openapi.fileChooser.FileSaverDescriptor; import com.intellij.openapi.fileTypes.FileType; @@ -742,15 +742,13 @@ public class InjectionsSettingsUI implements Configurable { descriptor.putUserData(LangDataKeys.MODULE_CONTEXT, LangDataKeys.MODULE.getData(dataContext)); - final FileChooserDialog chooser = FileChooserFactory.getInstance().createFileChooser(descriptor, myProject); - final SplitterProportionsData splitterData = new SplitterProportionsDataImpl(); splitterData.externalizeFromDimensionService("IntelliLang.ImportSettingsKey.SplitterProportions"); - final VirtualFile[] files = chooser.choose(null, myProject); - if (files.length != 1) return; + final VirtualFile file = FileChooser.chooseFile(myProject, descriptor); + if (file == null) return; try { - final Configuration cfg = Configuration.load(files[0].getInputStream()); + final Configuration cfg = Configuration.load(file.getInputStream()); if (cfg == null) { Messages.showWarningDialog(myProject, "The selected file does not contain any importable configuration.", "Nothing to Import"); return; diff --git a/plugins/android/src/org/jetbrains/android/exportSignedPackage/KeystoreStep.java b/plugins/android/src/org/jetbrains/android/exportSignedPackage/KeystoreStep.java index 2bc173726d5a..e9350bd5bffa 100644 --- a/plugins/android/src/org/jetbrains/android/exportSignedPackage/KeystoreStep.java +++ b/plugins/android/src/org/jetbrains/android/exportSignedPackage/KeystoreStep.java @@ -19,7 +19,7 @@ package org.jetbrains.android.exportSignedPackage; import com.intellij.ide.util.PropertiesComponent; import com.intellij.ide.wizard.CommitStepException; import com.intellij.openapi.fileChooser.FileChooser; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; @@ -198,10 +198,9 @@ class KeystoreStep extends ExportSignedPackageWizardStep { path = defaultLocation != null ? defaultLocation : ""; } VirtualFile f = LocalFileSystem.getInstance().findFileByPath(path); - VirtualFile[] files = FileChooser.chooseFiles(myContentPanel, new FileChooserDescriptor(true, false, false, false, false, false), f); - if (files.length > 0) { - assert files.length == 1; - myKeystoreLocationField.setText(FileUtil.toSystemDependentName(files[0].getPath())); + VirtualFile file = FileChooser.chooseFile(myContentPanel, FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(), f); + if (file != null) { + myKeystoreLocationField.setText(FileUtil.toSystemDependentName(file.getPath())); } } } diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java index 2b233b330437..7ebde421d7f7 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java @@ -22,6 +22,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; @@ -629,11 +630,9 @@ public class AndroidFacetEditorTab extends FacetEditorTab { } } } - VirtualFile[] files = - FileChooser.chooseFiles(myContentPanel, new FileChooserDescriptor(false, true, false, false, false, false), initialFile); - if (files.length > 0) { - assert files.length == 1; - myTextField.setText(FileUtil.toSystemDependentName(files[0].getPath())); + VirtualFile file = FileChooser.chooseFile(myContentPanel, FileChooserDescriptorFactory.createSingleFolderDescriptor(), initialFile); + if (file != null) { + myTextField.setText(FileUtil.toSystemDependentName(file.getPath())); } } } diff --git a/plugins/android/src/org/jetbrains/android/run/CreateAvdDialog.java b/plugins/android/src/org/jetbrains/android/run/CreateAvdDialog.java index c64adb66baa3..e7e1cd53c21d 100644 --- a/plugins/android/src/org/jetbrains/android/run/CreateAvdDialog.java +++ b/plugins/android/src/org/jetbrains/android/run/CreateAvdDialog.java @@ -22,7 +22,7 @@ import com.android.sdklib.internal.avd.AvdManager; import com.intellij.ide.BrowserUtil; import com.intellij.ide.ui.ListCellRendererWrapper; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; @@ -256,7 +256,7 @@ public class CreateAvdDialog extends DialogWrapper { updateSpinner(); mySdCardFileTextField .addBrowseFolderListener(AndroidBundle.message("android.create.avd.dialog.sdcard.file.browser.title"), null, project, - new FileChooserDescriptor(true, false, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); reloadAbiCombo(); } diff --git a/plugins/ant/src/com/intellij/lang/ant/config/impl/AllJarsUnderDirEntry.java b/plugins/ant/src/com/intellij/lang/ant/config/impl/AllJarsUnderDirEntry.java index 9aa10089fdf5..7b506c692290 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/impl/AllJarsUnderDirEntry.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/impl/AllJarsUnderDirEntry.java @@ -16,7 +16,7 @@ package com.intellij.lang.ant.config.impl; import com.intellij.openapi.fileChooser.FileChooser; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.roots.ui.util.CellAppearanceUtils; import com.intellij.openapi.roots.ui.util.CompositeAppearance; import com.intellij.openapi.util.Factory; @@ -90,7 +90,7 @@ public class AllJarsUnderDirEntry implements AntClasspathEntry { } public List create() { - VirtualFile[] files = FileChooser.chooseFiles(myParentComponent, new FileChooserDescriptor(false, true, false, false, false, true)); + VirtualFile[] files = FileChooser.chooseFiles(myParentComponent, FileChooserDescriptorFactory.createMultipleFoldersDescriptor()); if (files.length == 0) return null; return ContainerUtil.map(files, CREATE_FROM_VIRTUAL_FILE); } diff --git a/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntSetPanel.java b/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntSetPanel.java index 9c4c435d1b2d..d1b3f3325d56 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntSetPanel.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/impl/configuration/AntSetPanel.java @@ -214,11 +214,10 @@ public class AntSetPanel { } public AntInstallation create() { - VirtualFile[] files = FileChooser.chooseFiles(myParent, FileChooserDescriptorFactory.createSingleFolderDescriptor()); - if (files.length == 0) return null; - VirtualFile homePath = files[0]; + VirtualFile file = FileChooser.chooseFile(myParent, FileChooserDescriptorFactory.createSingleFolderDescriptor(), null); + if (file == null) return null; try { - final AntInstallation inst = AntInstallation.fromHome(homePath.getPresentableUrl()); + final AntInstallation inst = AntInstallation.fromHome(file.getPresentableUrl()); adjustName(inst); return inst; } diff --git a/plugins/copyright/src/com/maddyhome/idea/copyright/ui/CopyrightProfilesPanel.java b/plugins/copyright/src/com/maddyhome/idea/copyright/ui/CopyrightProfilesPanel.java index cf6114117802..bba6041e9306 100644 --- a/plugins/copyright/src/com/maddyhome/idea/copyright/ui/CopyrightProfilesPanel.java +++ b/plugins/copyright/src/com/maddyhome/idea/copyright/ui/CopyrightProfilesPanel.java @@ -197,10 +197,10 @@ public class CopyrightProfilesPanel extends MasterDetailsComponent implements Se } }; descriptor.setTitle("Choose file containing copyright notice"); - final VirtualFile[] files = FileChooser.chooseFiles(myProject, descriptor); - if (files.length != 1) return; + final VirtualFile file = FileChooser.chooseFile(myProject, descriptor); + if (file == null) return; - final List copyrightProfiles = ExternalOptionHelper.loadOptions(VfsUtil.virtualToIoFile(files[0])); + final List copyrightProfiles = ExternalOptionHelper.loadOptions(VfsUtil.virtualToIoFile(file)); if (copyrightProfiles == null) return; if (!copyrightProfiles.isEmpty()) { if (copyrightProfiles.size() == 1) { diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/local/ui/LocalConnectionSettingsPanel.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/local/ui/LocalConnectionSettingsPanel.java index 739c534be969..7b1c90dd7b6f 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/local/ui/LocalConnectionSettingsPanel.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/local/ui/LocalConnectionSettingsPanel.java @@ -15,10 +15,10 @@ */ package com.intellij.cvsSupport2.connections.local.ui; -import com.intellij.cvsSupport2.config.LocalSettings; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; -import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.CvsBundle; +import com.intellij.cvsSupport2.config.LocalSettings; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; +import com.intellij.openapi.ui.TextFieldWithBrowseButton; import javax.swing.*; import java.awt.*; @@ -34,7 +34,7 @@ public class LocalConnectionSettingsPanel { public LocalConnectionSettingsPanel() { myPathToCvsClient.addBrowseFolderListener(CvsBundle.message("dialog.title.select.path.to.cvs.client"), CvsBundle.message("dialog.description.select.path.to.cvs.client"), null, - new FileChooserDescriptor(true, false, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); } public void updateFrom(LocalSettings localConfiguration) { diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java index 823b837b9c0b..b5a4b9d5d9ac 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/connections/ssh/ui/SshConnectionSettingsPanel.java @@ -19,7 +19,7 @@ import com.intellij.CvsBundle; import com.intellij.cvsSupport2.config.CvsRootEditor; import com.intellij.cvsSupport2.config.SshSettings; import com.intellij.cvsSupport2.connections.ssh.SSHPasswordProviderImpl; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.InputException; import com.intellij.openapi.ui.TextFieldWithBrowseButton; @@ -42,7 +42,7 @@ public class SshConnectionSettingsPanel { myRootProvider = rootProvider; myPathToPrivateKeyFile.addBrowseFolderListener(CvsBundle.message("dialog.title.path.to.private.key.file"), CvsBundle.message("dialog.description.path.to.private.key.file"), - null, new FileChooserDescriptor(true, false, false, false, false, false)); + null, FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { setPathToPPKEnabled(); diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CheckoutHelper.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CheckoutHelper.java index 7e664ef53735..342f5d967564 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CheckoutHelper.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsBrowser/CheckoutHelper.java @@ -23,10 +23,10 @@ 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 org.jetbrains.annotations.Nullable; import java.awt.*; import java.io.File; -import java.text.MessageFormat; /** * author: lesya @@ -70,13 +70,12 @@ public class CheckoutHelper { return compareResult == 0; } + @Nullable public VirtualFile chooseCheckoutLocation(String pathToSuggestedFolder) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); descriptor.setTitle(com.intellij.CvsBundle.message("dialog.description.select.a.directory.to.check.out.the.files.to")); VirtualFile suggestedCheckoutFolder = LocalFileSystem.getInstance().findFileByPath(pathToSuggestedFolder.replace(File.separatorChar, '/')); - VirtualFile[] files = FileChooser.chooseFiles(myPanel, descriptor, suggestedCheckoutFolder); - if (files.length == 0) return null; - return files[0]; + return FileChooser.chooseFile(myPanel, descriptor, suggestedCheckoutFolder); } private boolean requestLocation() { diff --git a/plugins/devkit/src/projectRoots/IdeaJdkConfigurable.java b/plugins/devkit/src/projectRoots/IdeaJdkConfigurable.java index 9b3b8f2fd679..5bdd51e396e0 100644 --- a/plugins/devkit/src/projectRoots/IdeaJdkConfigurable.java +++ b/plugins/devkit/src/projectRoots/IdeaJdkConfigurable.java @@ -96,10 +96,9 @@ public class IdeaJdkConfigurable implements AdditionalDataConfigurable { descriptor.setTitle(DevKitBundle.message("sandbox.home")); descriptor.setDescription( DevKitBundle.message("sandbox.purpose")); - VirtualFile[] files = FileChooser.chooseFiles(mySandboxHome, descriptor); - if (files.length != 0) { - mySandboxHome.setText( - FileUtil.toSystemDependentName(files[0].getPath())); + VirtualFile file = FileChooser.chooseFile(mySandboxHome, descriptor, null); + if (file != null) { + mySandboxHome.setText(FileUtil.toSystemDependentName(file.getPath())); } myModified = true; } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java index 8dee17576dd9..aff404771e3f 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java @@ -16,7 +16,6 @@ package org.jetbrains.idea.eclipse.importWizard; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.PathMacros; import com.intellij.openapi.application.ex.ApplicationInfoEx; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; @@ -345,12 +344,12 @@ public class EclipseImportBuilder extends ProjectImportBuilder implement }; descriptor.setDescription(buf.toString()); descriptor.setTitle(getTitle()); - final VirtualFile[] selectedFiles = FileChooser.chooseFiles(project, descriptor, project.getBaseDir()); - if (selectedFiles.length == 1) { + final VirtualFile selectedFile = FileChooser.chooseFile(project, descriptor, project.getBaseDir()); + if (selectedFile != null) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { try { - EclipseUserLibrariesHelper.readProjectLibrariesContent(new File(selectedFiles[0].getPath()), project, unknownLibraries); + EclipseUserLibrariesHelper.readProjectLibrariesContent(new File(selectedFile.getPath()), project, unknownLibraries); } catch (Exception e) { LOG.error(e); @@ -385,9 +384,9 @@ public class EclipseImportBuilder extends ProjectImportBuilder implement }; fileChooserDescriptor.setTitle(EclipseBundle.message("eclipse.create.library.title")); fileChooserDescriptor.setDescription(EclipseBundle.message("eclipse.create.library.description", libraryName)); - final VirtualFile[] files = FileChooser.chooseFiles(project, fileChooserDescriptor); - if (files.length == 1) { - final VirtualFile pluginsDir = files[0].findChild("plugins"); + final VirtualFile file = FileChooser.chooseFile(project, fileChooserDescriptor, null); + if (file != null) { + final VirtualFile pluginsDir = file.findChild("plugins"); if (pluginsDir != null) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseWorkspaceRootStep.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseWorkspaceRootStep.java index 9472c748c0cf..98d43419cb00 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseWorkspaceRootStep.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseWorkspaceRootStep.java @@ -17,7 +17,7 @@ package org.jetbrains.idea.eclipse.importWizard; import com.intellij.ide.util.PropertiesComponent; import com.intellij.ide.util.projectWizard.WizardContext; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.io.FileUtil; @@ -53,10 +53,10 @@ public class EclipseWorkspaceRootStep extends ProjectImportWizardStep { public EclipseWorkspaceRootStep(final WizardContext context) { super(context); myWorkspaceRootComponent.addBrowseFolderListener(EclipseBundle.message("eclipse.import.title.select.workspace"), "", null, - new FileChooserDescriptor(false, true, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFolderDescriptor()); myDirComponent.addBrowseFolderListener(EclipseBundle.message("eclipse.import.title.module.dir"), "", null, - new FileChooserDescriptor(false, true, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFolderDescriptor()); ActionListener listener = new ActionListener() { public void actionPerformed(final ActionEvent e) { diff --git a/plugins/git4idea/src/git4idea/actions/GitInit.java b/plugins/git4idea/src/git4idea/actions/GitInit.java index e2881162af4d..1dc8da6900f8 100644 --- a/plugins/git4idea/src/git4idea/actions/GitInit.java +++ b/plugins/git4idea/src/git4idea/actions/GitInit.java @@ -19,6 +19,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.DumbAwareAction; @@ -52,17 +53,16 @@ public class GitInit extends DumbAwareAction { if (project == null) { project = ProjectManager.getInstance().getDefaultProject(); } - FileChooserDescriptor fcd = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor fcd = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fcd.setShowFileSystemRoots(true); fcd.setTitle(GitBundle.getString("init.destination.directory.title")); fcd.setDescription(GitBundle.getString("init.destination.directory.description")); fcd.setHideIgnored(false); final VirtualFile baseDir = project.getBaseDir(); - final VirtualFile[] files = FileChooser.chooseFiles(project, fcd, baseDir); - if (files.length == 0) { + final VirtualFile root = FileChooser.chooseFile(project, fcd, baseDir); + if (root == null) { return; } - final VirtualFile root = files[0]; if (GitUtil.isUnderGit(root)) { final int v = Messages.showYesNoDialog(project, GitBundle.message("init.warning.already.under.git", diff --git a/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java b/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java index 38fe14fd858a..f0032b030378 100644 --- a/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java +++ b/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java @@ -16,6 +16,7 @@ package git4idea.checkout; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.*; import com.intellij.openapi.vfs.VirtualFile; @@ -96,7 +97,7 @@ public class GitCloneDialog extends DialogWrapper { * Init components */ private void initListeners() { - FileChooserDescriptor fcd = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor fcd = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fcd.setShowFileSystemRoots(true); fcd.setTitle(GitBundle.getString("clone.destination.directory.title")); fcd.setDescription(GitBundle.getString("clone.destination.directory.description")); diff --git a/plugins/git4idea/src/git4idea/config/GitVcsPanel.java b/plugins/git4idea/src/git4idea/config/GitVcsPanel.java index e85599fb2787..445461cddb61 100644 --- a/plugins/git4idea/src/git4idea/config/GitVcsPanel.java +++ b/plugins/git4idea/src/git4idea/config/GitVcsPanel.java @@ -16,7 +16,7 @@ package git4idea.config; import com.intellij.openapi.application.ApplicationNamesInfo; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.TextFieldWithBrowseButton; @@ -72,7 +72,7 @@ public class GitVcsPanel { myConvertTextFilesComboBox.addItem(CRLF_ASK); myConvertTextFilesComboBox.setSelectedItem(CRLF_ASK); myGitField.addBrowseFolderListener(GitBundle.getString("find.git.title"), GitBundle.getString("find.git.description"), project, - new FileChooserDescriptor(true, false, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); } /** diff --git a/plugins/git4idea/src/git4idea/history/browser/GitLogTreeFileSelector.java b/plugins/git4idea/src/git4idea/history/browser/GitLogTreeFileSelector.java index a213c28ba2bb..62b9f3e0349d 100644 --- a/plugins/git4idea/src/git4idea/history/browser/GitLogTreeFileSelector.java +++ b/plugins/git4idea/src/git4idea/history/browser/GitLogTreeFileSelector.java @@ -16,6 +16,7 @@ package git4idea.history.browser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.fileChooser.FileSystemTree; import com.intellij.openapi.fileChooser.FileSystemTreeFactory; import com.intellij.openapi.project.Project; @@ -54,7 +55,7 @@ public class GitLogTreeFileSelector extends DialogWrapper { } private void initUi() { - final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, true, true, false, true); + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createAllButJarContentsDescriptor(); descriptor.setRoot(myRoot); myFileSystemTree = FileSystemTreeFactory.SERVICE.getInstance().createFileSystemTree(myProject, descriptor); final JTree tree = myFileSystemTree.getTree(); diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/SelectRepositoryAndShowLogAction.java b/plugins/git4idea/src/git4idea/history/wholeTree/SelectRepositoryAndShowLogAction.java index c3d8f5c348bc..3265b77ad5de 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/SelectRepositoryAndShowLogAction.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/SelectRepositoryAndShowLogAction.java @@ -39,7 +39,7 @@ public class SelectRepositoryAndShowLogAction extends AnAction { public void actionPerformed(AnActionEvent e) { final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); final VirtualFile[] virtualFiles = FileChooser.chooseFiles(project, new FileChooserDescriptor(false, true, false, true, false, false)); - if (virtualFiles == null || virtualFiles.length == 0) return; + if (virtualFiles.length == 0) return; new MyDialog(project, virtualFiles).show(); } diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/VcsStructureChooser.java b/plugins/git4idea/src/git4idea/history/wholeTree/VcsStructureChooser.java index eff050c6ba75..4157bf07d52d 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/VcsStructureChooser.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/VcsStructureChooser.java @@ -20,6 +20,7 @@ import com.intellij.ide.util.treeView.NodeDescriptor; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diff.impl.patch.formove.FilePathComparator; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.fileChooser.ex.FileNodeDescriptor; import com.intellij.openapi.fileChooser.ex.FileSystemTreeImpl; import com.intellij.openapi.module.Module; @@ -140,7 +141,7 @@ public class VcsStructureChooser extends DialogWrapper { @Override protected JComponent createCenterPanel() { - final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, true, true, false, true); + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createAllButJarContentsDescriptor(); calculateRoots(); final ArrayList list = new ArrayList(myRoots); final Comparator comparator = new Comparator() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java index 75e648ca120a..0ff78dce2101 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java @@ -110,10 +110,9 @@ public class GroovyLibraryDescription extends CustomLibraryDescription { }; descriptor.setTitle(myFrameworkName + " SDK"); descriptor.setDescription("Choose a directory containing " + myFrameworkName + " distribution"); - final VirtualFile[] files = FileChooser.chooseFiles(parentComponent, descriptor, initial); - if (files.length != 1) return null; + final VirtualFile dir = FileChooser.chooseFile(parentComponent, descriptor, initial); + if (dir == null) return null; - final VirtualFile dir = files[0]; final GroovyLibraryPresentationProviderBase provider = findManager(dir); if (provider == null) { return null; diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java index 1e562c1aa8e4..b914b706fe68 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgCloneDialog.java @@ -17,6 +17,7 @@ package org.zmlx.hg4idea.ui; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; @@ -25,8 +26,8 @@ import com.intellij.openapi.ui.*; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.zmlx.hg4idea.HgVcsMessages; -import org.zmlx.hg4idea.execution.HgCommandResult; import org.zmlx.hg4idea.command.HgIdentifyCommand; +import org.zmlx.hg4idea.execution.HgCommandResult; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -118,7 +119,7 @@ public class HgCloneDialog extends DialogWrapper { * Init components */ private void initListeners() { - FileChooserDescriptor fcd = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor fcd = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fcd.setShowFileSystemRoots(true); fcd.setTitle(HgVcsMessages.message("hg4idea.clone.parent.directory.title")); fcd.setDescription(HgVcsMessages.message("hg4idea.clone.parent.directory.description")); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgInitDialog.java b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgInitDialog.java index 281c9b860a21..5b5d34193881 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgInitDialog.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgInitDialog.java @@ -112,8 +112,7 @@ public class HgInitDialog extends DialogWrapper { if (myShowDialog) { super.show(); } else { - final VirtualFile[] files = FileChooser.chooseFiles(myProject, myFileDescriptor); - mySelectedDir = (files.length == 0 ? null : files[0]); + mySelectedDir = FileChooser.chooseFile(myProject, myFileDescriptor); } } diff --git a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java index ea54945bb31f..d4b375031d0a 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java +++ b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java @@ -34,6 +34,7 @@ import com.intellij.ide.util.ClassFilter; import com.intellij.ide.util.PackageChooserDialog; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.fileChooser.FileChooserFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; @@ -130,10 +131,9 @@ public class JUnitConfigurable extends SettingsEditor { new BrowseModuleValueActionListener(project) { @Override protected String showDialog() { - final VirtualFile[] virtualFiles = - FileChooser.chooseFiles(project, new FileChooserDescriptor(false, true, false, false, false, false)); - if (virtualFiles.length == 1) { - return FileUtil.toSystemDependentName(virtualFiles[0].getPath()); + final VirtualFile virtualFile = FileChooser.chooseFile(project, FileChooserDescriptorFactory.createSingleFolderDescriptor(), null); + if (virtualFile != null) { + return FileUtil.toSystemDependentName(virtualFile.getPath()); } return null; } @@ -166,7 +166,7 @@ public class JUnitConfigurable extends SettingsEditor { panel.add(editBtn, BorderLayout.EAST); myTestLocations[JUnitConfigurationModel.PATTERN] = myPattern; - final FileChooserDescriptor dirFileChooser = new FileChooserDescriptor(false, true, false, false, false, false); + final FileChooserDescriptor dirFileChooser = FileChooserDescriptorFactory.createSingleFolderDescriptor(); dirFileChooser.setHideIgnored(false); final JTextField textField = myDir.getComponent().getTextField(); InsertPathAction.addTo(textField, dirFileChooser); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java index f428c383b900..82dede18014b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java @@ -17,7 +17,7 @@ package org.jetbrains.idea.maven.project; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.LabeledComponent; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.Comparing; @@ -118,11 +118,11 @@ public class MavenEnvironmentForm { public JComponent createComponent() { // all listeners will be removed when dialog is closed mavenHomeComponent.getComponent().addBrowseFolderListener(ProjectBundle.message("maven.select.maven.home.directory"), "", null, - new FileChooserDescriptor(false, true, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFolderDescriptor()); settingsFileComponent.getComponent().addBrowseFolderListener(ProjectBundle.message("maven.select.maven.settings.file"), "", null, - new FileChooserDescriptor(true, false, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); localRepositoryComponent.getComponent().addBrowseFolderListener(ProjectBundle.message("maven.select.local.repository"), "", null, - new FileChooserDescriptor(false, true, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFolderDescriptor()); return panel; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java index b22fbe179706..0382cbac06ce 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java @@ -16,7 +16,7 @@ package org.jetbrains.idea.maven.project; import com.intellij.ide.util.projectWizard.WizardContext; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -65,7 +65,7 @@ public class MavenImportingSettingsForm { mySeparateModulesDirCheckBox.addActionListener(listener); mySeparateModulesDirChooser.addBrowseFolderListener(ProjectBundle.message("maven.import.title.module.dir"), "", null, - new FileChooserDescriptor(false, true, false, false, false, false)); + FileChooserDescriptorFactory.createSingleFolderDescriptor()); myUpdateFoldersOnImportPhaseComboBox.setModel(new DefaultComboBoxModel(MavenImportingSettings.UPDATE_FOLDERS_PHASES)); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnConfigurable.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnConfigurable.java index 474d47b6ec84..f7dcad3a9692 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnConfigurable.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnConfigurable.java @@ -21,6 +21,7 @@ import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; @@ -109,12 +110,12 @@ public class SvnConfigurable implements Configurable { String oldValue = PropertiesComponent.getInstance().getValue("FileChooser.showHiddens"); PropertiesComponent.getInstance().setValue("FileChooser.showHiddens", Boolean.TRUE.toString()); - VirtualFile[] files = FileChooser.chooseFiles(myComponent, descriptor, root); + VirtualFile file = FileChooser.chooseFile(myComponent, descriptor, root); PropertiesComponent.getInstance().setValue("FileChooser.showHiddens", oldValue); - if (files.length != 1 || files[0] == null) { + if (file == null) { return; } - myConfigurationDirectoryText.setText(files[0].getPath().replace('/', File.separatorChar)); + myConfigurationDirectoryText.setText(file.getPath().replace('/', File.separatorChar)); } }); myConfigurationDirectoryText.setEditable(false); @@ -132,8 +133,8 @@ public class SvnConfigurable implements Configurable { myNumRevsInAnnotations.setEnabled(myMaximumNumberOfRevisionsCheckBox.isSelected()); } - private FileChooserDescriptor createFileDescriptor() { - final FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, false, false, false, false); + private static FileChooserDescriptor createFileDescriptor() { + final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); descriptor.setShowFileSystemRoots(true); descriptor.setTitle(SvnBundle.message("dialog.title.select.configuration.directory")); descriptor.setDescription(SvnBundle.message("dialog.description.select.configuration.directory")); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/config/ConfigureProxiesOptionsPanel.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/config/ConfigureProxiesOptionsPanel.java index 08b56bfc3242..a4b7d9844383 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/config/ConfigureProxiesOptionsPanel.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/config/ConfigureProxiesOptionsPanel.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.svn.config; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.ui.InsertPathAction; import org.jetbrains.idea.svn.SvnBundle; @@ -129,7 +130,7 @@ public class ConfigureProxiesOptionsPanel implements RepositoryUrlsListener { } private void initBrowseActions() { - InsertPathAction.addTo(myPathToCertificatesField, new FileChooserDescriptor(true, false, false, false, false, false)); + InsertPathAction.addTo(myPathToCertificatesField, FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); myClientCertificatePathField.addBrowseFolderListener( SvnBundle.message("dialog.edit.http.proxies.settings.dialog.select.ssl.client.certificate.path.title"), null, null, new FileChooserDescriptor(true, false, false, false, false, false)); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java index de013f4a8491..ca9901f20fb2 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java @@ -16,7 +16,7 @@ package org.jetbrains.idea.svn.dialogs; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; @@ -98,7 +98,7 @@ public class CopyDialog extends DialogWrapper { myWorkingCopyField.getPreferredSize().height)); myWorkingCopyField.addBrowseFolderListener("Select Working Copy Location", "Select Location to Copy From:", - project, new FileChooserDescriptor(false, true, false, false, false, false)); + project, FileChooserDescriptorFactory.createSingleFolderDescriptor()); myWorkingCopyField.getTextField().getDocument().addDocumentListener(new DocumentAdapter() { protected void textChanged(final DocumentEvent e) { updateControls(); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/RepositoryBrowserDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/RepositoryBrowserDialog.java index 07342b3e66d3..3cf14e87ae4e 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/RepositoryBrowserDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/RepositoryBrowserDialog.java @@ -22,6 +22,7 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.ide.CopyPasteManager; import com.intellij.openapi.options.ConfigurationException; @@ -931,16 +932,16 @@ public class RepositoryBrowserDialog extends DialogWrapper { @Nullable private File selectFile(String title, String description) { - FileChooserDescriptor fcd = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor fcd = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fcd.setShowFileSystemRoots(true); fcd.setTitle(title); fcd.setDescription(description); fcd.setHideIgnored(false); - VirtualFile[] files = FileChooser.chooseFiles(myProject, fcd, null); - if (files.length != 1 || files[0] == null) { + VirtualFile file = FileChooser.chooseFile(myProject, fcd); + if (file == null) { return null; } - final String path = files[0].getPath(); + final String path = file.getPath(); if (path.endsWith(":")) { // workaround for VFS oddities with drive root (IDEADEV-20870) return new File(path + "/"); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSHCredentialsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSHCredentialsDialog.java index 5da25eb9a65f..a51a42e9d704 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSHCredentialsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSHCredentialsDialog.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.svn.dialogs; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -382,7 +383,7 @@ public class SSHCredentialsDialog extends DialogWrapper implements ActionListene file = VirtualFileManager.getInstance().findFileByUrl(path[0]); } } - FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, false); + FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); descriptor.setShowFileSystemRoots(true); descriptor.setTitle(SvnBundle.message("dialog.title.openssh.v2.private.key")); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSLCredentialsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSLCredentialsDialog.java index ccf714a0502c..a5d0bb7f56d5 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSLCredentialsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSLCredentialsDialog.java @@ -15,7 +15,7 @@ */ package org.jetbrains.idea.svn.dialogs; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; @@ -67,7 +67,7 @@ public class SSLCredentialsDialog extends DialogWrapper { myCertificatePath.addBrowseFolderListener( SvnBundle.message("dialog.edit.http.proxies.settings.dialog.select.ssl.client.certificate.path.title"), - null, null, new FileChooserDescriptor(true, false, false, false, false, false)); + null, null, FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()); gb.weightx = 1; ++ gb.gridx; diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/CheckoutOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/CheckoutOptionsDialog.java index e5366107b3a2..b2c47686b1e7 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/CheckoutOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/CheckoutOptionsDialog.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.svn.dialogs.browser; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -68,16 +69,16 @@ public class CheckoutOptionsDialog extends DialogWrapper { mySelectTarget.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { // choose directory here/ - FileChooserDescriptor fcd = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor fcd = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fcd.setShowFileSystemRoots(true); fcd.setTitle(SvnBundle.message("checkout.directory.chooser.title")); fcd.setDescription(SvnBundle.message("checkout.directory.chooser.prompt")); fcd.setHideIgnored(false); - VirtualFile[] files = FileChooser.chooseFiles(getContentPane(), fcd, null); - if (files.length != 1 || files[0] == null) { + VirtualFile file = FileChooser.chooseFile(getContentPane(), fcd, null); + if (file == null) { return; } - fillTargetList(new File(files[0].getPath())); + fillTargetList(new File(file.getPath())); validateTargetSelected(); } }); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DiffOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DiffOptionsDialog.java index e332bf53c10e..de471690e506 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DiffOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DiffOptionsDialog.java @@ -174,11 +174,11 @@ public class DiffOptionsDialog extends DialogWrapper implements ActionListener { fcd.setTitle(title); fcd.setDescription(description); fcd.setHideIgnored(false); - VirtualFile[] files = FileChooser.chooseFiles(myBrowser, fcd, null); - if (files.length != 1 || files[0] == null) { + VirtualFile file = FileChooser.chooseFile(myBrowser, fcd); + if (file == null) { return null; } - return new File(files[0].getPath()); + return new File(file.getPath()); } public void actionPerformed(ActionEvent e) { diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ExportOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ExportOptionsDialog.java index 913f5bbafb39..704937199c38 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ExportOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ExportOptionsDialog.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.svn.dialogs.browser; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; @@ -164,15 +165,15 @@ public class ExportOptionsDialog extends DialogWrapper implements ActionListener public void actionPerformed(ActionEvent e) { // choose directory here/ - FileChooserDescriptor fcd = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor fcd = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fcd.setShowFileSystemRoots(true); fcd.setTitle("Export Directory"); fcd.setDescription("Select directory to export from subversion"); fcd.setHideIgnored(false); - VirtualFile[] files = FileChooser.chooseFiles(getContentPane(), fcd, null); - if (files == null || files.length != 1 || files[0] == null) { + VirtualFile file = FileChooser.chooseFile(getContentPane(), fcd); + if (file == null) { return; } - myPathField.setText(files[0].getPath().replace('/', File.separatorChar)); + myPathField.setText(file.getPath().replace('/', File.separatorChar)); } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java index f55d8b488ac1..31924638c548 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.svn.dialogs.browser; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; @@ -194,15 +195,15 @@ public class ImportOptionsDialog extends DialogWrapper implements ActionListener public void actionPerformed(ActionEvent e) { // choose directory here/ - FileChooserDescriptor fcd = new FileChooserDescriptor(false, true, false, false, false, false); + FileChooserDescriptor fcd = FileChooserDescriptorFactory.createSingleFolderDescriptor(); fcd.setShowFileSystemRoots(true); fcd.setTitle("Checkout Directory"); fcd.setDescription("Select directory to checkout from subversion"); fcd.setHideIgnored(false); - VirtualFile[] files = FileChooser.chooseFiles(getContentPane(), fcd, null); - if (files.length != 1 || files[0] == null) { + VirtualFile file = FileChooser.chooseFile(getContentPane(), fcd); + if (file == null) { return; } - myPathField.setText(files[0].getPath().replace('/', File.separatorChar)); + myPathField.setText(file.getPath().replace('/', File.separatorChar)); } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/IntegratedSelectedOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/IntegratedSelectedOptionsDialog.java index 3e2cd0f72a5c..bf3a9c093e9c 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/IntegratedSelectedOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/IntegratedSelectedOptionsDialog.java @@ -18,7 +18,7 @@ package org.jetbrains.idea.svn.integrate; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileChooser.FileChooser; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; @@ -110,9 +110,9 @@ public class IntegratedSelectedOptionsDialog extends DialogWrapper { } public void actionPerformed(final AnActionEvent e) { - final VirtualFile[] files = FileChooser.chooseFiles(myProject, new FileChooserDescriptor(false, true, false, false, false, false)); - if (files.length > 0) { - final File file = new File(files[0].getPath()); + final VirtualFile vFile = FileChooser.chooseFile(myProject, FileChooserDescriptorFactory.createSingleFolderDescriptor()); + if (vFile != null) { + final File file = new File(vFile.getPath()); if (hasDuplicate(file)) { return; // silently do not add duplicate } diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java index 63550baae323..4782b034b817 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java @@ -27,7 +27,6 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.configuration.BrowseModuleValueActionListener; -import com.intellij.execution.junit.JUnitUtil; import com.intellij.execution.testframework.TestSearchScope; import com.intellij.execution.ui.AlternativeJREPanel; import com.intellij.execution.ui.CommonJavaParametersPanel; @@ -36,12 +35,12 @@ import com.intellij.ide.util.TreeClassChooser; import com.intellij.ide.util.TreeClassChooserFactory; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComponentWithBrowseButton; import com.intellij.openapi.ui.LabeledComponent; -import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; @@ -59,7 +58,6 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import javax.swing.text.Document; import javax.swing.text.PlainDocument; import java.awt.*; import java.awt.event.ActionEvent; @@ -343,7 +341,7 @@ public class TestNGConfigurationEditor extends SettingsEditor 0) { - return files[0].getPath(); - } - return null; + VirtualFile file = FileChooser.chooseFile(getProject(), descriptor); + return file != null ? file.getPath() : null; } } diff --git a/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java b/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java index 2ea97409b3fb..85b8620156cf 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java +++ b/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java @@ -25,7 +25,7 @@ import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; @@ -202,10 +202,10 @@ public class UndeclaredTestInspection extends BaseJavaLocalInspectionTool { final PsiClass psiClass = PsiTreeUtil.getParentOfType(descriptor.getPsiElement(), PsiClass.class); SwingUtilities.invokeLater(new Runnable() { public void run() { - final VirtualFile[] files = FileChooser.chooseFiles(project, new FileChooserDescriptor(false, true, false, false, false, false)); - if (files.length == 1) { + final VirtualFile file = FileChooser.chooseFile(project, FileChooserDescriptorFactory.createSingleFolderDescriptor()); + if (file != null) { final PsiManager psiManager = PsiManager.getInstance(project); - final PsiDirectory directory = psiManager.findDirectory(files[0]); + final PsiDirectory directory = psiManager.findDirectory(file); LOG.assertTrue(directory != null); new WriteCommandAction(project, getName(), null) { protected void run(final Result result) throws Throwable { diff --git a/xml/impl/src/com/intellij/javaee/EditLocationDialog.java b/xml/impl/src/com/intellij/javaee/EditLocationDialog.java index 18150a7bca85..4cae574c6d7b 100644 --- a/xml/impl/src/com/intellij/javaee/EditLocationDialog.java +++ b/xml/impl/src/com/intellij/javaee/EditLocationDialog.java @@ -97,9 +97,9 @@ public class EditLocationDialog extends DialogWrapper { new ActionListener() { public void actionPerformed(ActionEvent ignored) { FileChooserDescriptor descriptor = getChooserDescriptor(); - VirtualFile[] files = FileChooser.chooseFiles(myProject, descriptor); - if (files.length != 0) { - myTfPath.setText(files[0].getPath().replace('/', File.separatorChar)); + VirtualFile file = FileChooser.chooseFile(myProject, descriptor); + if (file != null) { + myTfPath.setText(file.getPath().replace('/', File.separatorChar)); } } }