1 package net.mograsim.logic.model.serializing;
5 import com.google.gson.JsonElement;
7 import net.haspamelodica.swt.helper.gcs.GeneralGC;
8 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
9 import net.mograsim.logic.model.model.ViewModelModifiable;
10 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
11 import net.mograsim.logic.model.model.wires.MovablePin;
12 import net.mograsim.logic.model.model.wires.Pin;
13 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
14 import net.mograsim.logic.model.snippets.Renderer;
16 //TODO serialize handlers
17 public class DeserializedSubmodelComponent extends SubmodelComponent
20 * If a DeserializedSubmodelComponent is part of another SubmodelComponent, when it it serialized, it should not return its internal
21 * structure, but rather the component ID used to create it.
23 * @see SubmodelComponentSerializer#deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)
24 * SubmodelComponentSerializer.deserialize(...)
25 * @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...)
27 public final String idForSerializingOverride;
29 * See {@link #idForSerializingOverride}
31 public final JsonElement paramsForSerializingOverride;
33 private Renderer outlineRenderer;
34 private Renderer symbolRenderer;
35 private HighLevelStateHandler highLevelStateHandler;
37 public DeserializedSubmodelComponent(ViewModelModifiable model, String name, String idForSerializingOverride,
38 JsonElement paramsForSerializingOverride)
41 this.idForSerializingOverride = idForSerializingOverride;
42 this.paramsForSerializingOverride = paramsForSerializingOverride;
46 public void setHighLevelState(String stateID, Object newState)
48 highLevelStateHandler.setHighLevelState(stateID, newState);
52 public Object getHighLevelState(String stateID)
54 return highLevelStateHandler.getHighLevelState(stateID);
58 protected void renderOutline(GeneralGC gc, Rectangle visibleRegion)
60 if (outlineRenderer != null)
61 outlineRenderer.render(gc, visibleRegion);
65 protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion)
67 if (symbolRenderer != null)
68 symbolRenderer.render(gc, visibleRegion);
71 public void setOutlineRenderer(Renderer outlineRenderer)
73 this.outlineRenderer = outlineRenderer;
76 public void setSymbolRenderer(Renderer symbolRenderer)
78 this.symbolRenderer = symbolRenderer;
81 public void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler)
83 this.highLevelStateHandler = highLevelStateHandler;
86 public ViewModelModifiable getSubmodelModifiable()
88 return submodelModifiable;
92 public double getSubmodelScale()
94 return super.getSubmodelScale();
98 public void setSubmodelScale(double submodelScale)
100 super.setSubmodelScale(submodelScale);
104 public void setSize(double width, double height)
106 super.setSize(width, height);
110 public Map<String, MovablePin> getSubmodelMovablePins()
112 return super.getSubmodelMovablePins();
116 public Pin addSubmodelInterface(MovablePin supermodelPin)
118 return super.addSubmodelInterface(supermodelPin);
122 public void removeSubmodelInterface(String name)
124 super.removeSubmodelInterface(name);
127 // TODO static initializer