1 package net.mograsim.logic.ui.serializing.snippets;
3 import java.util.function.BiFunction;
5 import com.google.gson.Gson;
6 import com.google.gson.JsonElement;
8 import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent;
10 public interface SnippetSupplier<P, S>
12 public Class<P> getParamClass();
14 public S create(SubmodelComponent component, P params);
16 public default S create(SubmodelComponent component, JsonElement params)
18 return create(component, new Gson().fromJson(params, getParamClass()));
21 public static <P, S> SnippetSupplier<P, S> create(Class<P> paramClass, BiFunction<SubmodelComponent, P, S> supplier)
23 return new SnippetSupplier<>()
26 public Class<P> getParamClass()
32 public S create(SubmodelComponent component, P params)
34 return supplier.apply(component, params);