From 7b0da7328f81fd64f3f674e33ea030e896759a58 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Tue, 4 Jun 2019 15:31:35 +0200 Subject: [PATCH] Implemented GUInand3 --- .../examples/SubmodelComponentTestbench.java | 6 +- .../components/mi/nandbased/GUInand3.java | 80 +++++++++++++++++++ 2 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java index a17a3f40..d51a1f86 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java @@ -5,7 +5,7 @@ import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.components.GUIBitDisplay; import net.mograsim.logic.ui.model.components.GUIManualSwitch; import net.mograsim.logic.ui.model.components.SubmodelComponent; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdemux2; +import net.mograsim.logic.ui.model.components.mi.nandbased.GUInand3; import net.mograsim.logic.ui.model.wires.GUIWire; import net.mograsim.logic.ui.modeladapter.LogicModelParameters; @@ -22,8 +22,8 @@ public class SubmodelComponentTestbench @SuppressWarnings("unused") // for GUIWires being created public static void createTestbench(ViewModelModifiable model) { - SubmodelComponent comp = new GUIdemux2(model); - int inputCount = 2; + SubmodelComponent comp = new GUInand3(model); + int inputCount = 3; comp.moveTo(100, 0); for (int i = 0; i < inputCount; i++) diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java new file mode 100644 index 00000000..8caf9905 --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java @@ -0,0 +1,80 @@ +package net.mograsim.logic.ui.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.ui.model.ViewModelModifiable; +import net.mograsim.logic.ui.model.components.GUINandGate; +import net.mograsim.logic.ui.model.components.SubmodelComponent; +import net.mograsim.logic.ui.model.wires.GUIWire; +import net.mograsim.logic.ui.model.wires.Pin; +import net.mograsim.logic.ui.model.wires.WireCrossPoint; + +public class GUInand3 extends SubmodelComponent +{ + private final Pin pinA; + private final Pin pinB; + private final Pin pinC; + private final Pin pinY; + + public GUInand3(ViewModelModifiable model) + { + super(model, "GUInand3"); + setSize(40, 30); + setSubmodelScale(.4); + + Pin A = addSubmodelInterface(1, 0, 5); + Pin B = addSubmodelInterface(1, 0, 15); + Pin C = addSubmodelInterface(1, 0, 25); + Pin Y = addSubmodelInterface(1, 40, 15); + + this.pinA = getSupermodelPin(A); + this.pinB = getSupermodelPin(B); + this.pinC = getSupermodelPin(C); + this.pinY = getSupermodelPin(Y); + + initSubmodelComponents(A, B, C, Y); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents(Pin A, Pin B, Pin C, Pin Y) + { + GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); + GUINandGate andAB = new GUINandGate(submodelModifiable, 1); + GUINandGate nandABC = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpNandAB = new WireCrossPoint(submodelModifiable, 1); + + nandAB.moveTo(10, 15); + andAB.moveTo(40, 15); + nandABC.moveTo(70, 27.5); + cpNandAB.moveTo(35, 25); + + new GUIWire(submodelModifiable, A, nandAB.getInputPins().get(0), new Point(5, 12.5), new Point(5, 20)); + new GUIWire(submodelModifiable, B, nandAB.getInputPins().get(1), new Point(5, 37.5), new Point(5, 30)); + new GUIWire(submodelModifiable, nandAB.getOutputPin(), cpNandAB.getPin()); + new GUIWire(submodelModifiable, cpNandAB.getPin(), andAB.getInputPins().get(0), new Point(35, 20)); + new GUIWire(submodelModifiable, cpNandAB.getPin(), andAB.getInputPins().get(1), new Point(35, 30)); + new GUIWire(submodelModifiable, andAB.getOutputPin(), nandABC.getInputPins().get(0), new Point(65, 25), new Point(65, 32.5)); + new GUIWire(submodelModifiable, C, nandABC.getInputPins().get(1), new Point(65, 62.5), new Point(65, 42.5)); + new GUIWire(submodelModifiable, nandABC.getOutputPin(), Y); + } + + public Pin getPinA() + { + return pinA; + } + + public Pin getPinB() + { + return pinB; + } + + public Pin getPinC() + { + return pinC; + } + + public Pin getPinY() + { + return pinY; + } +} \ No newline at end of file -- 2.17.1