|
35 | 35 | import java.awt.Frame;
|
36 | 36 | import java.awt.event.ActionEvent;
|
37 | 37 | import java.awt.event.ActionListener;
|
| 38 | +import java.util.ArrayList; |
38 | 39 | import java.util.Collection;
|
39 | 40 | import java.util.Collections;
|
40 | 41 | import java.util.LinkedList;
|
@@ -130,48 +131,46 @@ public void actionPerformed(ActionEvent event) {
|
130 | 131 | }
|
131 | 132 | };
|
132 | 133 |
|
| 134 | + private Collection<String> oldCategories = new ArrayList<>(); |
| 135 | + private Collection<String> oldTypes = new ArrayList<>(); |
| 136 | + |
133 | 137 | public void updateUI() {
|
134 |
| - DropdownItem<ContributedLibraryReleases> previouslySelectedCategory = (DropdownItem<ContributedLibraryReleases>) categoryChooser.getSelectedItem(); |
135 |
| - DropdownItem<ContributedLibraryReleases> previouslySelectedType = (DropdownItem<ContributedLibraryReleases>) typeChooser.getSelectedItem(); |
| 138 | + // Check if categories or types have changed |
| 139 | + Collection<String> categories = BaseNoGui.librariesIndexer.getIndex().getCategories(); |
| 140 | + List<String> types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes()); |
| 141 | + Collections.sort(types, new LibraryTypeComparator()); |
136 | 142 |
|
137 |
| - categoryChooser.removeActionListener(categoryChooserActionListener); |
138 |
| - typeChooser.removeActionListener(typeChooserActionListener); |
| 143 | + if (categories.equals(oldCategories) && types.equals(oldTypes)) { |
| 144 | + return; |
| 145 | + } |
| 146 | + oldCategories = categories; |
| 147 | + oldTypes = types; |
139 | 148 |
|
140 | 149 | // Load categories
|
141 | 150 | categoryFilter = x -> true;
|
| 151 | + categoryChooser.removeActionListener(categoryChooserActionListener); |
142 | 152 | categoryChooser.removeAllItems();
|
143 | 153 | categoryChooser.addItem(new DropdownAllLibraries());
|
144 |
| - Collection<String> categories = BaseNoGui.librariesIndexer.getIndex().getCategories(); |
145 | 154 | for (String category : categories) {
|
146 | 155 | categoryChooser.addItem(new DropdownLibraryOfCategoryItem(category));
|
147 | 156 | }
|
148 |
| - |
149 | 157 | categoryChooser.setEnabled(categoryChooser.getItemCount() > 1);
|
150 |
| - |
151 | 158 | categoryChooser.addActionListener(categoryChooserActionListener);
|
152 |
| - if (previouslySelectedCategory != null) { |
153 |
| - categoryChooser.setSelectedItem(previouslySelectedCategory); |
154 |
| - } else { |
155 |
| - categoryChooser.setSelectedIndex(0); |
156 |
| - } |
| 159 | + categoryChooser.setSelectedIndex(0); |
157 | 160 |
|
| 161 | + // Load types |
158 | 162 | typeFilter = x -> true;
|
| 163 | + typeChooser.removeActionListener(typeChooserActionListener); |
159 | 164 | typeChooser.removeAllItems();
|
160 | 165 | typeChooser.addItem(new DropdownAllLibraries());
|
161 | 166 | typeChooser.addItem(new DropdownUpdatableLibrariesItem());
|
162 | 167 | typeChooser.addItem(new DropdownInstalledLibraryItem());
|
163 |
| - List<String> types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes()); |
164 |
| - Collections.sort(types, new LibraryTypeComparator()); |
165 | 168 | for (String type : types) {
|
166 | 169 | typeChooser.addItem(new DropdownLibraryOfTypeItem(type));
|
167 | 170 | }
|
168 | 171 | typeChooser.setEnabled(typeChooser.getItemCount() > 1);
|
169 | 172 | typeChooser.addActionListener(typeChooserActionListener);
|
170 |
| - if (previouslySelectedType != null) { |
171 |
| - typeChooser.setSelectedItem(previouslySelectedType); |
172 |
| - } else { |
173 |
| - typeChooser.setSelectedIndex(0); |
174 |
| - } |
| 173 | + typeChooser.setSelectedIndex(0); |
175 | 174 |
|
176 | 175 | filterField.setEnabled(contribModel.getRowCount() > 0);
|
177 | 176 | }
|
|
0 commit comments