diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java index 0b2e7404a528..51e4e7ccb871 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/DestinationFolderComboBox.java @@ -39,9 +39,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashSet; +import java.util.*; /** * User: anna @@ -104,11 +102,7 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton if (itemWrapper != null) { setIcon(itemWrapper.getIcon(fileIndex)); - final PsiDirectory directory = itemWrapper.getDirectory(); - final VirtualFile virtualFile = directory != null ? directory.getVirtualFile() : null; - setText(virtualFile != null - ? ProjectUtil.calcRelativeToProjectPath(virtualFile, project, true, true) - : itemWrapper.getPresentableUrl()); + setText(getPresentableText(itemWrapper, project)); } else { setText("Leave in same source root"); @@ -152,6 +146,14 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton }); } + private static String getPresentableText(DirectoryChooser.ItemWrapper itemWrapper, Project project) { + final PsiDirectory directory = itemWrapper.getDirectory(); + final VirtualFile virtualFile = directory != null ? directory.getVirtualFile() : null; + return virtualFile != null + ? ProjectUtil.calcRelativeToProjectPath(virtualFile, project, true, true) + : itemWrapper.getPresentableUrl(); + } + @Nullable public MoveDestination selectDirectory(final PackageWrapper targetPackage, final boolean showChooserWhenDefault) { final DirectoryChooser.ItemWrapper selectedItem = (DirectoryChooser.ItemWrapper)getComboBox().getSelectedItem(); @@ -185,12 +187,13 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton } } - private void setComboboxModel(JComboBox comboBox, VirtualFile initialTargetDirectorySourceRoot, - ProjectFileIndex fileIndex, - VirtualFile[] sourceRoots, - Project project, - boolean forceIncludeAll, - Pass updateErrorMessage) { + private void setComboboxModel(final JComboBox comboBox, + final VirtualFile initialTargetDirectorySourceRoot, + final ProjectFileIndex fileIndex, + final VirtualFile[] sourceRoots, + final Project project, + final boolean forceIncludeAll, + final Pass updateErrorMessage) { final LinkedHashSet targetDirectories = new LinkedHashSet(); final HashMap pathsToCreate = new HashMap(); MoveClassesOrPackagesUtil @@ -231,6 +234,12 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton } } updateErrorMessage(updateErrorMessage, fileIndex, selection); + Collections.sort(items, new Comparator() { + @Override + public int compare(DirectoryChooser.ItemWrapper o1, DirectoryChooser.ItemWrapper o2) { + return getPresentableText(o1, project).compareToIgnoreCase(getPresentableText(o2, project)); + } + }); comboBox.setModel(new CollectionComboBoxModel(items, selection)); }