X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2Fsubmodels%2FSubmodelComponent.java;fp=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2Fsubmodels%2FSubmodelComponent.java;h=fd22f6f36fa41ceb6871104a313338905b5ce42a;hb=5897a6d81c418d27ca5bb402e5f1038e10a191fb;hp=38241b30cf3abb258b83183b57f21e1fc860649c;hpb=1e4c26b6d59f2cc40ce5af657c54ce65788e2c43;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelComponent.java index 38241b30..fd22f6f3 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelComponent.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.function.Function; import net.haspamelodica.swt.helper.gcs.GCConfig; import net.haspamelodica.swt.helper.gcs.GeneralGC; @@ -22,11 +23,11 @@ import net.mograsim.logic.ui.model.wires.GUIWire; import net.mograsim.logic.ui.model.wires.MovablePin; import net.mograsim.logic.ui.model.wires.Pin; import net.mograsim.logic.ui.serializing.SubmodelComponentParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.ComponentCompositionParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.InnerPinParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.InnerWireParams; import net.mograsim.logic.ui.serializing.SubmodelComponentParams.InterfacePinParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.ComponentCompositionParams.InnerComponentParams; +import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters; +import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerComponentParams; +import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams; +import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams.InnerPinParams; /** * A {@link GUIComponent} consisting of another model. A SubmodelComponent can have so-called "interface pins" connecting the @@ -497,17 +498,20 @@ public abstract class SubmodelComponent extends GUIComponent return false; } - // serializing + // serializing; TODO move to serializing classes + + public SubmodelComponentParams calculateParams() + { + return calculateParams(c -> "class:" + c.getClass().getCanonicalName()); + } /** * @return {@link SubmodelComponentParams}, which describe this {@link SubmodelComponent}. */ - public SubmodelComponentParams calculateParams() + public SubmodelComponentParams calculateParams(Function getIdentifier) { SubmodelComponentParams params = new SubmodelComponentParams(); - params.name = getIdentifier(); - params.type = SubmodelComponent.class.getSimpleName(); - params.composition = calculateCompositionParams(); + params.submodel = calculateSubmodelParams(getIdentifier); params.width = getWidth(); params.height = getHeight(); @@ -527,12 +531,12 @@ public abstract class SubmodelComponent extends GUIComponent return params; } - protected ComponentCompositionParams calculateCompositionParams() + private SubmodelParameters calculateSubmodelParams(Function getIdentifier) { - ComponentCompositionParams params = new ComponentCompositionParams(); + SubmodelParameters params = new SubmodelParameters(); params.innerScale = getSubmodelScale(); - List compList = submodelModifiable.getComponents(); + List compList = submodel.getComponents(); Iterator componentIt = compList.iterator(); componentIt.next(); // Skip inner SubmodelInterface InnerComponentParams[] comps = new InnerComponentParams[compList.size() - 1]; @@ -542,14 +546,13 @@ public abstract class SubmodelComponent extends GUIComponent GUIComponent component = componentIt.next(); InnerComponentParams inner = new InnerComponentParams(); comps[i] = inner; - inner.params = component.getInstantiationParameters(); inner.pos = new Point(component.getPosX(), component.getPosY()); - inner.name = component.getIdentifier(); + inner.id = getIdentifier.apply(component); i++; } params.subComps = comps; - List wireList = submodelModifiable.getWires(); + List wireList = submodel.getWires(); InnerWireParams wires[] = new InnerWireParams[wireList.size()]; i = 0; for (GUIWire wire : wireList)