fixed sorting of frameworks in 'new project wizard'

This commit is contained in:
nik
2013-05-07 15:55:18 +04:00
parent c620ab5121
commit 220111758b
@@ -2,9 +2,9 @@ package com.intellij.ide.util.newProjectWizard;
import com.intellij.ui.CheckedTreeNode;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -13,8 +13,7 @@ import java.util.List;
* @author nik
*/
public abstract class FrameworkSupportNodeBase extends CheckedTreeNode {
protected final FrameworkSupportNodeBase myParentNode;
protected final List<FrameworkSupportNodeBase> myChildren = new ArrayList<FrameworkSupportNodeBase>();
private final FrameworkSupportNodeBase myParentNode;
public FrameworkSupportNodeBase(Object userObject, final FrameworkSupportNodeBase parentNode) {
super(userObject);
@@ -22,22 +21,23 @@ public abstract class FrameworkSupportNodeBase extends CheckedTreeNode {
myParentNode = parentNode;
if (parentNode != null) {
parentNode.add(this);
parentNode.myChildren.add(this);
}
}
public static void sortByName(List<FrameworkSupportNodeBase> nodes) {
public static void sortByName(@Nullable List<FrameworkSupportNodeBase> nodes) {
if (nodes == null) return;
Collections.sort(nodes, new Comparator<FrameworkSupportNodeBase>() {
public int compare(final FrameworkSupportNodeBase o1, final FrameworkSupportNodeBase o2) {
if (o1 instanceof FrameworkGroupNode && !(o2 instanceof FrameworkGroupNode)) return -1;
if (o2 instanceof FrameworkGroupNode && !(o1 instanceof FrameworkGroupNode)) return 1;
if (o1.myChildren.size() < o2.myChildren.size()) return 1;
if (o2.myChildren.size() < o1.myChildren.size()) return -1;
if (o1.getChildCount() < o2.getChildCount()) return 1;
if (o1.getChildCount() > o2.getChildCount()) return -1;
return o1.getTitle().compareToIgnoreCase(o2.getTitle());
}
});
for (FrameworkSupportNodeBase node : nodes) {
sortByName(node.myChildren);
sortByName(node.children);
}
}
@@ -48,7 +48,7 @@ public abstract class FrameworkSupportNodeBase extends CheckedTreeNode {
public abstract Icon getIcon();
public List<FrameworkSupportNodeBase> getChildren() {
return myChildren;
return children;
}
public FrameworkSupportNodeBase getParentNode() {