X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2FSubmodelComponent.java;h=57560574ee3211687c1b718ea0a48ae96eb4eb2c;hb=7fff8ff23871cf904cb95c92305e903fbba3d773;hp=8febda89a5d9b52e8b650818b3322eabcbf5783d;hpb=c223a9de7b0ef783bcb4f7612da350583ca29abd;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java index 8febda89..57560574 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java @@ -80,10 +80,13 @@ public abstract class SubmodelComponent extends GUIComponent /** * Returns the submodel pin. */ - protected Pin addSubmodelInterface(String name, int logicWidth, double relX, double relY) + protected Pin addSubmodelInterface(MovablePin supermodelPin) { - MovablePin submodelPin = new MovablePin(submodelInterface, name, logicWidth, relX / submodelScale, relY / submodelScale); - MovablePin supermodelPin = new MovablePin(this, name, logicWidth, relX, relY); + super.addPin(supermodelPin);// do this first to be fail-fast if the supermodel does not belong to this component + + String name = supermodelPin.name; + MovablePin submodelPin = new MovablePin(submodelInterface, name, supermodelPin.logicWidth, supermodelPin.getRelX() / submodelScale, + supermodelPin.getRelY() / submodelScale); submodelPin.addPinMovedListener(p -> { @@ -101,7 +104,6 @@ public abstract class SubmodelComponent extends GUIComponent }); submodelInterface.addPin(submodelPin); - super.addPin(supermodelPin); submodelPins.put(name, submodelPin); supermodelPins.put(name, supermodelPin); @@ -224,7 +226,7 @@ public abstract class SubmodelComponent extends GUIComponent InterfacePinParams[] iPins = new InterfacePinParams[getPins().size()]; int i = 0; - for (Pin p : getPins()) + for (Pin p : getPins().values()) { InterfacePinParams iPinParams = new InterfacePinParams(); iPins[i] = iPinParams;