X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fserializing%2FDeserializedSubmodelComponent.java;h=8e4d459c76036aa951d69421fe7d30fed38f43a1;hb=43f832fac0531473dc97af75edb7c5b1cb9f6ce4;hp=8109a37fa8374792e3ed2b693903f3ecc4ff03d2;hpb=a00663c79d0e26b494ff79eee4b6c049f086c7e0;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 8109a37f..8e4d459c 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,26 +1,21 @@ 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.LogicModelModifiable; 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.snippets.HighLevelStateHandler; import net.mograsim.logic.model.snippets.Renderer; -//TODO serialize handlers public class DeserializedSubmodelComponent extends SubmodelComponent { /** * 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) + * @see SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement) * SubmodelComponentSerializer.deserialize(...) * @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...) */ @@ -28,72 +23,66 @@ public class DeserializedSubmodelComponent extends SubmodelComponent /** * See {@link #idForSerializingOverride} */ - public final JsonElement paramsForSerializingOverride; - - private Renderer outlineRenderer; - private Renderer symbolRenderer; - private HighLevelStateHandler highLevelStateHandler; + public final Object paramsForSerializingOverride; - public DeserializedSubmodelComponent(ViewModelModifiable model, String name, String idForSerializingOverride, - JsonElement paramsForSerializingOverride) + public DeserializedSubmodelComponent(LogicModelModifiable model, String name, String idForSerializingOverride, + Object paramsForSerializingOverride) { - super(model, name); + super(model, name, false); this.idForSerializingOverride = idForSerializingOverride; this.paramsForSerializingOverride = paramsForSerializingOverride; + init(); } + /** + * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see + * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement) + * SubmodelComponentSerializer.deserialize(...)}), this ID is returned
+ * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set), + * {@link SubmodelComponent#getIDForSerializing(IdentifyParams)} is invoced. + */ @Override - public void setHighLevelState(String stateID, Object newState) + public String getIDForSerializing(IdentifyParams idParams) { - highLevelStateHandler.setHighLevelState(stateID, newState); + return idForSerializingOverride == null ? super.getIDForSerializing(idParams) : idForSerializingOverride; } + /** + * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see + * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement) + * SubmodelComponentSerializer.deserialize(...)}), {@link #paramsForSerializingOverride} is returned
+ * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set), + * {@link SubmodelComponent#getParamsForSerializing(IdentifyParams)} is invoced. + */ @Override - public Object getHighLevelState(String stateID) + public Object getParamsForSerializing(IdentifyParams idParams) { - return highLevelStateHandler.getHighLevelState(stateID); + return idForSerializingOverride == null ? super.getParamsForSerializing(idParams) : 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; - } - - public void setSymbolRenderer(Renderer symbolRenderer) - { - this.symbolRenderer = symbolRenderer; + super.setOutlineRenderer(outlineRenderer); } - public void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler) + @Override + public void setHighLevelStateHandler(HighLevelStateHandler handler) { - this.highLevelStateHandler = highLevelStateHandler; + super.setHighLevelStateHandler(handler); } - public ViewModelModifiable getSubmodelModifiable() + public LogicModelModifiable getSubmodelModifiable() { return submodelModifiable; } - @Override - public double getSubmodelScale() - { - return super.getSubmodelScale(); - } - @Override public void setSubmodelScale(double submodelScale) { @@ -106,12 +95,6 @@ public class DeserializedSubmodelComponent extends SubmodelComponent super.setSize(width, height); } - @Override - public Map getSubmodelMovablePins() - { - return super.getSubmodelMovablePins(); - } - @Override public Pin addSubmodelInterface(MovablePin supermodelPin) { @@ -123,6 +106,4 @@ public class DeserializedSubmodelComponent extends SubmodelComponent { super.removeSubmodelInterface(name); } - - // TODO static initializer } \ No newline at end of file