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;h=fd22f6f36fa41ceb6871104a313338905b5ce42a;hb=61819ea27655fc6a38ae1e4052fb4991aafb8f8a;hp=38241b30cf3abb258b83183b57f21e1fc860649c;hpb=c95e40d8c3c6f3561794c6008c4185ae8d17a315;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)