X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fserializing%2FDeserializedSubmodelComponent.java;h=f765afba44fd4b152574cdcacc3b0d94e5b9338e;hb=a25f554756e1bc9a1f842293aefe60a220d8b950;hp=adf24338554ccd37cdce17ec4b0945a94c6699ec;hpb=8b3e82a368d51751f2660e88a1b9fea9dfeb7e02;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java index adf24338..f765afba 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java @@ -1,47 +1,55 @@ package net.mograsim.logic.model.serializing; -import java.util.Map; +import com.google.gson.JsonElement; -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; import net.mograsim.logic.model.model.ViewModelModifiable; import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; import net.mograsim.logic.model.model.wires.MovablePin; import net.mograsim.logic.model.model.wires.Pin; -import net.mograsim.logic.model.serializing.snippets.Renderer; +import net.mograsim.logic.model.snippets.HighLevelStateHandler; +import net.mograsim.logic.model.snippets.Renderer; public class DeserializedSubmodelComponent extends SubmodelComponent { - public Renderer outlineRenderer; - public Renderer symbolRenderer; + /** + * If a DeserializedSubmodelComponent is part of another SubmodelComponent, when it it serialized, it should not return its internal + * structure, but rather the component ID used to create it. + * + * @see SubmodelComponentSerializer#deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement) + * SubmodelComponentSerializer.deserialize(...) + * @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...) + */ + public final String idForSerializingOverride; + /** + * See {@link #idForSerializingOverride} + */ + public final JsonElement paramsForSerializingOverride; - public DeserializedSubmodelComponent(ViewModelModifiable model, String name) + public DeserializedSubmodelComponent(ViewModelModifiable model, String name, String idForSerializingOverride, + JsonElement paramsForSerializingOverride) { super(model, name); + this.idForSerializingOverride = idForSerializingOverride; + this.paramsForSerializingOverride = paramsForSerializingOverride; } @Override - protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) + public void setSymbolRenderer(Renderer symbolRenderer) { - if (outlineRenderer != null) - outlineRenderer.render(gc, visibleRegion); + super.setSymbolRenderer(symbolRenderer); } @Override - protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) - { - if (symbolRenderer != null) - symbolRenderer.render(gc, visibleRegion); - } - public void setOutlineRenderer(Renderer outlineRenderer) { - this.outlineRenderer = outlineRenderer; + super.setOutlineRenderer(outlineRenderer); + requestRedraw(); } - public void setSymbolRenderer(Renderer symbolRenderer) + @Override + public void setHighLevelStateHandler(HighLevelStateHandler handler) { - this.symbolRenderer = symbolRenderer; + super.setHighLevelStateHandler(handler); } public ViewModelModifiable getSubmodelModifiable() @@ -67,21 +75,11 @@ public class DeserializedSubmodelComponent extends SubmodelComponent return super.addSubmodelInterface(supermodelPin); } - @Override - public double getSubmodelScale() - { - return super.getSubmodelScale(); - } - - @Override - public Map getSubmodelMovablePins() - { - return super.getSubmodelMovablePins(); - } - @Override public void removeSubmodelInterface(String name) { super.removeSubmodelInterface(name); } + + // TODO static initializer? } \ No newline at end of file