package net.mograsim.logic.model.serializing;
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import com.google.gson.JsonElement;
+
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;
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;
- 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
- protected void renderOutline(GeneralGC gc, Rectangle visibleRegion)
+ public void setSymbolRenderer(Renderer symbolRenderer)
{
- if (outlineRenderer != null)
- outlineRenderer.render(gc, visibleRegion);
+ super.setSymbolRenderer(symbolRenderer);
}
@Override
- protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion)
- {
- if (symbolRenderer != null)
- symbolRenderer.render(gc, visibleRegion);
- }
-
public void setOutlineRenderer(Renderer outlineRenderer)
{
- this.outlineRenderer = outlineRenderer;
+ super.setOutlineRenderer(outlineRenderer);
+ requestRedraw();
}
- public void setSymbolRenderer(Renderer symbolRenderer)
+ @Override
+ public void setHighLevelStateHandler(HighLevelStateHandler handler)
{
- this.symbolRenderer = symbolRenderer;
+ super.setHighLevelStateHandler(handler);
}
public ViewModelModifiable getSubmodelModifiable()
}
@Override
- protected Pin addSubmodelInterface(MovablePin supermodelPin)
+ public Pin addSubmodelInterface(MovablePin supermodelPin)
{
return super.addSubmodelInterface(supermodelPin);
}
+
+ @Override
+ public void removeSubmodelInterface(String name)
+ {
+ super.removeSubmodelInterface(name);
+ }
+
+ // TODO only used in EditorCanvas. Replace with setting maxVisibleRegionFillRatioForAlpha0 / min...1.
+ @Override
+ public Renderer getOutlineRenderer()
+ {
+ return super.getOutlineRenderer();
+ }
+
+ // TODO static initializer?
}
\ No newline at end of file