mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-25 06:22:11 +03:00
Bundled core is again inside the hardware folder.
Fixed a handful of glitches when dealing with multiple installed cores
This commit is contained in:
@ -1,17 +0,0 @@
|
||||
package cc.arduino.contributions.filters;
|
||||
|
||||
import cc.arduino.contributions.packages.DownloadableContribution;
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
public class InstalledPredicate implements Predicate<DownloadableContribution> {
|
||||
@Override
|
||||
public boolean apply(DownloadableContribution input) {
|
||||
return input.isInstalled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj instanceof DownloadableContribution;
|
||||
}
|
||||
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package cc.arduino.contributions.libraries.filters;
|
||||
|
||||
import cc.arduino.contributions.libraries.ContributedLibrary;
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
public class BuiltInPredicate implements Predicate<ContributedLibrary> {
|
||||
|
||||
@Override
|
||||
public boolean apply(ContributedLibrary input) {
|
||||
return input.isReadOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj instanceof BuiltInPredicate;
|
||||
}
|
||||
}
|
@ -29,15 +29,16 @@
|
||||
package cc.arduino.contributions.libraries.ui;
|
||||
|
||||
import cc.arduino.contributions.VersionComparator;
|
||||
import cc.arduino.contributions.VersionHelper;
|
||||
import cc.arduino.contributions.filters.InstalledPredicate;
|
||||
import cc.arduino.contributions.libraries.ContributedLibrary;
|
||||
import cc.arduino.contributions.libraries.ContributedLibraryComparator;
|
||||
import cc.arduino.contributions.libraries.filters.BuiltInPredicate;
|
||||
import cc.arduino.contributions.libraries.filters.InstalledLibraryPredicate;
|
||||
import cc.arduino.contributions.filters.BuiltInPredicate;
|
||||
import cc.arduino.contributions.libraries.filters.OnlyUpstreamReleasePredicate;
|
||||
import cc.arduino.contributions.ui.InstallerTableCell;
|
||||
import cc.arduino.contributions.ui.listeners.DelegatingKeyListener;
|
||||
import cc.arduino.utils.ReverseComparator;
|
||||
import com.github.zafarkhaja.semver.Version;
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Collections2;
|
||||
@ -66,7 +67,6 @@ import static processing.app.I18n.format;
|
||||
@SuppressWarnings("serial")
|
||||
public class ContributedLibraryTableCell extends InstallerTableCell {
|
||||
|
||||
private final LibraryManagerUI indexer;
|
||||
private JPanel panel;
|
||||
private JButton installButton;
|
||||
private Component installButtonPlaceholder;
|
||||
@ -77,9 +77,7 @@ public class ContributedLibraryTableCell extends InstallerTableCell {
|
||||
private JPanel inactiveButtonsPanel;
|
||||
private JLabel statusLabel;
|
||||
|
||||
public ContributedLibraryTableCell(LibraryManagerUI indexer) {
|
||||
this.indexer = indexer;
|
||||
|
||||
public ContributedLibraryTableCell() {
|
||||
{
|
||||
installButton = new JButton(_("Install"));
|
||||
installButton.addActionListener(new ActionListener() {
|
||||
@ -359,7 +357,7 @@ public class ContributedLibraryTableCell extends InstallerTableCell {
|
||||
|
||||
// ...version.
|
||||
if (installed != null) {
|
||||
String installedVer = installed.getVersion();
|
||||
Version installedVer = VersionHelper.valueOf(installed.getVersion());
|
||||
if (installedVer == null) {
|
||||
desc += " " + _("Version unknown");
|
||||
} else {
|
||||
|
@ -1,20 +1,20 @@
|
||||
package cc.arduino.contributions.libraries.ui;
|
||||
|
||||
import cc.arduino.contributions.libraries.ContributedLibrary;
|
||||
import cc.arduino.contributions.libraries.filters.BuiltInPredicate;
|
||||
import cc.arduino.contributions.filters.BuiltInPredicate;
|
||||
import cc.arduino.contributions.packages.DownloadableContribution;
|
||||
import cc.arduino.contributions.ui.DropdownItem;
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
import static processing.app.I18n._;
|
||||
|
||||
public class DropdownBuiltInLibrariesItem implements DropdownItem<ContributedLibrary> {
|
||||
public class DropdownBuiltInLibrariesItem implements DropdownItem<DownloadableContribution> {
|
||||
|
||||
public String toString() {
|
||||
return _("Built-in");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Predicate<ContributedLibrary> getFilterPredicate() {
|
||||
public Predicate<DownloadableContribution> getFilterPredicate() {
|
||||
return new BuiltInPredicate();
|
||||
}
|
||||
}
|
||||
|
@ -28,16 +28,22 @@
|
||||
*/
|
||||
package cc.arduino.contributions.libraries.ui;
|
||||
|
||||
import cc.arduino.contributions.VersionComparator;
|
||||
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
|
||||
import cc.arduino.contributions.VersionHelper;
|
||||
import cc.arduino.contributions.filters.InstalledPredicate;
|
||||
import cc.arduino.contributions.libraries.ContributedLibrary;
|
||||
import cc.arduino.contributions.libraries.LibrariesIndexer;
|
||||
import cc.arduino.contributions.packages.ContributedPlatform;
|
||||
import cc.arduino.contributions.ui.FilteredAbstractTableModel;
|
||||
import com.github.zafarkhaja.semver.Version;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Collections2;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class LibrariesIndexTableModel extends FilteredAbstractTableModel<ContributedLibrary> {
|
||||
@ -45,13 +51,18 @@ public class LibrariesIndexTableModel extends FilteredAbstractTableModel<Contrib
|
||||
public final static int DESCRIPTION_COL = 0;
|
||||
|
||||
public static class ContributedLibraryReleases implements Comparable<ContributedLibraryReleases> {
|
||||
|
||||
public final String name;
|
||||
public final List<ContributedLibrary> releases = new ArrayList<ContributedLibrary>();
|
||||
public final List<String> versions = new ArrayList<String>();
|
||||
public ContributedLibrary selected = null;
|
||||
public final List<ContributedLibrary> releases;
|
||||
public final List<Version> versions;
|
||||
|
||||
public ContributedLibrary selected;
|
||||
|
||||
public ContributedLibraryReleases(ContributedLibrary library) {
|
||||
name = library.getName();
|
||||
this.name = library.getName();
|
||||
this.versions = new LinkedList<Version>();
|
||||
this.releases = new LinkedList<ContributedLibrary>();
|
||||
this.selected = null;
|
||||
add(library);
|
||||
}
|
||||
|
||||
@ -61,40 +72,28 @@ public class LibrariesIndexTableModel extends FilteredAbstractTableModel<Contrib
|
||||
|
||||
public void add(ContributedLibrary library) {
|
||||
releases.add(library);
|
||||
versions.add(library.getVersion());
|
||||
Version version = VersionHelper.valueOf(library.getVersion());
|
||||
if (version != null) {
|
||||
versions.add(version);
|
||||
}
|
||||
selected = getLatest();
|
||||
}
|
||||
|
||||
public ContributedLibrary getInstalled() {
|
||||
List<ContributedLibrary> installedReleases = new LinkedList<ContributedLibrary>(Collections2.filter(releases, new Predicate<ContributedLibrary>() {
|
||||
@Override
|
||||
public boolean apply(ContributedLibrary contributedLibrary) {
|
||||
return contributedLibrary.isInstalled();
|
||||
}
|
||||
}));
|
||||
List<ContributedLibrary> installedReleases = new LinkedList<ContributedLibrary>(Collections2.filter(releases, new InstalledPredicate()));
|
||||
Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator());
|
||||
|
||||
return getLatestOf(installedReleases);
|
||||
if (installedReleases.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return installedReleases.get(0);
|
||||
}
|
||||
|
||||
public ContributedLibrary getLatest() {
|
||||
return getLatestOf(releases);
|
||||
}
|
||||
|
||||
private ContributedLibrary getLatestOf(List<ContributedLibrary> libs) {
|
||||
Collections.sort(new LinkedList<ContributedLibrary>(libs), new Comparator<ContributedLibrary>() {
|
||||
@Override
|
||||
public int compare(ContributedLibrary lib1, ContributedLibrary lib2) {
|
||||
return VersionComparator.VERSION_COMPARATOR.compare(lib1.getVersion(), lib2.getVersion());
|
||||
}
|
||||
});
|
||||
|
||||
if (libs.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return libs.get(libs.size() - 1);
|
||||
}
|
||||
|
||||
public ContributedLibrary getSelected() {
|
||||
return selected;
|
||||
}
|
||||
@ -223,7 +222,7 @@ public class LibrariesIndexTableModel extends FilteredAbstractTableModel<Contrib
|
||||
return col == DESCRIPTION_COL;
|
||||
}
|
||||
|
||||
public List<String> getReleasesVersions(int row) {
|
||||
public List<Version> getReleasesVersions(int row) {
|
||||
return contributions.get(row).versions;
|
||||
}
|
||||
|
||||
|
@ -61,12 +61,12 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibrary> {
|
||||
|
||||
@Override
|
||||
protected InstallerTableCell createCellRenderer() {
|
||||
return new ContributedLibraryTableCell(this);
|
||||
return new ContributedLibraryTableCell();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InstallerTableCell createCellEditor() {
|
||||
return new ContributedLibraryTableCell(this) {
|
||||
return new ContributedLibraryTableCell() {
|
||||
@Override
|
||||
protected void onInstall(ContributedLibrary selectedLibrary, ContributedLibrary installedLibrary) {
|
||||
if (selectedLibrary.isReadOnly()) {
|
||||
|
@ -29,7 +29,9 @@
|
||||
package cc.arduino.contributions.packages.ui;
|
||||
|
||||
import cc.arduino.contributions.VersionComparator;
|
||||
import cc.arduino.contributions.VersionHelper;
|
||||
import cc.arduino.contributions.filters.InstalledPredicate;
|
||||
import cc.arduino.contributions.filters.BuiltInPredicate;
|
||||
import cc.arduino.contributions.packages.ContributedBoard;
|
||||
import cc.arduino.contributions.packages.ContributedPlatform;
|
||||
import cc.arduino.contributions.packages.ContributedPlatformComparator;
|
||||
@ -263,7 +265,7 @@ public class ContributedPlatformTableCell extends InstallerTableCell {
|
||||
java.util.List<ContributedPlatform> releases = new LinkedList<ContributedPlatform>(editorValue.releases);
|
||||
java.util.List<ContributedPlatform> uninstalledReleases = new LinkedList<ContributedPlatform>(Collections2.filter(releases, Predicates.not(new InstalledPredicate())));
|
||||
|
||||
java.util.List<ContributedPlatform> installedBuiltIn = new LinkedList<ContributedPlatform>();
|
||||
java.util.List<ContributedPlatform> installedBuiltIn = new LinkedList<ContributedPlatform>(Collections2.filter(releases, Predicates.and(new InstalledPredicate(), new BuiltInPredicate())));
|
||||
|
||||
if (installed != null && !installedBuiltIn.contains(installed)) {
|
||||
uninstalledReleases.addAll(installedBuiltIn);
|
||||
@ -330,8 +332,7 @@ public class ContributedPlatformTableCell extends InstallerTableCell {
|
||||
upgradable = false;
|
||||
} else {
|
||||
installable = false;
|
||||
//removable = !installed.isReadOnly() && !hasBuiltInRelease;
|
||||
removable = !hasBuiltInRelease;
|
||||
removable = !installed.isReadOnly() && !hasBuiltInRelease;
|
||||
upgradable = new ContributedPlatformComparator().compare(selected, installed) > 0;
|
||||
}
|
||||
if (installable) {
|
||||
@ -352,17 +353,18 @@ public class ContributedPlatformTableCell extends InstallerTableCell {
|
||||
if (author != null && !author.isEmpty()) {
|
||||
desc += " " + format("by <b>{0}</b>", author);
|
||||
}
|
||||
if (removable) {
|
||||
desc += " " + format(_("version <b>{0}</b>"), installed.getVersion()) + " <strong><font color=\"#00979D\">INSTALLED</font></strong>";
|
||||
if (installed != null) {
|
||||
desc += " " + format(_("version <b>{0}</b>"), VersionHelper.valueOf(installed.getVersion())) + " <strong><font color=\"#00979D\">INSTALLED</font></strong>";
|
||||
}
|
||||
desc += "<br />";
|
||||
|
||||
desc += _("Boards included in this package:") + "<br />";
|
||||
for (ContributedBoard board : selected.getBoards())
|
||||
desc += format("{0}, ", board.getName());
|
||||
for (ContributedBoard board : selected.getBoards()) {
|
||||
desc += board.getName() + ", ";
|
||||
}
|
||||
desc = desc.substring(0, desc.lastIndexOf(',')) + ".<br />";
|
||||
|
||||
if (author != null && !author.isEmpty()) {
|
||||
if (url != null && !url.isEmpty()) {
|
||||
desc += " " + format("<a href=\"{0}\">More info</a>", url);
|
||||
}
|
||||
|
||||
|
@ -28,34 +28,40 @@
|
||||
*/
|
||||
package cc.arduino.contributions.packages.ui;
|
||||
|
||||
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
|
||||
import cc.arduino.contributions.VersionHelper;
|
||||
import cc.arduino.contributions.filters.InstalledPredicate;
|
||||
import cc.arduino.contributions.packages.ContributedPackage;
|
||||
import cc.arduino.contributions.packages.ContributedPlatform;
|
||||
import cc.arduino.contributions.packages.ContributionsIndex;
|
||||
import cc.arduino.contributions.ui.FilteredAbstractTableModel;
|
||||
import com.github.zafarkhaja.semver.Version;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Collections2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import static processing.app.I18n._;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class ContributionIndexTableModel extends FilteredAbstractTableModel<ContributedPlatform> {
|
||||
|
||||
public final static int DESCRIPTION_COL = 0;
|
||||
|
||||
public static class ContributedPlatformReleases {
|
||||
public ContributedPackage packager;
|
||||
public String arch;
|
||||
public List<ContributedPlatform> releases = new ArrayList<ContributedPlatform>();
|
||||
public List<String> versions = new ArrayList<String>();
|
||||
public final ContributedPackage packager;
|
||||
public final String arch;
|
||||
public final List<ContributedPlatform> releases;
|
||||
public final List<Version> versions;
|
||||
public ContributedPlatform selected = null;
|
||||
|
||||
public ContributedPlatformReleases(ContributedPlatform platform) {
|
||||
packager = platform.getParentPackage();
|
||||
arch = platform.getArchitecture();
|
||||
this.packager = platform.getParentPackage();
|
||||
this.arch = platform.getArchitecture();
|
||||
this.releases = new LinkedList<ContributedPlatform>();
|
||||
this.versions = new LinkedList<Version>();
|
||||
add(platform);
|
||||
}
|
||||
|
||||
@ -67,39 +73,26 @@ public class ContributionIndexTableModel extends FilteredAbstractTableModel<Cont
|
||||
|
||||
public void add(ContributedPlatform platform) {
|
||||
releases.add(platform);
|
||||
versions.add(platform.getVersion());
|
||||
Version version = VersionHelper.valueOf(platform.getVersion());
|
||||
if (version != null) {
|
||||
versions.add(version);
|
||||
}
|
||||
selected = getLatest();
|
||||
}
|
||||
|
||||
public ContributedPlatform getInstalled() {
|
||||
List<ContributedPlatform> installedPlatforms = new LinkedList<ContributedPlatform>();
|
||||
for (ContributedPlatform platform : releases) {
|
||||
if (platform.isInstalled()) {
|
||||
installedPlatforms.add(platform);
|
||||
}
|
||||
List<ContributedPlatform> installedReleases = new LinkedList<ContributedPlatform>(Collections2.filter(releases, new InstalledPredicate()));
|
||||
Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator());
|
||||
|
||||
if (installedReleases.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (installedPlatforms.size() > 1) {
|
||||
throw new IllegalStateException(_("More than one platform is currently installed! Only one can be installed at any given time"));
|
||||
}
|
||||
|
||||
if (!installedPlatforms.isEmpty()) {
|
||||
return installedPlatforms.get(0);
|
||||
}
|
||||
|
||||
return null;
|
||||
return installedReleases.get(0);
|
||||
}
|
||||
|
||||
public ContributedPlatform getLatest() {
|
||||
ContributedPlatform latest = null;
|
||||
for (ContributedPlatform plat : releases) {
|
||||
if (latest == null)
|
||||
latest = plat;
|
||||
// TODO a better version compare
|
||||
if (plat.getVersion().compareTo(latest.getVersion()) > 0)
|
||||
latest = plat;
|
||||
}
|
||||
return latest;
|
||||
return getLatestOf(releases);
|
||||
}
|
||||
|
||||
public ContributedPlatform getSelected() {
|
||||
@ -224,7 +217,7 @@ public class ContributionIndexTableModel extends FilteredAbstractTableModel<Cont
|
||||
return col == DESCRIPTION_COL;
|
||||
}
|
||||
|
||||
public List<String> getReleasesVersions(int row) {
|
||||
public List<Version> getReleasesVersions(int row) {
|
||||
return contributions.get(row).versions;
|
||||
}
|
||||
|
||||
|
@ -66,13 +66,17 @@ public class ContributionManagerUI extends InstallerJDialog {
|
||||
protected InstallerTableCell createCellEditor() {
|
||||
return new ContributedPlatformTableCell() {
|
||||
@Override
|
||||
protected void onInstall(ContributedPlatform selectedPlatform, ContributedPlatform installed) {
|
||||
onInstallPressed(selectedPlatform, installed);
|
||||
protected void onInstall(ContributedPlatform selected, ContributedPlatform installed) {
|
||||
if (selected.isReadOnly()) {
|
||||
onRemovePressed(installed, false);
|
||||
} else {
|
||||
onInstallPressed(selected, installed);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRemove(ContributedPlatform installedPlatform) {
|
||||
onRemovePressed(installedPlatform);
|
||||
onRemovePressed(installedPlatform, true);
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -157,7 +161,7 @@ public class ContributionManagerUI extends InstallerJDialog {
|
||||
try {
|
||||
setProgressVisible(true, _("Installing..."));
|
||||
installer.install(platformToInstall);
|
||||
if (platformToRemove != null) {
|
||||
if (platformToRemove != null && !platformToRemove.isReadOnly()) {
|
||||
installer.remove(platformToRemove);
|
||||
}
|
||||
onIndexesUpdated();
|
||||
@ -172,12 +176,14 @@ public class ContributionManagerUI extends InstallerJDialog {
|
||||
installerThread.start();
|
||||
}
|
||||
|
||||
public void onRemovePressed(final ContributedPlatform platform) {
|
||||
public void onRemovePressed(final ContributedPlatform platform, boolean showWarning) {
|
||||
clearErrorMessage();
|
||||
|
||||
int chosenOption = JOptionPane.showConfirmDialog(getParent(), I18n.format(_("Do you want to remove {0}?\nIf you do so you won't be able to use {0} any more."), platform.getName()), _("Please confirm boards deletion"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
|
||||
if (chosenOption != JOptionPane.YES_OPTION) {
|
||||
return;
|
||||
if (showWarning) {
|
||||
int chosenOption = JOptionPane.showConfirmDialog(getParent(), I18n.format(_("Do you want to remove {0}?\nIf you do so you won't be able to use {0} any more."), platform.getName()), _("Please confirm boards deletion"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
|
||||
if (chosenOption != JOptionPane.YES_OPTION) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
installerThread = new Thread(new Runnable() {
|
||||
|
@ -28,12 +28,34 @@
|
||||
*/
|
||||
package cc.arduino.contributions.ui;
|
||||
|
||||
import cc.arduino.contributions.VersionComparator;
|
||||
import cc.arduino.contributions.packages.DownloadableContribution;
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class FilteredAbstractTableModel<T> extends AbstractTableModel {
|
||||
|
||||
abstract public void updateIndexFilter(String[] filters, Predicate<T>... additionalFilters);
|
||||
|
||||
protected static <T extends DownloadableContribution> T getLatestOf(List<T> contribs) {
|
||||
contribs = new LinkedList<T>(contribs);
|
||||
Collections.sort(contribs, new Comparator<T>() {
|
||||
@Override
|
||||
public int compare(T contrib1, T contrib2) {
|
||||
return VersionComparator.VERSION_COMPARATOR.compare(contrib1.getVersion(), contrib2.getVersion());
|
||||
}
|
||||
});
|
||||
|
||||
if (contribs.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return contribs.get(contribs.size() - 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -30,4 +30,9 @@ public class TargetPackageStub implements TargetPackage {
|
||||
public TargetPlatform get(String platform) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlatform(TargetPlatform platform) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user