Skip to content

Commit f13fe9a

Browse files
author
Federico Fissore
committed
LibraryManagerUI: library types order fixed
1 parent 1d6e710 commit f13fe9a

File tree

4 files changed

+59
-9
lines changed

4 files changed

+59
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
package cc.arduino.contributions.libraries;
22

3-
import java.util.Arrays;
43
import java.util.Comparator;
5-
import java.util.List;
64

75
public class LibraryByTypeComparator implements Comparator<ContributedLibrary> {
86

9-
private final List<String> types;
7+
private final LibraryTypeComparator libraryTypeComparator;
108

119
public LibraryByTypeComparator() {
12-
this("Arduino", "Recommended", "Contributed");
10+
this(new LibraryTypeComparator());
1311
}
1412

15-
public LibraryByTypeComparator(String... types) {
16-
this.types = Arrays.asList(types);
13+
public LibraryByTypeComparator(LibraryTypeComparator libraryTypeComparator) {
14+
this.libraryTypeComparator = libraryTypeComparator;
1715
}
1816

1917
@Override
2018
public int compare(ContributedLibrary o1, ContributedLibrary o2) {
21-
return types.indexOf(o1.getTypes().get(0)) - types.indexOf(o2.getTypes().get(0));
19+
return libraryTypeComparator.compare(o1.getTypes().get(0), o2.getTypes().get(0));
2220
}
2321

2422
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package cc.arduino.contributions.libraries;
2+
3+
import java.util.Arrays;
4+
import java.util.Comparator;
5+
import java.util.List;
6+
7+
public class LibraryTypeComparator implements Comparator<String> {
8+
9+
private final List<String> types;
10+
11+
public LibraryTypeComparator() {
12+
this("Arduino", "Recommended", "Contributed");
13+
}
14+
15+
public LibraryTypeComparator(String... types) {
16+
this.types = Arrays.asList(types);
17+
}
18+
19+
@Override
20+
public int compare(String o1, String o2) {
21+
if (types.contains(o1) && types.contains(o2)) {
22+
return types.indexOf(o1) - types.indexOf(o2);
23+
} else if (types.contains(o1)) {
24+
return -1;
25+
} else if (types.contains(o2)) {
26+
return 1;
27+
}
28+
return o1.compareTo(o2);
29+
}
30+
31+
}

app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import cc.arduino.contributions.libraries.ContributedLibrary;
3232
import cc.arduino.contributions.libraries.LibrariesIndexer;
3333
import cc.arduino.contributions.libraries.LibraryInstaller;
34+
import cc.arduino.contributions.libraries.LibraryTypeComparator;
3435
import cc.arduino.contributions.packages.DownloadableContribution;
3536
import cc.arduino.contributions.ui.InstallerJDialogUncaughtExceptionHandler;
3637
import cc.arduino.contributions.ui.*;
@@ -41,7 +42,7 @@
4142
import java.awt.*;
4243
import java.awt.event.ActionEvent;
4344
import java.awt.event.ActionListener;
44-
import java.util.Collection;
45+
import java.util.*;
4546

4647
import static processing.app.I18n._;
4748

@@ -160,7 +161,8 @@ public void setIndexer(LibrariesIndexer indexer) {
160161
typeChooser.removeAllItems();
161162
typeChooser.addItem(new DropdownAllItem());
162163
typeChooser.addItem(new DropdownInstalledLibraryItem(indexer.getIndex()));
163-
Collection<String> types = indexer.getIndex().getTypes();
164+
java.util.List<String> types = new LinkedList<String>(indexer.getIndex().getTypes());
165+
Collections.sort(types, new LibraryTypeComparator());
164166
for (String type : types) {
165167
typeChooser.addItem(new DropdownLibraryOfTypeItem(type));
166168
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package cc.arduino.contributions.libraries;
2+
3+
import org.junit.Test;
4+
5+
import java.util.Arrays;
6+
import java.util.Collections;
7+
import java.util.List;
8+
9+
import static org.junit.Assert.assertEquals;
10+
11+
public class LibraryOfTypeComparatorTest {
12+
13+
@Test
14+
public void testSort() throws Exception {
15+
List<String> strings = Arrays.asList("Arduino", "Contributed", "Recommended", "Recommended", "Other", "1yetanother", "Arduino", "Recommended", "Contributed", "Recommended");
16+
Collections.sort(strings, new LibraryTypeComparator());
17+
assertEquals(Arrays.asList("Arduino", "Arduino", "Recommended", "Recommended", "Recommended", "Recommended", "Contributed", "Contributed", "1yetanother", "Other"), strings);
18+
}
19+
}

0 commit comments

Comments
 (0)