1 package net.mograsim.logic.model.serializing;
3 import com.google.gson.JsonElement;
5 import net.haspamelodica.swt.helper.gcs.GeneralGC;
6 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
7 import net.mograsim.logic.model.model.ViewModelModifiable;
8 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
9 import net.mograsim.logic.model.model.wires.MovablePin;
10 import net.mograsim.logic.model.model.wires.Pin;
11 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
12 import net.mograsim.logic.model.snippets.Renderer;
14 //TODO serialize handlers
15 public class DeserializedSubmodelComponent extends SubmodelComponent
18 * If a DeserializedSubmodelComponent is part of another SubmodelComponent, when it it serialized, it should not return its internal
19 * structure, but rather the component ID used to create it.
21 * @see SubmodelComponentSerializer#deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)
22 * SubmodelComponentSerializer.deserialize(...)
23 * @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...)
25 public final String idForSerializingOverride;
27 * See {@link #idForSerializingOverride}
29 public final JsonElement paramsForSerializingOverride;
31 private Renderer outlineRenderer;
32 private Renderer symbolRenderer;
33 private HighLevelStateHandler highLevelStateHandler;
35 public DeserializedSubmodelComponent(ViewModelModifiable model, String name, String idForSerializingOverride,
36 JsonElement paramsForSerializingOverride)
39 this.idForSerializingOverride = idForSerializingOverride;
40 this.paramsForSerializingOverride = paramsForSerializingOverride;
44 public void setHighLevelState(String stateID, Object newState)
46 highLevelStateHandler.setHighLevelState(stateID, newState);
50 public Object getHighLevelState(String stateID)
52 return highLevelStateHandler.getHighLevelState(stateID);
56 protected void renderOutline(GeneralGC gc, Rectangle visibleRegion)
58 if (outlineRenderer != null)
59 outlineRenderer.render(gc, visibleRegion);
63 protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion)
65 if (symbolRenderer != null)
66 symbolRenderer.render(gc, visibleRegion);
69 public void setOutlineRenderer(Renderer outlineRenderer)
71 this.outlineRenderer = outlineRenderer;
74 public void setSymbolRenderer(Renderer symbolRenderer)
76 this.symbolRenderer = symbolRenderer;
79 public void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler)
81 this.highLevelStateHandler = highLevelStateHandler;
84 public ViewModelModifiable getSubmodelModifiable()
86 return submodelModifiable;
90 public void setSubmodelScale(double submodelScale)
92 super.setSubmodelScale(submodelScale);
96 public void setSize(double width, double height)
98 super.setSize(width, height);
102 public Pin addSubmodelInterface(MovablePin supermodelPin)
104 return super.addSubmodelInterface(supermodelPin);
107 // TODO static initializer