X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fserializing%2FDeserializedSubmodelComponent.java;h=0e9be475f4c55e81e8822a5ff0eb3f4f7a2b413f;hb=6f717d2b76148b0d49c342f9ab937ba87d81dddb;hp=adf24338554ccd37cdce17ec4b0945a94c6699ec;hpb=47ea68ed5c444dd14864412639f6a6fd60ab8a0f;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..0e9be475 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 @@ -2,22 +2,56 @@ 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; +//TODO serialize handlers 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; + + private Renderer outlineRenderer; + private Renderer symbolRenderer; + private HighLevelStateHandler highLevelStateHandler; - 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 + public Object getHighLevelState(String stateID) + { + return highLevelStateHandler.getHighLevelState(stateID); + } + + @Override + public void setHighLevelState(String stateID, Object newState) + { + highLevelStateHandler.setHighLevelState(stateID, newState); } @Override @@ -39,44 +73,64 @@ public class DeserializedSubmodelComponent extends SubmodelComponent this.outlineRenderer = outlineRenderer; } + public Renderer getOutlineRenderer() + { + return outlineRenderer; + } + public void setSymbolRenderer(Renderer symbolRenderer) { this.symbolRenderer = symbolRenderer; } + public Renderer getSymbolRenderer() + { + return symbolRenderer; + } + + public void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler) + { + this.highLevelStateHandler = highLevelStateHandler; + } + + public HighLevelStateHandler getHighLevelStateHandler() + { + return highLevelStateHandler; + } + public ViewModelModifiable getSubmodelModifiable() { return submodelModifiable; } @Override - public void setSubmodelScale(double submodelScale) + public double getSubmodelScale() { - super.setSubmodelScale(submodelScale); + return super.getSubmodelScale(); } @Override - public void setSize(double width, double height) + public void setSubmodelScale(double submodelScale) { - super.setSize(width, height); + super.setSubmodelScale(submodelScale); } @Override - public Pin addSubmodelInterface(MovablePin supermodelPin) + public void setSize(double width, double height) { - return super.addSubmodelInterface(supermodelPin); + super.setSize(width, height); } @Override - public double getSubmodelScale() + public Map getSubmodelMovablePins() { - return super.getSubmodelScale(); + return super.getSubmodelMovablePins(); } @Override - public Map getSubmodelMovablePins() + public Pin addSubmodelInterface(MovablePin supermodelPin) { - return super.getSubmodelMovablePins(); + return super.addSubmodelInterface(supermodelPin); } @Override @@ -84,4 +138,6 @@ public class DeserializedSubmodelComponent extends SubmodelComponent { super.removeSubmodelInterface(name); } + + // TODO static initializer } \ No newline at end of file