Also add checkmark to selected group
This commit is contained in:
parent
693f2625ba
commit
2e8accf097
@ -206,7 +206,16 @@ public class SearchableAndCategorizableComboBox<E, T> extends JComboBox<T> {
|
||||
|
||||
// Fill the menu with the groups
|
||||
for (E group : itemGroupMap.keySet()) {
|
||||
JMenu groupList = new JMenu(group.toString());
|
||||
JMenu groupMenu = new JMenu(group.toString()) {
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
// If the group contains the selected item, draw a checkbox
|
||||
if (containsSelectedItem(group, (T) SearchableAndCategorizableComboBox.this.getSelectedItem())) {
|
||||
g.drawString("\u2713", 5, getHeight() - 5); // Unicode for checked checkbox
|
||||
}
|
||||
}
|
||||
};
|
||||
T[] itemsForGroup = itemGroupMap.get(group);
|
||||
|
||||
if (itemsForGroup != null) {
|
||||
@ -224,11 +233,11 @@ public class SearchableAndCategorizableComboBox<E, T> extends JComboBox<T> {
|
||||
itemMenu.addActionListener(e -> {
|
||||
setSelectedItem(item);
|
||||
});
|
||||
groupList.add(itemMenu);
|
||||
groupMenu.add(itemMenu);
|
||||
}
|
||||
}
|
||||
|
||||
menu.add(groupList);
|
||||
menu.add(groupMenu);
|
||||
}
|
||||
|
||||
// Extra widgets
|
||||
@ -349,6 +358,18 @@ public class SearchableAndCategorizableComboBox<E, T> extends JComboBox<T> {
|
||||
searchPopup.setVisible(false);
|
||||
}
|
||||
|
||||
private boolean containsSelectedItem(E group, T targetItem) {
|
||||
T[] itemsInGroup = itemGroupMap.get(group);
|
||||
if (itemsInGroup != null) {
|
||||
for (T item : itemsInGroup) {
|
||||
if (item == targetItem) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void filter(String text) {
|
||||
filteredList.removeAll();
|
||||
String searchText = text.toLowerCase();
|
||||
|
Loading…
x
Reference in New Issue
Block a user