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 public class DeserializedSubmodelComponent extends SubmodelComponent
17 * If a DeserializedSubmodelComponent is part of another SubmodelComponent, when it it serialized, it should not return its internal
18 * structure, but rather the component ID used to create it.
20 * @see SubmodelComponentSerializer#deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)
21 * SubmodelComponentSerializer.deserialize(...)
22 * @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...)
24 public final String idForSerializingOverride;
26 * See {@link #idForSerializingOverride}
28 public final JsonElement paramsForSerializingOverride;
30 private Renderer outlineRenderer;
31 private Renderer symbolRenderer;
32 private HighLevelStateHandler highLevelStateHandler;
34 public DeserializedSubmodelComponent(ViewModelModifiable model, String name, String idForSerializingOverride, JsonElement paramsForSerializingOverride)
37 this.idForSerializingOverride = idForSerializingOverride;
38 this.paramsForSerializingOverride = paramsForSerializingOverride;
42 public void setHighLevelState(String stateID, Object newState)
44 highLevelStateHandler.setHighLevelState(stateID, newState);
48 public Object getHighLevelState(String stateID)
50 return highLevelStateHandler.getHighLevelState(stateID);
54 protected void renderOutline(GeneralGC gc, Rectangle visibleRegion)
56 if (outlineRenderer != null)
57 outlineRenderer.render(gc, visibleRegion);
61 protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion)
63 if (symbolRenderer != null)
64 symbolRenderer.render(gc, visibleRegion);
67 public void setOutlineRenderer(Renderer outlineRenderer)
69 this.outlineRenderer = outlineRenderer;
72 public void setSymbolRenderer(Renderer symbolRenderer)
74 this.symbolRenderer = symbolRenderer;
77 public void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler)
79 this.highLevelStateHandler = highLevelStateHandler;
82 public ViewModelModifiable getSubmodelModifiable()
84 return submodelModifiable;
88 public void setSubmodelScale(double submodelScale)
90 super.setSubmodelScale(submodelScale);
94 public void setSize(double width, double height)
96 super.setSize(width, height);
100 public Pin addSubmodelInterface(MovablePin supermodelPin)
102 return super.addSubmodelInterface(supermodelPin);
105 // TODO static initializer