|
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