1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-12-01 12:24:14 +01:00

Library and Boards Manager: preserving filter selections

This commit is contained in:
Federico Fissore 2015-04-01 17:31:02 +02:00
parent 7a97be43a5
commit f79a6c5d8b
9 changed files with 65 additions and 1 deletions

View File

@ -17,4 +17,10 @@ public class DropdownBuiltInLibrariesItem implements DropdownItem<DownloadableCo
public Predicate<DownloadableContribution> getFilterPredicate() { public Predicate<DownloadableContribution> getFilterPredicate() {
return new BuiltInPredicate(); return new BuiltInPredicate();
} }
@Override
public boolean equals(Object obj) {
return obj instanceof DropdownBuiltInLibrariesItem;
}
} }

View File

@ -24,4 +24,10 @@ public class DropdownInstalledLibraryItem implements DropdownItem<ContributedLib
public Predicate<ContributedLibrary> getFilterPredicate() { public Predicate<ContributedLibrary> getFilterPredicate() {
return new InstalledLibraryPredicate(index); return new InstalledLibraryPredicate(index);
} }
@Override
public boolean equals(Object obj) {
return obj instanceof DropdownInstalledLibraryItem;
}
} }

View File

@ -21,4 +21,10 @@ public class DropdownLibraryOfCategoryItem implements DropdownItem<ContributedLi
public Predicate<ContributedLibrary> getFilterPredicate() { public Predicate<ContributedLibrary> getFilterPredicate() {
return new CategoryPredicate(category); return new CategoryPredicate(category);
} }
@Override
public boolean equals(Object obj) {
return obj instanceof DropdownLibraryOfCategoryItem && ((DropdownLibraryOfCategoryItem) obj).category.equals(category);
}
} }

View File

@ -22,4 +22,10 @@ public class DropdownLibraryOfTypeItem implements DropdownItem<ContributedLibrar
public Predicate<ContributedLibrary> getFilterPredicate() { public Predicate<ContributedLibrary> getFilterPredicate() {
return new TypePredicate(type); return new TypePredicate(type);
} }
@Override
public boolean equals(Object obj) {
return obj instanceof DropdownLibraryOfTypeItem && ((DropdownLibraryOfTypeItem) obj).type.equals(type);
}
} }

View File

@ -30,6 +30,7 @@ package cc.arduino.contributions.libraries.ui;
import cc.arduino.contributions.libraries.ContributedLibrary; import cc.arduino.contributions.libraries.ContributedLibrary;
import cc.arduino.contributions.libraries.LibrariesIndexer; import cc.arduino.contributions.libraries.LibrariesIndexer;
import cc.arduino.contributions.packages.DownloadableContribution;
import cc.arduino.contributions.packages.ui.InstallerJDialogUncaughtExceptionHandler; import cc.arduino.contributions.packages.ui.InstallerJDialogUncaughtExceptionHandler;
import cc.arduino.contributions.ui.*; import cc.arduino.contributions.ui.*;
import cc.arduino.utils.Progress; import cc.arduino.utils.Progress;
@ -124,6 +125,10 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibrary> {
public void setIndexer(LibrariesIndexer indexer) { public void setIndexer(LibrariesIndexer indexer) {
this.indexer = indexer; this.indexer = indexer;
DropdownItem<DownloadableContribution> previouslySelectedCategory = (DropdownItem<DownloadableContribution>) categoryChooser.getSelectedItem();
DropdownItem<DownloadableContribution> previouslySelectedType = (DropdownItem<DownloadableContribution>) typeChooser.getSelectedItem();
categoryChooser.removeActionListener(categoryChooserActionListener); categoryChooser.removeActionListener(categoryChooserActionListener);
typeChooser.removeActionListener(typeChooserActionListener); typeChooser.removeActionListener(typeChooserActionListener);
@ -144,7 +149,11 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibrary> {
categoryChooser.setEnabled(categoryChooser.getItemCount() > 1); categoryChooser.setEnabled(categoryChooser.getItemCount() > 1);
categoryChooser.addActionListener(categoryChooserActionListener); categoryChooser.addActionListener(categoryChooserActionListener);
if (previouslySelectedCategory != null) {
categoryChooser.setSelectedItem(previouslySelectedCategory);
} else {
categoryChooser.setSelectedIndex(0); categoryChooser.setSelectedIndex(0);
}
typeFilter = null; typeFilter = null;
typeChooser.removeAllItems(); typeChooser.removeAllItems();
@ -156,6 +165,11 @@ public class LibraryManagerUI extends InstallerJDialog<ContributedLibrary> {
} }
typeChooser.setEnabled(typeChooser.getItemCount() > 1); typeChooser.setEnabled(typeChooser.getItemCount() > 1);
typeChooser.addActionListener(typeChooserActionListener); typeChooser.addActionListener(typeChooserActionListener);
if (previouslySelectedType != null) {
typeChooser.setSelectedItem(previouslySelectedType);
} else {
typeChooser.setSelectedIndex(0);
}
filterField.setEnabled(contribModel.getRowCount() > 0); filterField.setEnabled(contribModel.getRowCount() > 0);

View File

@ -31,6 +31,8 @@ package cc.arduino.contributions.packages.ui;
import cc.arduino.contributions.packages.ContributedPlatform; import cc.arduino.contributions.packages.ContributedPlatform;
import cc.arduino.contributions.packages.ContributionInstaller; import cc.arduino.contributions.packages.ContributionInstaller;
import cc.arduino.contributions.packages.ContributionsIndexer; 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.FilteredAbstractTableModel;
import cc.arduino.contributions.ui.InstallerJDialog; import cc.arduino.contributions.ui.InstallerJDialog;
import cc.arduino.contributions.ui.InstallerTableCell; import cc.arduino.contributions.ui.InstallerTableCell;
@ -88,6 +90,8 @@ public class ContributionManagerUI extends InstallerJDialog {
} }
public void setIndexer(ContributionsIndexer indexer) { public void setIndexer(ContributionsIndexer indexer) {
DropdownItem<DownloadableContribution> previouslySelectedCategory = (DropdownItem<DownloadableContribution>) categoryChooser.getSelectedItem();
categoryChooser.removeActionListener(categoryChooserActionListener); categoryChooser.removeActionListener(categoryChooserActionListener);
getContribModel().setIndex(indexer.getIndex()); getContribModel().setIndex(indexer.getIndex());
@ -105,6 +109,11 @@ public class ContributionManagerUI extends InstallerJDialog {
for (String s : categories) { for (String s : categories) {
categoryChooser.addItem(new DropdownCoreOfCategoryItem(s)); categoryChooser.addItem(new DropdownCoreOfCategoryItem(s));
} }
if (previouslySelectedCategory != null) {
categoryChooser.setSelectedItem(previouslySelectedCategory);
} else {
categoryChooser.setSelectedIndex(0);
}
// Create ConstributionInstaller tied with the provided index // Create ConstributionInstaller tied with the provided index
installer = new ContributionInstaller(indexer) { installer = new ContributionInstaller(indexer) {

View File

@ -17,4 +17,9 @@ public class DropdownAllCoresItem implements DropdownItem<ContributedPlatform> {
public Predicate<ContributedPlatform> getFilterPredicate() { public Predicate<ContributedPlatform> getFilterPredicate() {
return new NoopPredicate<ContributedPlatform>(); return new NoopPredicate<ContributedPlatform>();
} }
@Override
public boolean equals(Object obj) {
return obj instanceof DropdownAllCoresItem;
}
} }

View File

@ -21,4 +21,10 @@ public class DropdownCoreOfCategoryItem implements DropdownItem<ContributedPlatf
public Predicate<ContributedPlatform> getFilterPredicate() { public Predicate<ContributedPlatform> getFilterPredicate() {
return new CategoryPredicate(category); return new CategoryPredicate(category);
} }
@Override
public boolean equals(Object obj) {
return obj instanceof DropdownCoreOfCategoryItem && ((DropdownCoreOfCategoryItem) obj).category.equals(category);
}
} }

View File

@ -17,4 +17,10 @@ public class DropdownAllItem implements DropdownItem<DownloadableContribution> {
public Predicate<DownloadableContribution> getFilterPredicate() { public Predicate<DownloadableContribution> getFilterPredicate() {
return new NoopPredicate<DownloadableContribution>(); return new NoopPredicate<DownloadableContribution>();
} }
@Override
public boolean equals(Object obj) {
return obj instanceof DropdownAllItem;
}
} }