Skip to content

Commit b913b4a

Browse files
committed
Improved Multi Select Widget
* Fixed select all button * Better creation with chaining methods * Ben? Yes. No. Yes. Ben? No.
1 parent 22a55de commit b913b4a

File tree

4 files changed

+117
-107
lines changed

4 files changed

+117
-107
lines changed

src/main/java/me/pindour/catpuccin/gui/screens/settings/CatpuccinEntityTypeListSettingScreen.java

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,25 +50,21 @@ public void initWidgets() {
5050
multiSelectView = add(theme.view()).expandX().widget();
5151
multiSelectView.maxHeight -= 100;
5252

53-
List<WMultiSelect.ItemInfo<EntityType<?>>> animals = new ArrayList<>();
54-
List<WMultiSelect.ItemInfo<EntityType<?>>> waterAnimals = new ArrayList<>();
55-
List<WMultiSelect.ItemInfo<EntityType<?>>> monsters = new ArrayList<>();
56-
List<WMultiSelect.ItemInfo<EntityType<?>>> ambient = new ArrayList<>();
57-
List<WMultiSelect.ItemInfo<EntityType<?>>> misc = new ArrayList<>();
53+
List<EntityType<?>> animals = new ArrayList<>();
54+
List<EntityType<?>> waterAnimals = new ArrayList<>();
55+
List<EntityType<?>> monsters = new ArrayList<>();
56+
List<EntityType<?>> ambient = new ArrayList<>();
57+
List<EntityType<?>> misc = new ArrayList<>();
5858

5959
for (EntityType<?> entityType : Registries.ENTITY_TYPE) {
6060
if (setting.filter != null && !setting.filter.test(entityType)) continue;
6161

62-
String name = Names.get(entityType);
63-
boolean isSelected = setting.get().contains(entityType);
64-
WMultiSelect.ItemInfo<EntityType<?>> info = new WMultiSelect.ItemInfo<>(entityType, name, isSelected);
65-
6662
switch (entityType.getSpawnGroup()) {
67-
case CREATURE -> animals.add(info);
68-
case WATER_AMBIENT, WATER_CREATURE, UNDERGROUND_WATER_CREATURE, AXOLOTLS -> waterAnimals.add(info);
69-
case MONSTER -> monsters.add(info);
70-
case AMBIENT -> ambient.add(info);
71-
case MISC -> misc.add(info);
63+
case CREATURE -> animals.add(entityType);
64+
case WATER_AMBIENT, WATER_CREATURE, UNDERGROUND_WATER_CREATURE, AXOLOTLS -> waterAnimals.add(entityType);
65+
case MONSTER -> monsters.add(entityType);
66+
case AMBIENT -> ambient.add(entityType);
67+
case MISC -> misc.add(entityType);
7268
}
7369
}
7470

@@ -87,15 +83,18 @@ public void initWidgets() {
8783
};
8884
}
8985

90-
private void createMultiSelectWidget(String title, List<WMultiSelect.ItemInfo<EntityType<?>>> items) {
86+
private void createMultiSelectWidget(String title, List<EntityType<?>> items) {
9187
if (items.isEmpty()) return;
9288

93-
WMultiSelect<EntityType<?>> widget = multiSelectView.add(theme.multiSelect(title, items)).padVertical(6).expandX().widget();
94-
widget.onSelection = (entity, selected) -> {
95-
if (selected) setting.get().add(entity);
96-
else setting.get().remove(entity);
97-
};
89+
WMultiSelect<EntityType<?>> multiSelect = theme.multiSelect(title, items)
90+
.label(Names::get)
91+
.isSelected(setting.get()::contains)
92+
.onSelectionChange((entity, selected) -> {
93+
if (selected) setting.get().add(entity);
94+
else setting.get().remove(entity);
95+
});
9896

99-
widgets.add(widget);
97+
multiSelectView.add(multiSelect).padVertical(6).expandX().widget();
98+
widgets.add(multiSelect);
10099
}
101100
}

src/main/java/me/pindour/catpuccin/gui/themes/catpuccin/CatpuccinGuiTheme.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -417,12 +417,8 @@ public WColorPicker colorPicker(Color color, GuiTexture overlayTexture) {
417417
return w(new WCatpuccinColorPicker(color, overlayTexture));
418418
}
419419

420-
public <T> WCatpuccinMultiSelect<T> multiSelect(String title, List<WMultiSelect.ItemInfo<T>> items) {
421-
return multiSelect(title, items, null);
422-
}
423-
424-
public <T> WCatpuccinMultiSelect<T> multiSelect(String title, List<WMultiSelect.ItemInfo<T>> items, WTextBox searchBox) {
425-
return w(new WCatpuccinMultiSelect<>(title, items, searchBox));
420+
public <T> WMultiSelect<T> multiSelect(String title, List<T> items) {
421+
return w(new WCatpuccinMultiSelect<>(title, items));
426422
}
427423

428424
// Settings widgets

src/main/java/me/pindour/catpuccin/gui/themes/catpuccin/widgets/input/WCatpuccinMultiSelect.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55
import me.pindour.catpuccin.gui.themes.catpuccin.CatpuccinWidget;
66
import me.pindour.catpuccin.gui.widgets.input.WMultiSelect;
77
import meteordevelopment.meteorclient.gui.renderer.GuiRenderer;
8-
import meteordevelopment.meteorclient.gui.widgets.input.WTextBox;
98
import meteordevelopment.meteorclient.utils.render.color.Color;
109

1110
import java.util.List;
1211

1312
public class WCatpuccinMultiSelect<T> extends WMultiSelect<T> implements CatpuccinWidget {
14-
public WCatpuccinMultiSelect(String title, List<ItemInfo<T>> items, WTextBox searchBox) {
15-
super(title, items, searchBox);
13+
public WCatpuccinMultiSelect(String title, List<T> items) {
14+
super(title, items);
1615
}
1716

1817
@Override
@@ -21,8 +20,8 @@ protected WHeader createHeader() {
2120
}
2221

2322
@Override
24-
protected WItem createItem(ItemInfo<T> itemInfo) {
25-
return new WCatpuccinItem(itemInfo);
23+
protected WItem createItem(T item) {
24+
return new WCatpuccinItem(item);
2625
}
2726

2827
protected class WCatpuccinHeader extends WHeader {
@@ -64,8 +63,8 @@ protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, doub
6463

6564
protected class WCatpuccinItem extends WItem {
6665

67-
public WCatpuccinItem(ItemInfo<T> itemInfo) {
68-
super(itemInfo);
66+
public WCatpuccinItem(T item) {
67+
super(item);
6968
}
7069

7170
@Override

0 commit comments

Comments
 (0)