Skip to content

Commit 594a3b4

Browse files
author
jantje
committed
#1339 board manager board list and json list not sorted
1 parent 511110b commit 594a3b4

File tree

3 files changed

+25
-13
lines changed

3 files changed

+25
-13
lines changed

io.sloeber.core/src/io/sloeber/core/api/BoardsManager.java

+4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.ArrayList;
1717
import java.util.Arrays;
1818
import java.util.Collection;
19+
import java.util.Collections;
1920
import java.util.HashMap;
2021
import java.util.HashSet;
2122
import java.util.List;
@@ -421,6 +422,8 @@ protected static synchronized void loadJsons(boolean forceDownload) {
421422
if (!jsonUrl.trim().isEmpty()) // skip empty lines
422423
loadJson(jsonUrl, forceDownload);
423424
}
425+
//sorting here so things look good in the gui
426+
Collections.sort(packageIndices);
424427
}
425428

426429
/**
@@ -799,6 +802,7 @@ static public List<ArduinoPackage> getPackages() {
799802
for (ArduinoPlatformPackageIndex index : getPackageIndices()) {
800803
packages.addAll(index.getPackages());
801804
}
805+
802806
return packages;
803807
}
804808

io.sloeber.core/src/io/sloeber/core/api/Json/ArduinoPlatformPackageIndex.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
import com.google.gson.annotations.JsonAdapter;
2121

2222
@JsonAdapter(ArduinoPlatformPackageIndex.class)
23-
public class ArduinoPlatformPackageIndex extends Node implements JsonDeserializer<ArduinoPlatformPackageIndex> {
23+
public class ArduinoPlatformPackageIndex extends Node
24+
implements Comparable<ArduinoPlatformPackageIndex>, JsonDeserializer<ArduinoPlatformPackageIndex> {
2425

2526
private List<ArduinoPackage> myPackages = new ArrayList<>();
2627

@@ -98,4 +99,9 @@ public String getName() {
9899
return myJsonFile.getName();
99100
}
100101

102+
@Override
103+
public int compareTo(ArduinoPlatformPackageIndex o) {
104+
return getID().compareTo(o.getID());
105+
}
106+
101107
}

io.sloeber.ui/src/io/sloeber/ui/preferences/PlatformSelectionPage.java

+14-12
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55

66
import java.util.Arrays;
77
import java.util.Collection;
8-
import java.util.HashMap;
8+
import java.util.Collections;
99
import java.util.LinkedList;
1010
import java.util.List;
11+
import java.util.TreeMap;
1112

1213
import org.eclipse.core.runtime.IProgressMonitor;
1314
import org.eclipse.core.runtime.IStatus;
@@ -50,7 +51,7 @@
5051
public class PlatformSelectionPage extends PreferencePage implements IWorkbenchPreferencePage {
5152
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
5253
// platform index json, package,platform,versions structure
53-
private HashMap<String, HashMap<String, HashMap<String, InstallableVersion[]>>> myShownPlatforms = new HashMap<>();
54+
private TreeMap<String, TreeMap<String, TreeMap<String, InstallableVersion[]>>> myShownPlatforms = new TreeMap<>();
5455

5556
private boolean mustBeInstalled(ArduinoPlatform platform) {
5657
ArduinoPackage parentPkg = platform.getParent();
@@ -66,9 +67,9 @@ private boolean mustBeInstalled(ArduinoPlatform platform) {
6667
}
6768

6869
private boolean mustBeInstalled(ArduinoPlatformPackageIndex packageIndex) {
69-
HashMap<String, HashMap<String, InstallableVersion[]>> inScopeVersions = myShownPlatforms
70+
TreeMap<String, TreeMap<String, InstallableVersion[]>> inScopeVersions = myShownPlatforms
7071
.get(packageIndex.getID());
71-
for (HashMap<String, InstallableVersion[]> platform : inScopeVersions.values()) {
72+
for (TreeMap<String, InstallableVersion[]> platform : inScopeVersions.values()) {
7273
for (InstallableVersion[] versions : platform.values()) {
7374
for (InstallableVersion version : versions) {
7475
if (version.mustBeInstalled()) {
@@ -82,7 +83,7 @@ private boolean mustBeInstalled(ArduinoPlatformPackageIndex packageIndex) {
8283

8384
private boolean mustBeInstalled(ArduinoPackage pkg) {
8485
ArduinoPlatformPackageIndex parentIndex = pkg.getPackageIndex();
85-
HashMap<String, InstallableVersion[]> inScopeVersions = myShownPlatforms.get(parentIndex.getID())
86+
TreeMap<String, InstallableVersion[]> inScopeVersions = myShownPlatforms.get(parentIndex.getID())
8687
.get(pkg.getID());
8788
for (InstallableVersion[] versions : inScopeVersions.values()) {
8889
for (InstallableVersion version : versions) {
@@ -133,9 +134,9 @@ public ArduinoPlatformVersion getPlatform() {
133134
public PlatformSelectionPage() {
134135
for (ArduinoPlatformPackageIndex curPackageIndex : BoardsManager.getPackageIndices()) {
135136
String pkgIndexID = curPackageIndex.getID();
136-
HashMap<String, HashMap<String, InstallableVersion[]>> packageMap = new HashMap<>();
137+
TreeMap<String, TreeMap<String, InstallableVersion[]>> packageMap = new TreeMap<>();
137138
for (ArduinoPackage curPackage : curPackageIndex.getPackages()) {
138-
HashMap<String, InstallableVersion[]> platformMap = new HashMap<>();
139+
TreeMap<String, InstallableVersion[]> platformMap = new TreeMap<>();
139140
String pkgID = curPackage.getID();
140141
for (ArduinoPlatform curPlatform : curPackage.getPlatforms()) {
141142
String platformID = curPlatform.getID();
@@ -302,11 +303,11 @@ public void checkStateChanged(CheckStateChangedEvent event) {
302303
public Object[] getElements(Object inputElement) {
303304
if (PlatformSelectionPage.this.myHideJson) {
304305
List<ArduinoPackage> packages = BoardsManager.getPackages();
306+
Collections.sort(packages);
305307
return packages.toArray(new Object[packages.size()]);
306308
}
307-
Collection<ArduinoPlatformPackageIndex> indexFiles = BoardsManager.getPackageIndices();
309+
List<ArduinoPlatformPackageIndex> indexFiles = BoardsManager.getPackageIndices();
308310
return indexFiles.toArray(new Object[indexFiles.size()]);
309-
310311
}
311312

312313
@Override
@@ -322,7 +323,8 @@ public void inputChanged(Viewer viewer11, Object oldInput, Object newInput) {
322323
@Override
323324
public Object[] getChildren(Object parentElement) {
324325
if (parentElement instanceof ArduinoPlatformPackageIndex) {
325-
Collection<ArduinoPackage> packages = ((ArduinoPlatformPackageIndex) parentElement).getPackages();
326+
Collection<ArduinoPackage> packages = ((ArduinoPlatformPackageIndex) parentElement)
327+
.getPackages();
326328
return packages.toArray(new Object[packages.size()]);
327329
}
328330
if (parentElement instanceof ArduinoPackage) {
@@ -440,8 +442,8 @@ public void update(ViewerCell cell) {
440442
protected IStatus updateInstallation(IProgressMonitor monitor) {
441443
List<ArduinoPlatformVersion> platformsToInstall = new LinkedList<>();
442444
List<ArduinoPlatformVersion> platformsToRemove = new LinkedList<>();
443-
for (HashMap<String, HashMap<String, InstallableVersion[]>> packageIndex : myShownPlatforms.values()) {
444-
for (HashMap<String, InstallableVersion[]> arduinoPackage : packageIndex.values()) {
445+
for (TreeMap<String, TreeMap<String, InstallableVersion[]>> packageIndex : myShownPlatforms.values()) {
446+
for (TreeMap<String, InstallableVersion[]> arduinoPackage : packageIndex.values()) {
445447
for (InstallableVersion[] versions : arduinoPackage.values()) {
446448
for (InstallableVersion version : versions) {
447449
if (version.isInstalled() != version.mustBeInstalled()) {

0 commit comments

Comments
 (0)