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 Object getHighLevelState(String stateID)
48 return highLevelStateHandler.getHighLevelState(stateID);
52 public void setHighLevelState(String stateID, Object newState)
54 highLevelStateHandler.setHighLevelState(stateID, newState);
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 Renderer getOutlineRenderer()
78 return outlineRenderer;
81 public void setSymbolRenderer(Renderer symbolRenderer)
83 this.symbolRenderer = symbolRenderer;
86 public Renderer getSymbolRenderer()
88 return symbolRenderer;
91 public void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler)
93 this.highLevelStateHandler = highLevelStateHandler;
96 public HighLevelStateHandler getHighLevelStateHandler()
98 return highLevelStateHandler;
101 public ViewModelModifiable getSubmodelModifiable()
103 return submodelModifiable;
107 public double getSubmodelScale()
109 return super.getSubmodelScale();
113 public void setSubmodelScale(double submodelScale)
115 super.setSubmodelScale(submodelScale);
119 public void setSize(double width, double height)
121 super.setSize(width, height);
125 public Map<String, MovablePin> getSubmodelMovablePins()
127 return super.getSubmodelMovablePins();
131 public Pin addSubmodelInterface(MovablePin supermodelPin)
133 return super.addSubmodelInterface(supermodelPin);
137 public void removeSubmodelInterface(String name)
139 super.removeSubmodelInterface(name);
142 // TODO static initializer