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=ae74a6a022756a4cc7ee5b453ad7a68e13832788;hp=b9939afeecf385c1c767d0e338da557c882afbcb;hpb=b2f3d0b16783289fab229c667c18d61f84119bbd;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 b9939afe..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.SubComponentParams; -import net.mograsim.logic.ui.model.components.params.RectComponentParams.InnerComponentParams; -import net.mograsim.logic.ui.model.components.params.RectComponentParams.InnerPinParams; -import net.mograsim.logic.ui.model.components.params.RectComponentParams.InnerWireParams; -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; 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,13 @@ 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(); Rectangle bounds = getBounds(); @@ -227,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++; } @@ -234,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();