Search bar cleanup

This commit is contained in:
Anuken
2020-12-26 11:39:58 -05:00
parent 8e4b35eb07
commit c02d603a7a
5 changed files with 32 additions and 30 deletions

View File

@@ -1,50 +1,55 @@
package mindustry.ui;
import arc.func.*;
import arc.graphics.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import mindustry.gen.*;
public class SearchBar{
public static <T> Table add(Table parent, Seq<T> list, Func<String, String> queryf,
Func<T, String> namef, Cons2<Table, T> itemc, Cons<Cell<Table>> barc){
Cons<String>[] rebuild = new Cons[]{null};
Func<T, String> namef, Cons2<Table, T> itemc, boolean show){
Table[] pane = {null};
barc.get(parent.table(search -> {
rebuild[0] = str -> {
String query = queryf.get(str);
Cons<String> rebuild = str -> {
String query = queryf.get(str);
pane[0].clear();
list.each(item -> {
if(query.isEmpty() || matches(query, namef.get(item))){
itemc.get(pane[0], item);
}
});
};
pane[0].clear();
boolean any = false;
for(T item : list){
if(query.isEmpty() || matches(query, namef.get(item))){
any = true;
itemc.get(pane[0], item);
}
}
search.image(Icon.zoom).padRight(8f);
search.field("", rebuild[0]).growX();
}).fillX().padBottom(4));
if(!any){
pane[0].add("@none.found").color(Color.lightGray).pad(4);
}
};
if(show){
parent.table(search -> {
search.image(Icon.zoom).padRight(8f);
search.field("", rebuild).growX();
}).fillX().padBottom(4);
}
parent.row();
parent.pane(table -> {
pane[0] = table;
rebuild[0].get("");
rebuild.get("");
});
return pane[0];
}
public static <T> Table add(Table parent, Seq<T> list, Func<String, String> queryf, Func<T, String> namef, Cons2<Table, T> itemc){
return add(parent, list, queryf, namef, itemc, c -> {});
return add(parent, list, queryf, namef, itemc, true);
}
public static <T> Table add(Table parent, Seq<T> list, Func<T, String> namef, Cons2<Table, T> itemc, Cons<Cell<Table>> barc){
return add(parent, list, String::toLowerCase, namef, itemc, barc);
}
public static <T> Table add(Table parent, Seq<T> list, Func<T, String> namef, Cons2<Table, T> itemc){
return add(parent, list, String::toLowerCase, namef, itemc);
public static <T> Table add(Table parent, Seq<T> list, Func<T, String> namef, Cons2<Table, T> itemc, boolean show){
return add(parent, list, String::toLowerCase, namef, itemc, show);
}
/** Match a list item with the search query, case insensitive */