diff --git a/images/src/org/intellij/images/options/impl/OptionsUIForm.java b/images/src/org/intellij/images/options/impl/OptionsUIForm.java index 913fb3cd96a1..9f945bee3ca1 100644 --- a/images/src/org/intellij/images/options/impl/OptionsUIForm.java +++ b/images/src/org/intellij/images/options/impl/OptionsUIForm.java @@ -20,8 +20,9 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.ui.TextFieldWithBrowseButton; -import com.intellij.openapi.util.Computable; +import com.intellij.openapi.util.NullableComputable; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ColorPanel; @@ -42,6 +43,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.List; /** * Options UI form bean. @@ -237,22 +239,21 @@ final class OptionsUIForm { private final class ExternalEditorPathActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { Application application = ApplicationManager.getApplication(); - VirtualFile previous = application.runWriteAction(new Computable() { + VirtualFile previous = application.runWriteAction(new NullableComputable() { public VirtualFile compute() { - return LocalFileSystem.getInstance().refreshAndFindFileByPath(externalEditorPath.getText().replace('\\', '/')); + final String path = FileUtil.toSystemIndependentName(externalEditorPath.getText()); + return LocalFileSystem.getInstance().refreshAndFindFileByPath(path); } }); FileChooserDescriptor fileDescriptor = new FileChooserDescriptor(true, SystemInfo.isMac, false, false, false, false); fileDescriptor.setShowFileSystemRoots(true); fileDescriptor.setTitle(ImagesBundle.message("select.external.executable.title")); fileDescriptor.setDescription(ImagesBundle.message("select.external.executable.message")); - FileChooser.chooseFilesWithSlideEffect(fileDescriptor, null, previous, new Consumer() { + FileChooser.chooseFiles(fileDescriptor, null, previous, new Consumer>() { @Override - public void consume(VirtualFile[] virtualFiles) { - if (virtualFiles != null && virtualFiles.length > 0) { - String path = virtualFiles[0].getPath(); - externalEditorPath.setText(path); - } + public void consume(final List files) { + String path = files.get(0).getPath(); + externalEditorPath.setText(path); } }); } diff --git a/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java b/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java index 03889537d981..9a97bdade7c0 100644 --- a/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java +++ b/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -202,12 +202,10 @@ public class UnscrambleDialog extends DialogWrapper { JPanel panel = GuiUtils.constructFieldWithBrowseButton(myLogFile, new ActionListener() { public void actionPerformed(ActionEvent e) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); - FileChooser.chooseFilesWithSlideEffect(descriptor, myProject, null, new Consumer() { + FileChooser.chooseFiles(descriptor, myProject, null, new Consumer>() { @Override - public void consume(VirtualFile[] files) { - if (files.length != 0) { - myLogFile.setText(FileUtil.toSystemDependentName(files[files.length - 1].getPath())); - } + public void consume(List files) { + myLogFile.setText(FileUtil.toSystemDependentName(files.get(files.size() - 1).getPath())); } }); } diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java b/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java index 4d1484552092..af422a858909 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java @@ -1,6 +1,6 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,10 +64,8 @@ import javax.swing.*; import javax.swing.text.BadLocationException; import java.awt.*; import java.awt.event.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; +import java.util.*; +import java.util.List; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -859,13 +857,11 @@ public class FindDialog extends DialogWrapper { @Override public void actionPerformed(ActionEvent e) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); - FileChooser.chooseFilesWithSlideEffect(descriptor, myProject, null, new Consumer() { + FileChooser.chooseFiles(descriptor, myProject, null, new Consumer>() { @Override - public void consume(final VirtualFile[] files) { - if (files.length != 0) { - myDirectoryComboBox.setSelectedItem(files[0].getPresentableUrl()); - //validateFindButton(); - } + public void consume(final List files) { + myDirectoryComboBox.setSelectedItem(files.get(0).getPresentableUrl()); + //validateFindButton(); } }); } diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/SdkConfigurationUtil.java b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/SdkConfigurationUtil.java index 70a1b321223d..3cc157a9291d 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/SdkConfigurationUtil.java +++ b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/SdkConfigurationUtil.java @@ -75,15 +75,13 @@ public class SdkConfigurationUtil { VirtualFile suggestedDir = suggestedPath == null ? null : LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(suggestedPath)); - FileChooser.chooseFilesWithSlideEffect(descriptor, project, suggestedDir, new Consumer() { + FileChooser.chooseFiles(descriptor, project, suggestedDir, new Consumer>() { @Override - public void consume(VirtualFile[] selectedFiles) { - if (selectedFiles.length > 0) { - for (SdkType sdkType : sdkTypes) { - if (sdkType.isValidSdkHome(selectedFiles[0].getPath())) { - onSdkCreatedCallBack.consume(setupSdk(existingSdks, selectedFiles[0], sdkType, false, null, null)); - return; - } + public void consume(List selectedFiles) { + for (SdkType sdkType : sdkTypes) { + if (sdkType.isValidSdkHome(selectedFiles.get(0).getPath())) { + onSdkCreatedCallBack.consume(setupSdk(existingSdks, selectedFiles.get(0), sdkType, false, null, null)); + return; } } onSdkCreatedCallBack.consume(null); @@ -268,24 +266,21 @@ public class SdkConfigurationUtil { public static void selectSdkHome(final SdkType sdkType, @NotNull final Consumer consumer){ final FileChooserDescriptor descriptor = sdkType.getHomeChooserDescriptor(); - FileChooser.chooseFilesWithSlideEffect(descriptor, null, getSuggestedSdkRoot(sdkType), - new Consumer() { - @Override - public void consume(final VirtualFile[] chosen) { - if (chosen != null && chosen.length != 0) { - final String path = chosen[0].getPath(); - if (sdkType.isValidSdkHome(path)) { - consumer.consume(path); - return; - } + FileChooser.chooseFiles(descriptor, null, getSuggestedSdkRoot(sdkType), new Consumer>() { + @Override + public void consume(final List chosen) { + final String path = chosen.get(0).getPath(); + if (sdkType.isValidSdkHome(path)) { + consumer.consume(path); + return; + } - String adjustedPath = sdkType.adjustSelectedSdkHome(path); - if (sdkType.isValidSdkHome(adjustedPath)) { - consumer.consume(adjustedPath); - } - } - } - }); + final String adjustedPath = sdkType.adjustSelectedSdkHome(path); + if (sdkType.isValidSdkHome(adjustedPath)) { + consumer.consume(adjustedPath); + } + } + }); } @Nullable diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/CommonContentEntriesEditor.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/CommonContentEntriesEditor.java index 1b644f6bdc61..91f1d56049bf 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/CommonContentEntriesEditor.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/CommonContentEntriesEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -386,13 +386,11 @@ public class CommonContentEntriesEditor extends ModuleElementsEditor { } public void actionPerformed(AnActionEvent e) { - FileChooser.chooseFilesWithSlideEffect(myDescriptor, myProject, myLastSelectedDir, new Consumer() { + FileChooser.chooseFiles(myDescriptor, myProject, myLastSelectedDir, new Consumer>() { @Override - public void consume(VirtualFile[] files) { - if (files.length > 0) { - myLastSelectedDir = files[0]; - addContentEntries(files); - } + public void consume(List files) { + myLastSelectedDir = files.get(0); + addContentEntries(VfsUtil.toVirtualFileArray(files)); } }); } 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 14fdfe6a7789..454b3602bcb2 100644 --- a/platform/platform-api/src/com/intellij/ide/util/BrowseFilesListener.java +++ b/platform/platform-api/src/com/intellij/ide/util/BrowseFilesListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,28 +18,31 @@ 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.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Consumer; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; +import java.util.List; /** * @author Eugene Zhuravlev * Date: Dec 28, 2003 */ public class BrowseFilesListener implements ActionListener { + public static final FileChooserDescriptor SINGLE_DIRECTORY_DESCRIPTOR = FileChooserDescriptorFactory.createSingleFolderDescriptor(); + public static final FileChooserDescriptor SINGLE_FILE_DESCRIPTOR = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(); + private final JTextField myTextField; private final String myTitle; private final String myDescription; private final FileChooserDescriptor myChooserDescriptor; - 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; @@ -48,6 +51,7 @@ public class BrowseFilesListener implements ActionListener { myChooserDescriptor = chooserDescriptor; } + @Nullable protected VirtualFile getFileToSelect() { final String path = myTextField.getText().trim().replace(File.separatorChar, '/'); if (path.length() > 0) { @@ -70,22 +74,11 @@ public class BrowseFilesListener implements ActionListener { final VirtualFile fileToSelect = getFileToSelect(); myChooserDescriptor.setTitle(myTitle); // important to set title and description here because a shared descriptor instance can be used myChooserDescriptor.setDescription(myDescription); - if (SystemInfo.isMac) { - FileChooser.chooseFilesWithSlideEffect(myChooserDescriptor, null, fileToSelect, new Consumer() { - @Override - public void consume(final VirtualFile[] files) { - if (files != null && files.length > 0) { - doSetText(files[0].getPath().replace('/', File.separatorChar)); - } - } - }); - } else { - VirtualFile[] files = (fileToSelect != null) ? - FileChooser.chooseFiles(myTextField, myChooserDescriptor, fileToSelect) : - FileChooser.chooseFiles(myTextField, myChooserDescriptor); - if (files.length > 0) { - myTextField.setText(files[0].getPath().replace('/', File.separatorChar)); + FileChooser.chooseFiles(myChooserDescriptor, null, fileToSelect, new Consumer>() { + @Override + public void consume(final List files) { + doSetText(FileUtil.toSystemDependentName(files.get(0).getPath())); } - } + }); } } 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 443adf3c1c15..89a71fcb9682 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooser.java +++ b/platform/platform-api/src/com/intellij/openapi/fileChooser/FileChooser.java @@ -83,6 +83,7 @@ public class FileChooser { * com.intellij.openapi.vfs.VirtualFile, * com.intellij.util.Consumer)} (to remove in IDEA 13) */ + @SuppressWarnings("UnusedDeclaration") public static void chooseFilesWithSlideEffect(@NotNull final FileChooserDescriptor descriptor, @Nullable final Project project, @Nullable final VirtualFile toSelect, @@ -102,6 +103,7 @@ public class FileChooser { * com.intellij.openapi.vfs.VirtualFile, * com.intellij.util.Consumer)} (to remove in IDEA 13) */ + @SuppressWarnings("UnusedDeclaration") public static void chooseFilesWithSlideEffect(@NotNull final FileChooserDescriptor descriptor, @Nullable final Project project, @Nullable final Component parent, diff --git a/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java b/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java index 3b11761e3818..6be27c5629cd 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,6 +42,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.File; +import java.util.List; public class ComponentWithBrowseButton extends JPanel implements Disposable { private final Comp myComponent; @@ -197,12 +198,10 @@ public class ComponentWithBrowseButton extends JPanel i } VirtualFile initialFile = getInitialFile(); - FileChooser.chooseFilesWithSlideEffect(fileChooserDescriptor, myProject, initialFile, new Consumer() { + FileChooser.chooseFiles(fileChooserDescriptor, myProject, initialFile, new Consumer>() { @Override - public void consume(VirtualFile[] virtualFiles) { - if (virtualFiles != null && virtualFiles.length > 0) { - onFileChoosen(virtualFiles[0]); - } + public void consume(List files) { + onFileChoosen(files.get(0)); } }); } diff --git a/platform/platform-api/src/com/intellij/ui/PathsChooserComponent.java b/platform/platform-api/src/com/intellij/ui/PathsChooserComponent.java index e0935ac0c4c2..5651e1fda1dd 100644 --- a/platform/platform-api/src/com/intellij/ui/PathsChooserComponent.java +++ b/platform/platform-api/src/com/intellij/ui/PathsChooserComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,13 +66,13 @@ public class PathsChooserComponent implements ComponentWithEmptyText { dirChooser.setShowFileSystemRoots(true); dirChooser.setHideIgnored(true); dirChooser.setTitle(UIBundle.message("file.chooser.default.title")); - FileChooser.chooseFilesWithSlideEffect(dirChooser, myProject, null, new Consumer() { + FileChooser.chooseFiles(dirChooser, myProject, null, new Consumer>() { @Override - public void consume(VirtualFile[] files) { + public void consume(List files) { for (VirtualFile file : files) { - // adding to the end + // adding to the end final String path = file.getPath(); - if (processor.addPath(myWorkingCollection, path)){ + if (processor.addPath(myWorkingCollection, path)) { myListModel.addElement(path); } } 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 3b72381bb875..ccd435e7ff28 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,9 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.application.ApplicationNamesInfo; -import com.intellij.openapi.fileChooser.*; +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.fileEditor.OpenFileDescriptor; import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager; @@ -41,9 +43,7 @@ import com.intellij.util.Consumer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; +import java.util.List; public class OpenFileAction extends AnAction implements DumbAware { private static String getLastFilePath(Project project) { @@ -61,38 +61,22 @@ public class OpenFileAction extends AnAction implements DumbAware { return; } - final FileTypeManager fileTypeManager = FileTypeManager.getInstance(); - ArrayList list = new ArrayList(); - for(FileType ft: fileTypeManager.getRegisteredFileTypes()) { - if (fileTypeManager.getAssociatedExtensions(ft).length > 0 && - (ft instanceof ProjectFileType || !ft.isReadOnly())) { - list.add(ft); - } - } - Collections.sort(list, new Comparator() { - public int compare(final FileType o1, final FileType o2) { - return o1.getName().compareTo(o2.getName()); - } - }); - final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createMultipleFilesNoJarsDescriptor(); descriptor.setTitle(IdeBundle.message("title.open.file")); final String lastFilePath = project != null ? getLastFilePath(project) : null; final VirtualFile toSelect = lastFilePath == null ? null : LocalFileSystem.getInstance().findFileByPath(lastFilePath); - FileChooser.chooseFilesWithSlideEffect(descriptor, project, toSelect,new Consumer() { + FileChooser.chooseFiles(descriptor, project, toSelect, new Consumer>() { @Override - public void consume(final VirtualFile[] files) { + public void consume(final List files) { doOpenFile(project, files); } }); } - private void doOpenFile(@Nullable final Project project, - @NotNull final VirtualFile[] result) { - if (result.length == 0) return; - + private static void doOpenFile(@Nullable final Project project, + @NotNull final List result) { for (final VirtualFile file : result) { if (project != null) setLastFilePath(project, file.getParent().getPath()); if (isProjectFile(file.getName())) { diff --git a/platform/platform-impl/src/com/intellij/platform/OpenDirectoryProjectAction.java b/platform/platform-impl/src/com/intellij/platform/OpenDirectoryProjectAction.java index ceb933501513..618afac965ee 100644 --- a/platform/platform-impl/src/com/intellij/platform/OpenDirectoryProjectAction.java +++ b/platform/platform-impl/src/com/intellij/platform/OpenDirectoryProjectAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,8 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Consumer; +import java.util.List; + /** * @author yole */ @@ -33,12 +35,10 @@ public class OpenDirectoryProjectAction extends AnAction implements DumbAware { final FileChooserDescriptor descriptor = new OpenProjectFileChooserDescriptor(false); final Project project = e.getData(PlatformDataKeys.PROJECT); - FileChooser.chooseFilesWithSlideEffect(descriptor, project, null, new Consumer() { + FileChooser.chooseFiles(descriptor, project, null, new Consumer>() { @Override - public void consume(final VirtualFile[] files) { - if (files.length > 0) { - PlatformProjectOpenProcessor.getInstance().doOpenProject(files[0], project, false); - } + public void consume(final List files) { + PlatformProjectOpenProcessor.getInstance().doOpenProject(files.get(0), project, false); } }); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchAction.java index 28b3c17313ab..962f706bd8a7 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,6 +36,7 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileChooser.FileChooser; +import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.impl.LoadTextUtil; import com.intellij.openapi.fileTypes.StdFileTypes; @@ -85,17 +86,19 @@ public class ApplyPatchAction extends DumbAwareAction { final ApplyPatchDifferentiatedDialog dialog = new ApplyPatchDifferentiatedDialog(project, new ApplyPatchDefaultExecutor(project), Collections.singletonList(new ImportToShelfExecutor(project)), ApplyPatchMode.APPLY, file); dialog.show(); - } else { - FileChooser.chooseFilesWithSlideEffect(ApplyPatchDifferentiatedDialog.createSelectPatchDescriptor(), - project, null, new Consumer() { - @Override - public void consume(VirtualFile[] virtualFiles) { - if (virtualFiles.length != 1) return; - final ApplyPatchDifferentiatedDialog dialog = new ApplyPatchDifferentiatedDialog(project, new ApplyPatchDefaultExecutor(project), - Collections.singletonList(new ImportToShelfExecutor(project)), ApplyPatchMode.APPLY, virtualFiles[0]); - dialog.show(); - } - }); + } + else { + final FileChooserDescriptor descriptor = ApplyPatchDifferentiatedDialog.createSelectPatchDescriptor(); + FileChooser.chooseFiles(descriptor, project, null, new Consumer>() { + @Override + public void consume(List files) { + if (files.size() != 1) return; + new ApplyPatchDifferentiatedDialog( + project, new ApplyPatchDefaultExecutor(project), + Collections.singletonList(new ImportToShelfExecutor(project)), ApplyPatchMode.APPLY, files.get(0) + ).show(); + } + }); } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java index 6246ee02543f..ca2a750dba85 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,7 +32,6 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Consumer; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -55,55 +54,53 @@ public class ImportIntoShelfAction extends DumbAwareAction { public void actionPerformed(AnActionEvent e) { final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); if (project == null) return; - FileChooser.chooseFilesWithSlideEffect(new FileChooserDescriptor(true, true, false, false, false, true), project, - null, new Consumer() { - @Override - public void consume(final VirtualFile[] virtualFiles) { - if (virtualFiles.length == 0) return; - //gatherPatchFiles - final ProgressManager pm = ProgressManager.getInstance(); - final ShelveChangesManager shelveChangesManager = ShelveChangesManager.getInstance(project); - final List asList = Arrays.asList(virtualFiles); + final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, false, false, false, true); + FileChooser.chooseFiles(descriptor, project, null, new Consumer>() { + @Override + public void consume(final List files) { + //gatherPatchFiles + final ProgressManager pm = ProgressManager.getInstance(); + final ShelveChangesManager shelveChangesManager = ShelveChangesManager.getInstance(project); - final List patchTypeFiles = new ArrayList(); - final boolean filesFound = pm.runProcessWithProgressSynchronously(new Runnable() { - @Override - public void run() { - patchTypeFiles.addAll(shelveChangesManager.gatherPatchFiles(asList)); - } - }, "Looking for patch files...", true, project); - if (! filesFound || patchTypeFiles.isEmpty()) return; - if (! patchTypeFiles.equals(asList)) { - final int toImport = Messages.showYesNoDialog(project, "Found " + - (patchTypeFiles.size() == 1 - ? "one patch file (" + patchTypeFiles.get(0).getPath() + ")." - : (patchTypeFiles.size() + " patch files.")) + - "\nContinue with import?", "Import patches", Messages.getQuestionIcon()); - if (DialogWrapper.CANCEL_EXIT_CODE == toImport) return; + final List patchTypeFiles = new ArrayList(); + final boolean filesFound = pm.runProcessWithProgressSynchronously(new Runnable() { + @Override + public void run() { + patchTypeFiles.addAll(shelveChangesManager.gatherPatchFiles(files)); } - pm.runProcessWithProgressSynchronously(new Runnable() { - @Override - public void run() { - final List exceptions = new ArrayList(); - final List lists = - shelveChangesManager.importChangeLists(patchTypeFiles, new Consumer() { - @Override - public void consume(VcsException e) { - exceptions.add(e); - } - }); - if (!lists.isEmpty()) { - ShelvedChangesViewManager.getInstance(project).activateView(lists.get(lists.size() - 1)); - } - if (!exceptions.isEmpty()) { - AbstractVcsHelper.getInstance(project).showErrors(exceptions, "Import patches into shelf"); - } - if (lists.isEmpty() && exceptions.isEmpty()) { - VcsBalloonProblemNotifier.showOverChangesView(project, "No patches found", MessageType.WARNING); - } - } - }, "Import patches into shelf", true, project); + }, "Looking for patch files...", true, project); + if (!filesFound || patchTypeFiles.isEmpty()) return; + if (!patchTypeFiles.equals(files)) { + final String message = "Found " + (patchTypeFiles.size() == 1 ? + "one patch file (" + patchTypeFiles.get(0).getPath() + ")." : + (patchTypeFiles.size() + " patch files.")) + + "\nContinue with import?"; + final int toImport = Messages.showYesNoDialog(project, message, "Import Patches", Messages.getQuestionIcon()); + if (DialogWrapper.CANCEL_EXIT_CODE == toImport) return; } - }); + pm.runProcessWithProgressSynchronously(new Runnable() { + @Override + public void run() { + final List exceptions = new ArrayList(); + final List lists = + shelveChangesManager.importChangeLists(patchTypeFiles, new Consumer() { + @Override + public void consume(VcsException e) { + exceptions.add(e); + } + }); + if (!lists.isEmpty()) { + ShelvedChangesViewManager.getInstance(project).activateView(lists.get(lists.size() - 1)); + } + if (!exceptions.isEmpty()) { + AbstractVcsHelper.getInstance(project).showErrors(exceptions, "Import patches into shelf"); + } + if (lists.isEmpty() && exceptions.isEmpty()) { + VcsBalloonProblemNotifier.showOverChangesView(project, "No patches found", MessageType.WARNING); + } + } + }, "Import patches into shelf", true, project); + } + }); } } 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 f061957dfaee..67d7956fc576 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSHCredentialsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SSHCredentialsDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; @@ -44,6 +45,7 @@ import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.io.File; import java.io.IOException; +import java.util.List; /** * @author alex @@ -410,12 +412,12 @@ public class SSHCredentialsDialog extends DialogWrapper implements ActionListene final String oldValue = PropertiesComponent.getInstance().getValue("FileChooser.showHiddens"); PropertiesComponent.getInstance().setValue("FileChooser.showHiddens", Boolean.TRUE.toString()); - FileChooser.chooseFilesWithSlideEffect(descriptor, myProject, file, new Consumer() { + FileChooser.chooseFiles(descriptor, myProject, file, new Consumer>() { @Override - public void consume(VirtualFile[] files) { + public void consume(List files) { PropertiesComponent.getInstance().setValue("FileChooser.showHiddens", oldValue); - if (files != null && files.length == 1) { - path[0] = files[0].getPath().replace('/', File.separatorChar); + if (files.size() == 1) { + path[0] = FileUtil.toSystemDependentName(files.get(0).getPath()); myKeyFileText.setText(path[0]); } checkKeyFile();