IDEADEV-40728: Artifacts editor: Choose library dialog: libraries could be sorted

This commit is contained in:
nik
2009-10-08 16:57:29 +04:00
parent 23f915cf31
commit b533ad63a9
8 changed files with 28 additions and 43 deletions
@@ -81,7 +81,7 @@ public abstract class FacetBasedPackagingElementType<E extends PackagingElement<
private class ChooseFacetsDialog extends ChooseElementsDialog<F> {
private ChooseFacetsDialog(Project project, List<? extends F> items, String title, String description) {
super(project, items, title, description);
super(project, items, title, description, true);
}
@Override
@@ -81,11 +81,6 @@ public class ClasspathPanel extends JPanel {
private final EventDispatcher<OrderPanelListener> myListeners = EventDispatcher.create(OrderPanelListener.class);
private PopupAction[] myPopupActions = null;
private Icon[] myIcons = null;
private static final Comparator<Module> MODULES_COMPARATOR = new Comparator<Module>() {
public int compare(Module elem1, Module elem2) {
return elem1.getName().compareToIgnoreCase(elem2.getName());
}
};
private JButton myEditButton;
protected ClasspathPanel(Project project, ModifiableRootModel rootModel, final ModulesProvider modulesProvider) {
@@ -691,7 +686,6 @@ public class ClasspathPanel extends JPanel {
elements.add(module);
}
}
Collections.sort(elements, MODULES_COMPARATOR);
return elements;
}
@@ -79,7 +79,7 @@ public class ArtifactEditorContextImpl implements ArtifactEditorContext {
}
public List<Artifact> chooseArtifacts(final List<? extends Artifact> artifacts, final String title) {
ChooseArtifactsDialog dialog = new ChooseArtifactsDialog(getProject(), artifacts, title, "");
ChooseArtifactsDialog dialog = new ChooseArtifactsDialog(getProject(), artifacts, title, null);
dialog.show();
return dialog.isOK() ? dialog.getChosenElements() : Collections.<Artifact>emptyList();
}
@@ -118,14 +118,14 @@ public class ArtifactEditorContextImpl implements ArtifactEditorContext {
}
public List<Module> chooseModules(final List<Module> modules, final String title) {
ChooseModulesDialog dialog = new ChooseModulesDialog(getProject(), modules, title, "");
ChooseModulesDialog dialog = new ChooseModulesDialog(getProject(), modules, title, null);
dialog.show();
List<Module> selected = dialog.getChosenElements();
return dialog.isOK() ? selected : Collections.<Module>emptyList();
}
public List<Library> chooseLibraries(final List<Library> libraries, final String title) {
ChooseLibrariesDialog dialog = new ChooseLibrariesDialog(getProject(), libraries, title, "");
ChooseLibrariesDialog dialog = new ChooseLibrariesDialog(getProject(), libraries, title, null);
dialog.show();
return dialog.isOK() ? dialog.getChosenElements() : Collections.<Library>emptyList();
}
@@ -13,11 +13,7 @@ import java.util.List;
public class ChooseArtifactsDialog extends ChooseElementsDialog<Artifact> {
public ChooseArtifactsDialog(Project project, List<? extends Artifact> items, String title, String description) {
super(project, items, title, description);
}
public ChooseArtifactsDialog(JComponent component, String title, List<Artifact> items) {
super(component, items, title, true);
super(project, items, title, description, true);
}
protected String getItemText(Artifact item) {
@@ -21,11 +21,11 @@ import java.util.List;
public class ChooseModulesDialog extends ChooseElementsDialog<Module> {
public ChooseModulesDialog(Component parent, final List<Module> items, final String title) {
super(parent, items, title);
super(parent, items, title, null, true);
}
public ChooseModulesDialog(final Project project, final List<? extends Module> items, final String title, final String description) {
super(project, items, title, description);
super(project, items, title, description, true);
}
protected Icon getItemIcon(final Module item) {
@@ -470,11 +470,6 @@ public class LibraryTableEditor implements Disposable {
private void appendLibraryToModules(final ModuleStructureConfigurable rootConfigurable, final Library libraryToSelect) {
final List<Module> modules = new ArrayList<Module>();
modules.addAll(Arrays.asList(rootConfigurable.getModules()));
Collections.sort(modules, new Comparator<Module>() {
public int compare(final Module m1, final Module m2) {
return m1.getName().compareToIgnoreCase(m2.getName());
}
});
final ChooseModulesDialog dlg = new ChooseModulesDialog(myProject,
modules, ProjectBundle.message("choose.modules.dialog.title"),
ProjectBundle.message("choose.modules.dialog.description", libraryToSelect.getName()));
@@ -16,11 +16,7 @@ import java.util.List;
public class ChooseLibrariesDialog extends ChooseElementsDialog<Library> {
public ChooseLibrariesDialog(Project project, List<? extends Library> items, String title, String description) {
super(project, items, title, description);
}
public ChooseLibrariesDialog(JComponent component, String title, List<Library> items) {
super(component, items, title, true);
super(project, items, title, description, true);
}
protected String getItemText(final Library item) {
@@ -9,9 +9,7 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.*;
import java.util.List;
/**
@@ -22,28 +20,26 @@ public abstract class ChooseElementsDialog<T> extends DialogWrapper {
private String myDescription;
public ChooseElementsDialog(Project project, List<? extends T> items, String title, final String description) {
this(project, items, title, description, false);
}
public ChooseElementsDialog(Project project, List<? extends T> items, String title, final String description, boolean sort) {
super(project, true);
myDescription = description;
initializeDialog(items, title);
initializeDialog(items, title, sort);
}
public ChooseElementsDialog(Component parent, List<T> items, String title) {
this(parent, items, title, false);
this(parent, items, title, null, false);
}
public ChooseElementsDialog(Component parent, List<T> items, String title, final boolean sort) {
public ChooseElementsDialog(Component parent, List<T> items, String title, @Nullable String description, final boolean sort) {
super(parent, true);
if (sort) {
Collections.sort(items, new Comparator<T>() {
public int compare(final T o1, final T o2) {
return getItemText(o1).compareToIgnoreCase(getItemText(o2));
}
});
}
initializeDialog(items, title);
myDescription = description;
initializeDialog(items, title, sort);
}
private void initializeDialog(final List<? extends T> items, final String title) {
private void initializeDialog(final List<? extends T> items, final String title, boolean sort) {
setTitle(title);
myChooser = new ElementsChooser<T>(false) {
protected String getItemText(@NotNull final T item) {
@@ -52,7 +48,15 @@ public abstract class ChooseElementsDialog<T> extends DialogWrapper {
};
myChooser.setColorUnmarkedElements(false);
setElements(items, items.size() > 0 ? items.subList(0, 1) : Collections.<T>emptyList());
List<? extends T> elements = new ArrayList<T>(items);
if (sort) {
Collections.sort(elements, new Comparator<T>() {
public int compare(final T o1, final T o2) {
return getItemText(o1).compareToIgnoreCase(getItemText(o2));
}
});
}
setElements(elements, elements.size() > 0 ? elements.subList(0, 1) : Collections.<T>emptyList());
myChooser.getComponent().registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doOKAction();