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=9fa933bdb00630a3aa147678b109c0940985d908;hb=7aa6eab72deba89dbc22ae9c90ffb5df53f9d496;hp=106c5ffe2d5d83115b4bc742f2291889b54f8803;hpb=b555e4c29e14f455d8ffbc810284c7bb44b459f9;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 106c5ffe..9fa933bd 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 @@ -15,22 +15,22 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; import net.mograsim.logic.ui.LogicUIRenderer; import net.mograsim.logic.ui.model.ViewModel; import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.params.GeneralComponentParams; -import net.mograsim.logic.ui.model.components.params.GeneralComponentParams.InnerComponentParams; -import net.mograsim.logic.ui.model.components.params.SubComponentParams; -import net.mograsim.logic.ui.model.components.params.SubComponentParams.InterfacePinParams; +import net.mograsim.logic.ui.model.components.SubmodelComponentParams.ComponentCompositionParams; +import net.mograsim.logic.ui.model.components.SubmodelComponentParams.ComponentCompositionParams.InnerComponentParams; +import net.mograsim.logic.ui.model.components.SubmodelComponentParams.InnerPinParams; +import net.mograsim.logic.ui.model.components.SubmodelComponentParams.InnerWireParams; +import net.mograsim.logic.ui.model.components.SubmodelComponentParams.InterfacePinParams; 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.model.components.params.SubComponentParams.InnerPinParams; -import net.mograsim.logic.ui.model.components.params.SubComponentParams.InnerWireParams; public abstract class SubmodelComponent extends GUIComponent { protected final ViewModelModifiable submodelModifiable; public final ViewModel submodel; - private final Map submodelPinsPerSupermodelPin; + private final Map submodelPinsPerSupermodelPin; private final Map submodelPinsPerSupermodelPinUnmodifiable; - private final Map supermodelPinsPerSubmodelPin; + private final Map supermodelPinsPerSubmodelPin; private final Map supermodelPinsPerSubmodelPinUnmodifiable; private final SubmodelInterface submodelInterface; @@ -62,7 +62,7 @@ public abstract class SubmodelComponent extends GUIComponent { this.submodelScale = submodelScale; - for (Entry e : supermodelPinsPerSubmodelPin.entrySet()) + for (Entry e : supermodelPinsPerSubmodelPin.entrySet()) e.getKey().setRelPos(e.getValue().getRelX() * submodelScale, e.getValue().getRelY() * submodelScale); requestRedraw();// needed if there is no submodel interface pin @@ -76,12 +76,12 @@ public abstract class SubmodelComponent extends GUIComponent /** * Returns the submodel pin. */ - protected Pin addSubmodelInterface(int logicWidth, double relX, double relY) + protected Pin addSubmodelInterface(String name, int logicWidth, double relX, double relY) { - PinMovable submodelPin = new PinMovable(submodelInterface, logicWidth, relX / submodelScale, relY / submodelScale); + MovablePin submodelPin = new MovablePin(submodelInterface, name, logicWidth, relX / submodelScale, relY / submodelScale); submodelInterface.addPin(submodelPin); - PinMovable supermodelPin = new PinMovable(this, logicWidth, relX, relY); + MovablePin supermodelPin = new MovablePin(this, name, logicWidth, relX, relY); addPin(supermodelPin); submodelPinsPerSupermodelPin.put(supermodelPin, submodelPin); @@ -93,8 +93,8 @@ public abstract class SubmodelComponent extends GUIComponent protected void moveSubmodelInterface(Pin supermodelPin, double relX, double relY) { - PinMovable submodelPin = getSubmodelMovablePin(supermodelPin); - PinMovable supermodelPinMovable = getSupermodelMovablePin(submodelPin); + MovablePin submodelPin = getSubmodelMovablePin(supermodelPin); + MovablePin supermodelPinMovable = getSupermodelMovablePin(submodelPin); submodelPin.setRelPos(relX / submodelScale, relY / submodelScale); supermodelPinMovable.setRelPos(relX, relY); @@ -124,7 +124,7 @@ public abstract class SubmodelComponent extends GUIComponent return getSupermodelMovablePin(submodelPin); } - protected PinMovable getSupermodelMovablePin(Pin submodelPin) + protected MovablePin getSupermodelMovablePin(Pin submodelPin) { return supermodelPinsPerSubmodelPin.get(submodelPin); } @@ -139,7 +139,7 @@ public abstract class SubmodelComponent extends GUIComponent return getSubmodelMovablePin(supermodelPin); } - protected PinMovable getSubmodelMovablePin(Pin supermodelPin) + protected MovablePin getSubmodelMovablePin(Pin supermodelPin) { return submodelPinsPerSupermodelPin.get(supermodelPin); } @@ -196,23 +196,12 @@ public abstract class SubmodelComponent extends GUIComponent return true; } - private static class PinMovable extends Pin - { - public PinMovable(GUIComponent component, int logicWidth, double relX, double relY) - { - super(component, logicWidth, relX, relY); - } - - @Override - protected void setRelPos(double relX, double relY) - { - super.setRelPos(relX, relY); - } - } - - public SubComponentParams calculateParams() + /** + * @return {@link SubmodelComponentParams}, which describe this {@link SubmodelComponent}. + */ + public SubmodelComponentParams calculateParams() { - SubComponentParams params = new SubComponentParams(); + SubmodelComponentParams params = new SubmodelComponentParams(); params.type = SubmodelComponent.class.getSimpleName(); params.composition = calculateCompositionParams(); @@ -228,6 +217,7 @@ public abstract class SubmodelComponent extends GUIComponent InterfacePinParams iPinParams = new InterfacePinParams(); iPins[i] = iPinParams; iPinParams.location = p.getRelPos(); + iPinParams.name = p.name; iPinParams.logicWidth = p.logicWidth; i++; } @@ -235,9 +225,9 @@ public abstract class SubmodelComponent extends GUIComponent return params; } - protected GeneralComponentParams calculateCompositionParams() + protected ComponentCompositionParams calculateCompositionParams() { - GeneralComponentParams params = new GeneralComponentParams(); + ComponentCompositionParams params = new ComponentCompositionParams(); params.innerScale = getSubmodelScale(); List compList = submodelModifiable.getComponents();