From: Christian Femers Date: Fri, 28 Jun 2019 17:22:57 +0000 (+0200) Subject: Common ConnectionPoint interface to simplify many things X-Git-Url: https://mograsim.net/gitweb/?a=commitdiff_plain;h=a4d1573c2f2cf8236bcb56dc70bc8b8c60b6c225;p=Mograsim.git Common ConnectionPoint interface to simplify many things Simplifies the GUIWire's constructors and allows to loop to create wire connections. --- diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/ConnectionPoint.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/ConnectionPoint.java new file mode 100644 index 00000000..ed10286d --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/ConnectionPoint.java @@ -0,0 +1,13 @@ +package net.mograsim.logic.ui.model.wires; + +public interface ConnectionPoint +{ + /** + * Retrieves the {@link Pin}, that is used by the {@link GUIWire} to connect to. + * + * @return the {@link Pin} for the wire to connect to. + * + * @author Christian Femers + */ + Pin getPin(); +} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java index 33be875f..5a0579c3 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java @@ -73,37 +73,7 @@ public class GUIWire * * @author Daniel Kirschten */ - public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2) - { - this(model, pin1, pin2, (Point[]) null); - } - - /** - * Creates a new {@link GUIWire} with automatic interpolation. - * - * @author Daniel Kirschten - */ - public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2) - { - this(model, pin1, pin2, (Point[]) null); - } - - /** - * Creates a new {@link GUIWire} with automatic interpolation. - * - * @author Daniel Kirschten - */ - public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2) - { - this(model, pin1, pin2, (Point[]) null); - } - - /** - * Creates a new {@link GUIWire} with automatic interpolation. - * - * @author Daniel Kirschten - */ - public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2) + public GUIWire(ViewModelModifiable model, ConnectionPoint pin1, ConnectionPoint pin2) { this(model, pin1, pin2, (Point[]) null); } @@ -113,7 +83,7 @@ public class GUIWire * * @author Daniel Kirschten */ - public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2, Point... path) + public GUIWire(ViewModelModifiable model, ConnectionPoint pin1, ConnectionPoint pin2, Point... path) { this(model, pin1.getPin(), pin2.getPin(), path); } @@ -123,27 +93,7 @@ public class GUIWire * * @author Daniel Kirschten */ - public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2, Point... path) - { - this(model, pin1.getPin(), pin2, path); - } - - /** - * Creates a new {@link GUIWire} without automatic interpolation. - * - * @author Daniel Kirschten - */ - public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2, Point... path) - { - this(model, pin1, pin2.getPin(), path); - } - - /** - * Creates a new {@link GUIWire} without automatic interpolation. - * - * @author Daniel Kirschten - */ - public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path) + GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path) { logicObs = (i) -> callRedrawListeners(); this.model = model; diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java index 287a6237..b761c0e7 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java @@ -15,7 +15,7 @@ import net.mograsim.logic.ui.model.components.GUIComponent; * * @author Daniel Kirschten */ -public class Pin +public class Pin implements ConnectionPoint { /** * The {@link GUIComponent} this pin belongs to @@ -136,4 +136,10 @@ public class Pin { return "Pin [" + name + ", point=" + getPos() + "]"; } + + @Override + public Pin getPin() + { + return this; + } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java index de5ba4ac..07bddc6c 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java @@ -21,7 +21,7 @@ import net.mograsim.logic.ui.model.components.SimpleRectangularGUIGate; * * @author Daniel Kirschten */ -public class WireCrossPoint extends GUIComponent +public class WireCrossPoint extends GUIComponent implements ConnectionPoint { private static final int CIRCLE_RADIUS = 1; private static final int CIRCLE_DIAM = CIRCLE_RADIUS * 2; @@ -53,6 +53,7 @@ public class WireCrossPoint extends GUIComponent // pins + @Override public Pin getPin() { return pin;