X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fserializing%2Fsnippets%2FSnippetSupplier.java;fp=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fserializing%2Fsnippets%2FSnippetSupplier.java;h=3adb9e8d079fa68475b433e2d0a69982b8b4af97;hb=f594aef8abc8f444911333f6c32ef0fca18e18ba;hp=0000000000000000000000000000000000000000;hpb=dbda073d92ae9dd8e701d904c4c71dd0edd1fce7;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/SnippetSupplier.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/SnippetSupplier.java new file mode 100644 index 00000000..3adb9e8d --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/SnippetSupplier.java @@ -0,0 +1,38 @@ +package net.mograsim.logic.ui.serializing.snippets; + +import java.util.function.BiFunction; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; + +import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; + +public interface SnippetSupplier +{ + public Class

getParamClass(); + + public S create(SubmodelComponent component, P params); + + public default S create(SubmodelComponent component, JsonElement params) + { + return create(component, new Gson().fromJson(params, getParamClass())); + } + + public static SnippetSupplier create(Class

paramClass, BiFunction supplier) + { + return new SnippetSupplier<>() + { + @Override + public Class

getParamClass() + { + return paramClass; + } + + @Override + public S create(SubmodelComponent component, P params) + { + return supplier.apply(component, params); + } + }; + } +} \ No newline at end of file