Skip to content

Commit 29cb42e

Browse files
author
Federico Fissore
committed
Bundled core is again inside the hardware folder.
Fixed a handful of glitches when dealing with multiple installed cores
1 parent 98f364e commit 29cb42e

27 files changed

+358
-284
lines changed

app/lib/java-semver-0.8.0.jar

43.7 KB
Binary file not shown.

app/lib/java-semver.LICENSE.MIT.txt

Whitespace-only changes.

app/src/cc/arduino/contributions/libraries/filters/BuiltInPredicate.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,16 @@
2929
package cc.arduino.contributions.libraries.ui;
3030

3131
import cc.arduino.contributions.VersionComparator;
32+
import cc.arduino.contributions.VersionHelper;
3233
import cc.arduino.contributions.filters.InstalledPredicate;
3334
import cc.arduino.contributions.libraries.ContributedLibrary;
3435
import cc.arduino.contributions.libraries.ContributedLibraryComparator;
35-
import cc.arduino.contributions.libraries.filters.BuiltInPredicate;
36-
import cc.arduino.contributions.libraries.filters.InstalledLibraryPredicate;
36+
import cc.arduino.contributions.filters.BuiltInPredicate;
3737
import cc.arduino.contributions.libraries.filters.OnlyUpstreamReleasePredicate;
3838
import cc.arduino.contributions.ui.InstallerTableCell;
3939
import cc.arduino.contributions.ui.listeners.DelegatingKeyListener;
4040
import cc.arduino.utils.ReverseComparator;
41+
import com.github.zafarkhaja.semver.Version;
4142
import com.google.common.base.Function;
4243
import com.google.common.base.Predicates;
4344
import com.google.common.collect.Collections2;
@@ -66,7 +67,6 @@
6667
@SuppressWarnings("serial")
6768
public class ContributedLibraryTableCell extends InstallerTableCell {
6869

69-
private final LibraryManagerUI indexer;
7070
private JPanel panel;
7171
private JButton installButton;
7272
private Component installButtonPlaceholder;
@@ -77,9 +77,7 @@ public class ContributedLibraryTableCell extends InstallerTableCell {
7777
private JPanel inactiveButtonsPanel;
7878
private JLabel statusLabel;
7979

80-
public ContributedLibraryTableCell(LibraryManagerUI indexer) {
81-
this.indexer = indexer;
82-
80+
public ContributedLibraryTableCell() {
8381
{
8482
installButton = new JButton(_("Install"));
8583
installButton.addActionListener(new ActionListener() {
@@ -359,7 +357,7 @@ private Component getUpdatedCellComponent(Object value, boolean isSelected, int
359357

360358
// ...version.
361359
if (installed != null) {
362-
String installedVer = installed.getVersion();
360+
Version installedVer = VersionHelper.valueOf(installed.getVersion());
363361
if (installedVer == null) {
364362
desc += " " + _("Version unknown");
365363
} else {
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
package cc.arduino.contributions.libraries.ui;
22

3-
import cc.arduino.contributions.libraries.ContributedLibrary;
4-
import cc.arduino.contributions.libraries.filters.BuiltInPredicate;
3+
import cc.arduino.contributions.filters.BuiltInPredicate;
4+
import cc.arduino.contributions.packages.DownloadableContribution;
55
import cc.arduino.contributions.ui.DropdownItem;
66
import com.google.common.base.Predicate;
77

88
import static processing.app.I18n._;
99

10-
public class DropdownBuiltInLibrariesItem implements DropdownItem<ContributedLibrary> {
10+
public class DropdownBuiltInLibrariesItem implements DropdownItem<DownloadableContribution> {
1111

1212
public String toString() {
1313
return _("Built-in");
1414
}
1515

1616
@Override
17-
public Predicate<ContributedLibrary> getFilterPredicate() {
17+
public Predicate<DownloadableContribution> getFilterPredicate() {
1818
return new BuiltInPredicate();
1919
}
2020
}

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

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -28,30 +28,41 @@
2828
*/
2929
package cc.arduino.contributions.libraries.ui;
3030

31-
import cc.arduino.contributions.VersionComparator;
31+
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
32+
import cc.arduino.contributions.VersionHelper;
33+
import cc.arduino.contributions.filters.InstalledPredicate;
3234
import cc.arduino.contributions.libraries.ContributedLibrary;
3335
import cc.arduino.contributions.libraries.LibrariesIndexer;
3436
import cc.arduino.contributions.packages.ContributedPlatform;
3537
import cc.arduino.contributions.ui.FilteredAbstractTableModel;
38+
import com.github.zafarkhaja.semver.Version;
3639
import com.google.common.base.Predicate;
3740
import com.google.common.base.Predicates;
3841
import com.google.common.collect.Collections2;
3942

40-
import java.util.*;
43+
import java.util.ArrayList;
44+
import java.util.Collections;
45+
import java.util.LinkedList;
46+
import java.util.List;
4147

4248
@SuppressWarnings("serial")
4349
public class LibrariesIndexTableModel extends FilteredAbstractTableModel<ContributedLibrary> {
4450

4551
public final static int DESCRIPTION_COL = 0;
4652

4753
public static class ContributedLibraryReleases implements Comparable<ContributedLibraryReleases> {
54+
4855
public final String name;
49-
public final List<ContributedLibrary> releases = new ArrayList<ContributedLibrary>();
50-
public final List<String> versions = new ArrayList<String>();
51-
public ContributedLibrary selected = null;
56+
public final List<ContributedLibrary> releases;
57+
public final List<Version> versions;
58+
59+
public ContributedLibrary selected;
5260

5361
public ContributedLibraryReleases(ContributedLibrary library) {
54-
name = library.getName();
62+
this.name = library.getName();
63+
this.versions = new LinkedList<Version>();
64+
this.releases = new LinkedList<ContributedLibrary>();
65+
this.selected = null;
5566
add(library);
5667
}
5768

@@ -61,40 +72,28 @@ public boolean shouldContain(ContributedLibrary lib) {
6172

6273
public void add(ContributedLibrary library) {
6374
releases.add(library);
64-
versions.add(library.getVersion());
75+
Version version = VersionHelper.valueOf(library.getVersion());
76+
if (version != null) {
77+
versions.add(version);
78+
}
6579
selected = getLatest();
6680
}
6781

6882
public ContributedLibrary getInstalled() {
69-
List<ContributedLibrary> installedReleases = new LinkedList<ContributedLibrary>(Collections2.filter(releases, new Predicate<ContributedLibrary>() {
70-
@Override
71-
public boolean apply(ContributedLibrary contributedLibrary) {
72-
return contributedLibrary.isInstalled();
73-
}
74-
}));
83+
List<ContributedLibrary> installedReleases = new LinkedList<ContributedLibrary>(Collections2.filter(releases, new InstalledPredicate()));
84+
Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator());
85+
86+
if (installedReleases.isEmpty()) {
87+
return null;
88+
}
7589

76-
return getLatestOf(installedReleases);
90+
return installedReleases.get(0);
7791
}
7892

7993
public ContributedLibrary getLatest() {
8094
return getLatestOf(releases);
8195
}
8296

83-
private ContributedLibrary getLatestOf(List<ContributedLibrary> libs) {
84-
Collections.sort(new LinkedList<ContributedLibrary>(libs), new Comparator<ContributedLibrary>() {
85-
@Override
86-
public int compare(ContributedLibrary lib1, ContributedLibrary lib2) {
87-
return VersionComparator.VERSION_COMPARATOR.compare(lib1.getVersion(), lib2.getVersion());
88-
}
89-
});
90-
91-
if (libs.isEmpty()) {
92-
return null;
93-
}
94-
95-
return libs.get(libs.size() - 1);
96-
}
97-
9897
public ContributedLibrary getSelected() {
9998
return selected;
10099
}
@@ -223,7 +222,7 @@ public boolean isCellEditable(int row, int col) {
223222
return col == DESCRIPTION_COL;
224223
}
225224

226-
public List<String> getReleasesVersions(int row) {
225+
public List<Version> getReleasesVersions(int row) {
227226
return contributions.get(row).versions;
228227
}
229228

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ private LibrariesIndexTableModel getContribModel() {
6161

6262
@Override
6363
protected InstallerTableCell createCellRenderer() {
64-
return new ContributedLibraryTableCell(this);
64+
return new ContributedLibraryTableCell();
6565
}
6666

6767
@Override
6868
protected InstallerTableCell createCellEditor() {
69-
return new ContributedLibraryTableCell(this) {
69+
return new ContributedLibraryTableCell() {
7070
@Override
7171
protected void onInstall(ContributedLibrary selectedLibrary, ContributedLibrary installedLibrary) {
7272
if (selectedLibrary.isReadOnly()) {

app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
package cc.arduino.contributions.packages.ui;
3030

3131
import cc.arduino.contributions.VersionComparator;
32+
import cc.arduino.contributions.VersionHelper;
3233
import cc.arduino.contributions.filters.InstalledPredicate;
34+
import cc.arduino.contributions.filters.BuiltInPredicate;
3335
import cc.arduino.contributions.packages.ContributedBoard;
3436
import cc.arduino.contributions.packages.ContributedPlatform;
3537
import cc.arduino.contributions.packages.ContributedPlatformComparator;
@@ -263,7 +265,7 @@ public Component getTableCellEditorComponent(JTable table, Object value,
263265
java.util.List<ContributedPlatform> releases = new LinkedList<ContributedPlatform>(editorValue.releases);
264266
java.util.List<ContributedPlatform> uninstalledReleases = new LinkedList<ContributedPlatform>(Collections2.filter(releases, Predicates.not(new InstalledPredicate())));
265267

266-
java.util.List<ContributedPlatform> installedBuiltIn = new LinkedList<ContributedPlatform>();
268+
java.util.List<ContributedPlatform> installedBuiltIn = new LinkedList<ContributedPlatform>(Collections2.filter(releases, Predicates.and(new InstalledPredicate(), new BuiltInPredicate())));
267269

268270
if (installed != null && !installedBuiltIn.contains(installed)) {
269271
uninstalledReleases.addAll(installedBuiltIn);
@@ -330,8 +332,7 @@ private Component getUpdatedCellComponent(Object value, boolean isSelected, int
330332
upgradable = false;
331333
} else {
332334
installable = false;
333-
//removable = !installed.isReadOnly() && !hasBuiltInRelease;
334-
removable = !hasBuiltInRelease;
335+
removable = !installed.isReadOnly() && !hasBuiltInRelease;
335336
upgradable = new ContributedPlatformComparator().compare(selected, installed) > 0;
336337
}
337338
if (installable) {
@@ -352,17 +353,18 @@ private Component getUpdatedCellComponent(Object value, boolean isSelected, int
352353
if (author != null && !author.isEmpty()) {
353354
desc += " " + format("by <b>{0}</b>", author);
354355
}
355-
if (removable) {
356-
desc += " " + format(_("version <b>{0}</b>"), installed.getVersion()) + " <strong><font color=\"#00979D\">INSTALLED</font></strong>";
356+
if (installed != null) {
357+
desc += " " + format(_("version <b>{0}</b>"), VersionHelper.valueOf(installed.getVersion())) + " <strong><font color=\"#00979D\">INSTALLED</font></strong>";
357358
}
358359
desc += "<br />";
359360

360361
desc += _("Boards included in this package:") + "<br />";
361-
for (ContributedBoard board : selected.getBoards())
362-
desc += format("{0}, ", board.getName());
362+
for (ContributedBoard board : selected.getBoards()) {
363+
desc += board.getName() + ", ";
364+
}
363365
desc = desc.substring(0, desc.lastIndexOf(',')) + ".<br />";
364366

365-
if (author != null && !author.isEmpty()) {
367+
if (url != null && !url.isEmpty()) {
366368
desc += " " + format("<a href=\"{0}\">More info</a>", url);
367369
}
368370

app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -28,34 +28,40 @@
2828
*/
2929
package cc.arduino.contributions.packages.ui;
3030

31+
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
32+
import cc.arduino.contributions.VersionHelper;
33+
import cc.arduino.contributions.filters.InstalledPredicate;
3134
import cc.arduino.contributions.packages.ContributedPackage;
3235
import cc.arduino.contributions.packages.ContributedPlatform;
3336
import cc.arduino.contributions.packages.ContributionsIndex;
3437
import cc.arduino.contributions.ui.FilteredAbstractTableModel;
38+
import com.github.zafarkhaja.semver.Version;
3539
import com.google.common.base.Predicate;
3640
import com.google.common.base.Predicates;
41+
import com.google.common.collect.Collections2;
3742

3843
import java.util.ArrayList;
44+
import java.util.Collections;
3945
import java.util.LinkedList;
4046
import java.util.List;
4147

42-
import static processing.app.I18n._;
43-
4448
@SuppressWarnings("serial")
4549
public class ContributionIndexTableModel extends FilteredAbstractTableModel<ContributedPlatform> {
4650

4751
public final static int DESCRIPTION_COL = 0;
4852

4953
public static class ContributedPlatformReleases {
50-
public ContributedPackage packager;
51-
public String arch;
52-
public List<ContributedPlatform> releases = new ArrayList<ContributedPlatform>();
53-
public List<String> versions = new ArrayList<String>();
54+
public final ContributedPackage packager;
55+
public final String arch;
56+
public final List<ContributedPlatform> releases;
57+
public final List<Version> versions;
5458
public ContributedPlatform selected = null;
5559

5660
public ContributedPlatformReleases(ContributedPlatform platform) {
57-
packager = platform.getParentPackage();
58-
arch = platform.getArchitecture();
61+
this.packager = platform.getParentPackage();
62+
this.arch = platform.getArchitecture();
63+
this.releases = new LinkedList<ContributedPlatform>();
64+
this.versions = new LinkedList<Version>();
5965
add(platform);
6066
}
6167

@@ -67,39 +73,26 @@ public boolean shouldContain(ContributedPlatform platform) {
6773

6874
public void add(ContributedPlatform platform) {
6975
releases.add(platform);
70-
versions.add(platform.getVersion());
76+
Version version = VersionHelper.valueOf(platform.getVersion());
77+
if (version != null) {
78+
versions.add(version);
79+
}
7180
selected = getLatest();
7281
}
7382

7483
public ContributedPlatform getInstalled() {
75-
List<ContributedPlatform> installedPlatforms = new LinkedList<ContributedPlatform>();
76-
for (ContributedPlatform platform : releases) {
77-
if (platform.isInstalled()) {
78-
installedPlatforms.add(platform);
79-
}
80-
}
84+
List<ContributedPlatform> installedReleases = new LinkedList<ContributedPlatform>(Collections2.filter(releases, new InstalledPredicate()));
85+
Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator());
8186

82-
if (installedPlatforms.size() > 1) {
83-
throw new IllegalStateException(_("More than one platform is currently installed! Only one can be installed at any given time"));
87+
if (installedReleases.isEmpty()) {
88+
return null;
8489
}
8590

86-
if (!installedPlatforms.isEmpty()) {
87-
return installedPlatforms.get(0);
88-
}
89-
90-
return null;
91+
return installedReleases.get(0);
9192
}
9293

9394
public ContributedPlatform getLatest() {
94-
ContributedPlatform latest = null;
95-
for (ContributedPlatform plat : releases) {
96-
if (latest == null)
97-
latest = plat;
98-
// TODO a better version compare
99-
if (plat.getVersion().compareTo(latest.getVersion()) > 0)
100-
latest = plat;
101-
}
102-
return latest;
95+
return getLatestOf(releases);
10396
}
10497

10598
public ContributedPlatform getSelected() {
@@ -224,7 +217,7 @@ public boolean isCellEditable(int row, int col) {
224217
return col == DESCRIPTION_COL;
225218
}
226219

227-
public List<String> getReleasesVersions(int row) {
220+
public List<Version> getReleasesVersions(int row) {
228221
return contributions.get(row).versions;
229222
}
230223

0 commit comments

Comments
 (0)