Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/arduino/Arduino.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Maglie <c.maglie@arduino.cc>2020-06-29 17:58:25 +0300
committerCristian Maglie <c.maglie@arduino.cc>2020-07-23 17:02:59 +0300
commitd2e4d76afc432e077eb73d62af686fdf9088df52 (patch)
treed8a2948e2dfaf64ce3a289b45c3d51d142f3cd71
parent5adf408270851e3739dab1b316dea62faaddd3c3 (diff)
Cumulative patch for MSFT Store hot-fix release1.8.13-ms-store-1
The following commits have been added here: - 42865229c2fbad7447ea430b08c69e507a606d72: Library manager: update filters combo box only if there are changes - 326396789389b99f4728fe8e9f80ed2796760b19: Removed unused include and clueless whitespaces - b66ed5e5d738e0e83c2ced183914cef3bd5f72fc: LibraryManager: correctly apply "type" and "category" filters together - 1361bce6bc703602499c0bc7d4ac154063de4ade: Board manager: Update filters UI only if categories changes - a81772afc68fb1497b6374ad58d197ef84bcba4c: Boards Manager: update UI after an install/remove - 851b5b14b1dc48572649e9a291d34415f018447f: Lib manager GUI is updated after installing/upgrading library - 10bee204e62a1339c803285d8ac9463bc2278f6a: Lib manager: added getContribModel() as in Boards manager
-rw-r--r--app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java67
-rw-r--r--app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java9
-rw-r--r--app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java38
-rw-r--r--app/src/cc/arduino/contributions/ui/InstallerJDialog.java5
4 files changed, 69 insertions, 50 deletions
diff --git a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java
index 66ad0e44b..69ab10006 100644
--- a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java
+++ b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java
@@ -35,12 +35,12 @@ import java.awt.Dialog;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
-import java.util.function.Predicate;
import javax.swing.Box;
import javax.swing.JComboBox;
@@ -66,13 +66,16 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibraryRelease
private final JComboBox typeChooser;
private final LibraryInstaller installer;
- private Predicate<ContributedLibraryReleases> typeFilter;
@Override
protected FilteredAbstractTableModel createContribModel() {
return new LibrariesIndexTableModel();
}
+ private LibrariesIndexTableModel getContribModel() {
+ return (LibrariesIndexTableModel) contribModel;
+ }
+
@Override
protected TableCellRenderer createCellRenderer() {
return new ContributedLibraryTableCellRenderer();
@@ -115,63 +118,60 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibraryRelease
}
protected final ActionListener typeChooserActionListener = new ActionListener() {
-
@Override
public void actionPerformed(ActionEvent event) {
DropdownItem<ContributedLibraryReleases> selected = (DropdownItem<ContributedLibraryReleases>) typeChooser.getSelectedItem();
previousRowAtPoint = -1;
- if (selected != null && typeFilter != selected.getFilterPredicate()) {
- typeFilter = selected.getFilterPredicate();
+ if (selected != null && extraFilter != selected.getFilterPredicate()) {
+ extraFilter = selected.getFilterPredicate();
if (contribTable.getCellEditor() != null) {
contribTable.getCellEditor().stopCellEditing();
}
- updateIndexFilter(filters, categoryFilter.and(typeFilter));
+ updateIndexFilter(filters, categoryFilter.and(extraFilter));
}
}
};
+ private Collection<String> oldCategories = new ArrayList<>();
+ private Collection<String> oldTypes = new ArrayList<>();
+
public void updateUI() {
- DropdownItem<ContributedLibraryReleases> previouslySelectedCategory = (DropdownItem<ContributedLibraryReleases>) categoryChooser.getSelectedItem();
- DropdownItem<ContributedLibraryReleases> previouslySelectedType = (DropdownItem<ContributedLibraryReleases>) typeChooser.getSelectedItem();
+ // Check if categories or types have changed
+ Collection<String> categories = BaseNoGui.librariesIndexer.getIndex().getCategories();
+ List<String> types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes());
+ Collections.sort(types, new LibraryTypeComparator());
- categoryChooser.removeActionListener(categoryChooserActionListener);
- typeChooser.removeActionListener(typeChooserActionListener);
+ if (categories.equals(oldCategories) && types.equals(oldTypes)) {
+ return;
+ }
+ oldCategories = categories;
+ oldTypes = types;
// Load categories
categoryFilter = x -> true;
+ categoryChooser.removeActionListener(categoryChooserActionListener);
categoryChooser.removeAllItems();
categoryChooser.addItem(new DropdownAllLibraries());
- Collection<String> categories = BaseNoGui.librariesIndexer.getIndex().getCategories();
for (String category : categories) {
categoryChooser.addItem(new DropdownLibraryOfCategoryItem(category));
}
-
categoryChooser.setEnabled(categoryChooser.getItemCount() > 1);
-
categoryChooser.addActionListener(categoryChooserActionListener);
- if (previouslySelectedCategory != null) {
- categoryChooser.setSelectedItem(previouslySelectedCategory);
- } else {
- categoryChooser.setSelectedIndex(0);
- }
+ categoryChooser.setSelectedIndex(0);
- typeFilter = x -> true;
+ // Load types
+ extraFilter = x -> true;
+ typeChooser.removeActionListener(typeChooserActionListener);
typeChooser.removeAllItems();
typeChooser.addItem(new DropdownAllLibraries());
typeChooser.addItem(new DropdownUpdatableLibrariesItem());
typeChooser.addItem(new DropdownInstalledLibraryItem());
- List<String> types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes());
- Collections.sort(types, new LibraryTypeComparator());
for (String type : types) {
typeChooser.addItem(new DropdownLibraryOfTypeItem(type));
}
typeChooser.setEnabled(typeChooser.getItemCount() > 1);
typeChooser.addActionListener(typeChooserActionListener);
- if (previouslySelectedType != null) {
- typeChooser.setSelectedItem(previouslySelectedType);
- } else {
- typeChooser.setSelectedIndex(0);
- }
+ typeChooser.setSelectedIndex(0);
filterField.setEnabled(contribModel.getRowCount() > 0);
}
@@ -201,8 +201,11 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibraryRelease
try {
setProgressVisible(true, "");
installer.updateIndex(this::setProgress);
- ((LibrariesIndexTableModel) contribModel).update();
onIndexesUpdated();
+ if (contribTable.getCellEditor() != null) {
+ contribTable.getCellEditor().stopCellEditing();
+ }
+ getContribModel().update();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
@@ -238,12 +241,11 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibraryRelease
} else {
installer.install(lib, this::setProgress);
}
- // TODO: Do a better job in refreshing only the needed element
+ onIndexesUpdated();
if (contribTable.getCellEditor() != null) {
contribTable.getCellEditor().stopCellEditing();
}
- ((LibrariesIndexTableModel) contribModel).update();
- onIndexesUpdated();
+ getContribModel().update();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
@@ -270,12 +272,11 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibraryRelease
try {
setProgressVisible(true, tr("Removing..."));
installer.remove(lib, this::setProgress);
- // TODO: Do a better job in refreshing only the needed element
+ onIndexesUpdated();
if (contribTable.getCellEditor() != null) {
contribTable.getCellEditor().stopCellEditing();
}
- ((LibrariesIndexTableModel) contribModel).update();
- onIndexesUpdated();
+ getContribModel().update();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java
index f143e3317..7472c6247 100644
--- a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java
+++ b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java
@@ -47,9 +47,17 @@ public class ContributionIndexTableModel
private final List<ContributedPlatformReleases> contributions = new ArrayList<>();
private final String[] columnNames = { "Description" };
private final Class<?>[] columnTypes = { ContributedPlatform.class };
+ private Predicate<ContributedPlatform> filter;
+ private String[] filters;
public void updateIndexFilter(String[] filters,
Predicate<ContributedPlatform> filter) {
+ this.filter = filter;
+ this.filters = filters;
+ updateContributions();
+ }
+
+ private void updateContributions() {
contributions.clear();
for (ContributedPackage pack : BaseNoGui.indexer.getPackages()) {
for (ContributedPlatform platform : pack.getPlatforms()) {
@@ -146,6 +154,7 @@ public class ContributionIndexTableModel
}
public void update() {
+ updateContributions();
fireTableDataChanged();
}
diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java
index 6f9c903c3..0c949fe1c 100644
--- a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java
+++ b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java
@@ -29,7 +29,6 @@
package cc.arduino.contributions.packages.ui;
-import cc.arduino.contributions.DownloadableContribution;
import cc.arduino.contributions.packages.ContributedPlatform;
import cc.arduino.contributions.packages.ContributionInstaller;
import cc.arduino.contributions.ui.*;
@@ -41,6 +40,7 @@ import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
@@ -92,30 +92,28 @@ public class ContributionManagerUI extends InstallerJDialog {
this.installer = installer;
}
+ private Collection<String> oldCategories = new ArrayList<>();
+
public void updateUI() {
- DropdownItem<DownloadableContribution> previouslySelectedCategory = (DropdownItem<DownloadableContribution>) categoryChooser
- .getSelectedItem();
+ // Check if categories have changed
+ Collection<String> categories = BaseNoGui.indexer.getCategories();
+ if (categories.equals(oldCategories)) {
+ return;
+ }
+ oldCategories = categories;
categoryChooser.removeActionListener(categoryChooserActionListener);
-
- filterField.setEnabled(getContribModel().getRowCount() > 0);
-
- categoryChooser.addActionListener(categoryChooserActionListener);
-
// Enable categories combo only if there are two or more choices
+ filterField.setEnabled(getContribModel().getRowCount() > 0);
categoryFilter = x -> true;
categoryChooser.removeAllItems();
categoryChooser.addItem(new DropdownAllCoresItem());
categoryChooser.addItem(new DropdownUpdatableCoresItem());
- Collection<String> categories = BaseNoGui.indexer.getCategories();
for (String s : categories) {
categoryChooser.addItem(new DropdownCoreOfCategoryItem(s));
}
- if (previouslySelectedCategory != null) {
- categoryChooser.setSelectedItem(previouslySelectedCategory);
- } else {
- categoryChooser.setSelectedIndex(0);
- }
+ categoryChooser.addActionListener(categoryChooserActionListener);
+ categoryChooser.setSelectedIndex(0);
}
public void setProgress(Progress progress) {
@@ -146,6 +144,10 @@ public class ContributionManagerUI extends InstallerJDialog {
.updateIndex(this::setProgress);
installer.deleteUnknownFiles(downloadedPackageIndexFiles);
onIndexesUpdated();
+ if (contribTable.getCellEditor() != null) {
+ contribTable.getCellEditor().stopCellEditing();
+ }
+ getContribModel().update();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
@@ -171,6 +173,10 @@ public class ContributionManagerUI extends InstallerJDialog {
}
errors.addAll(installer.install(platformToInstall, this::setProgress));
onIndexesUpdated();
+ if (contribTable.getCellEditor() != null) {
+ contribTable.getCellEditor().stopCellEditing();
+ }
+ getContribModel().update();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
@@ -209,6 +215,10 @@ public class ContributionManagerUI extends InstallerJDialog {
setProgressVisible(true, tr("Removing..."));
installer.remove(platform);
onIndexesUpdated();
+ if (contribTable.getCellEditor() != null) {
+ contribTable.getCellEditor().stopCellEditing();
+ }
+ getContribModel().update();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
diff --git a/app/src/cc/arduino/contributions/ui/InstallerJDialog.java b/app/src/cc/arduino/contributions/ui/InstallerJDialog.java
index 2888cd688..8abff8f34 100644
--- a/app/src/cc/arduino/contributions/ui/InstallerJDialog.java
+++ b/app/src/cc/arduino/contributions/ui/InstallerJDialog.java
@@ -71,7 +71,6 @@ import javax.swing.text.DefaultEditorKit;
import cc.arduino.contributions.ui.listeners.AbstractKeyListener;
import processing.app.Base;
-import processing.app.Theme;
public abstract class InstallerJDialog<T> extends JDialog {
@@ -82,6 +81,7 @@ public abstract class InstallerJDialog<T> extends JDialog {
protected final FilterJTextField filterField;
protected final JPanel filtersContainer;
// Currently selected category and filters
+ protected Predicate<T> extraFilter = x -> true;
protected Predicate<T> categoryFilter;
protected String[] filters;
protected final String noConnectionErrorMessage;
@@ -329,7 +329,6 @@ public abstract class InstallerJDialog<T> extends JDialog {
}
protected final ActionListener categoryChooserActionListener = new ActionListener() {
-
@Override
public void actionPerformed(ActionEvent event) {
DropdownItem<T> selected = (DropdownItem<T>) categoryChooser.getSelectedItem();
@@ -339,7 +338,7 @@ public abstract class InstallerJDialog<T> extends JDialog {
if (contribTable.getCellEditor() != null) {
contribTable.getCellEditor().stopCellEditing();
}
- updateIndexFilter(filters, categoryFilter);
+ updateIndexFilter(filters, categoryFilter.and(extraFilter));
}
}
};