diff --git a/app/src/cc/arduino/contributions/libraries/ui/DropdownBuiltInLibrariesItem.java b/app/src/cc/arduino/contributions/libraries/ui/DropdownBuiltInLibrariesItem.java index 0c10e62d6..4d09d436c 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/DropdownBuiltInLibrariesItem.java +++ b/app/src/cc/arduino/contributions/libraries/ui/DropdownBuiltInLibrariesItem.java @@ -17,4 +17,10 @@ public class DropdownBuiltInLibrariesItem implements DropdownItem getFilterPredicate() { return new BuiltInPredicate(); } + + @Override + public boolean equals(Object obj) { + return obj instanceof DropdownBuiltInLibrariesItem; + } + } diff --git a/app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java b/app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java index 5bf8c7fa7..93bd44699 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java +++ b/app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java @@ -24,4 +24,10 @@ public class DropdownInstalledLibraryItem implements DropdownItem getFilterPredicate() { return new InstalledLibraryPredicate(index); } + + @Override + public boolean equals(Object obj) { + return obj instanceof DropdownInstalledLibraryItem; + } + } diff --git a/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfCategoryItem.java b/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfCategoryItem.java index 1435642a9..732919beb 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfCategoryItem.java +++ b/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfCategoryItem.java @@ -21,4 +21,10 @@ public class DropdownLibraryOfCategoryItem implements DropdownItem getFilterPredicate() { return new CategoryPredicate(category); } + + @Override + public boolean equals(Object obj) { + return obj instanceof DropdownLibraryOfCategoryItem && ((DropdownLibraryOfCategoryItem) obj).category.equals(category); + } + } diff --git a/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfTypeItem.java b/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfTypeItem.java index 07a650bee..38a48e464 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfTypeItem.java +++ b/app/src/cc/arduino/contributions/libraries/ui/DropdownLibraryOfTypeItem.java @@ -22,4 +22,10 @@ public class DropdownLibraryOfTypeItem implements DropdownItem getFilterPredicate() { return new TypePredicate(type); } + + @Override + public boolean equals(Object obj) { + return obj instanceof DropdownLibraryOfTypeItem && ((DropdownLibraryOfTypeItem) obj).type.equals(type); + } + } diff --git a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java index 84ed30333..13b2eb335 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java +++ b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java @@ -30,6 +30,7 @@ package cc.arduino.contributions.libraries.ui; import cc.arduino.contributions.libraries.ContributedLibrary; import cc.arduino.contributions.libraries.LibrariesIndexer; +import cc.arduino.contributions.packages.DownloadableContribution; import cc.arduino.contributions.packages.ui.InstallerJDialogUncaughtExceptionHandler; import cc.arduino.contributions.ui.*; import cc.arduino.utils.Progress; @@ -124,6 +125,10 @@ public class LibraryManagerUI extends InstallerJDialog { public void setIndexer(LibrariesIndexer indexer) { this.indexer = indexer; + + DropdownItem previouslySelectedCategory = (DropdownItem) categoryChooser.getSelectedItem(); + DropdownItem previouslySelectedType = (DropdownItem) typeChooser.getSelectedItem(); + categoryChooser.removeActionListener(categoryChooserActionListener); typeChooser.removeActionListener(typeChooserActionListener); @@ -144,7 +149,11 @@ public class LibraryManagerUI extends InstallerJDialog { categoryChooser.setEnabled(categoryChooser.getItemCount() > 1); categoryChooser.addActionListener(categoryChooserActionListener); - categoryChooser.setSelectedIndex(0); + if (previouslySelectedCategory != null) { + categoryChooser.setSelectedItem(previouslySelectedCategory); + } else { + categoryChooser.setSelectedIndex(0); + } typeFilter = null; typeChooser.removeAllItems(); @@ -156,6 +165,11 @@ public class LibraryManagerUI extends InstallerJDialog { } typeChooser.setEnabled(typeChooser.getItemCount() > 1); typeChooser.addActionListener(typeChooserActionListener); + if (previouslySelectedType != null) { + typeChooser.setSelectedItem(previouslySelectedType); + } else { + typeChooser.setSelectedIndex(0); + } filterField.setEnabled(contribModel.getRowCount() > 0); diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java index 9201669f1..3c6a2ec9e 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java @@ -31,6 +31,8 @@ package cc.arduino.contributions.packages.ui; import cc.arduino.contributions.packages.ContributedPlatform; import cc.arduino.contributions.packages.ContributionInstaller; import cc.arduino.contributions.packages.ContributionsIndexer; +import cc.arduino.contributions.packages.DownloadableContribution; +import cc.arduino.contributions.ui.DropdownItem; import cc.arduino.contributions.ui.FilteredAbstractTableModel; import cc.arduino.contributions.ui.InstallerJDialog; import cc.arduino.contributions.ui.InstallerTableCell; @@ -88,6 +90,8 @@ public class ContributionManagerUI extends InstallerJDialog { } public void setIndexer(ContributionsIndexer indexer) { + DropdownItem previouslySelectedCategory = (DropdownItem) categoryChooser.getSelectedItem(); + categoryChooser.removeActionListener(categoryChooserActionListener); getContribModel().setIndex(indexer.getIndex()); @@ -105,6 +109,11 @@ public class ContributionManagerUI extends InstallerJDialog { for (String s : categories) { categoryChooser.addItem(new DropdownCoreOfCategoryItem(s)); } + if (previouslySelectedCategory != null) { + categoryChooser.setSelectedItem(previouslySelectedCategory); + } else { + categoryChooser.setSelectedIndex(0); + } // Create ConstributionInstaller tied with the provided index installer = new ContributionInstaller(indexer) { diff --git a/app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java b/app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java index 3914f8b3d..31e64899c 100644 --- a/app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java +++ b/app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java @@ -17,4 +17,9 @@ public class DropdownAllCoresItem implements DropdownItem { public Predicate getFilterPredicate() { return new NoopPredicate(); } + + @Override + public boolean equals(Object obj) { + return obj instanceof DropdownAllCoresItem; + } } diff --git a/app/src/cc/arduino/contributions/packages/ui/DropdownCoreOfCategoryItem.java b/app/src/cc/arduino/contributions/packages/ui/DropdownCoreOfCategoryItem.java index 320e0a7d4..70aa6d658 100644 --- a/app/src/cc/arduino/contributions/packages/ui/DropdownCoreOfCategoryItem.java +++ b/app/src/cc/arduino/contributions/packages/ui/DropdownCoreOfCategoryItem.java @@ -21,4 +21,10 @@ public class DropdownCoreOfCategoryItem implements DropdownItem getFilterPredicate() { return new CategoryPredicate(category); } + + @Override + public boolean equals(Object obj) { + return obj instanceof DropdownCoreOfCategoryItem && ((DropdownCoreOfCategoryItem) obj).category.equals(category); + } + } diff --git a/app/src/cc/arduino/contributions/ui/DropdownAllItem.java b/app/src/cc/arduino/contributions/ui/DropdownAllItem.java index b08a59da8..1ea749604 100644 --- a/app/src/cc/arduino/contributions/ui/DropdownAllItem.java +++ b/app/src/cc/arduino/contributions/ui/DropdownAllItem.java @@ -17,4 +17,10 @@ public class DropdownAllItem implements DropdownItem { public Predicate getFilterPredicate() { return new NoopPredicate(); } + + @Override + public boolean equals(Object obj) { + return obj instanceof DropdownAllItem; + } + }