1 package era.mi.gui.modeladapter.componentadapters;
6 import era.mi.gui.model.components.SimpleRectangularGUIGate;
7 import era.mi.gui.model.wires.Pin;
8 import era.mi.gui.modeladapter.LogicModelParameters;
9 import era.mi.logic.components.Component;
10 import era.mi.logic.timeline.Timeline;
11 import era.mi.logic.wires.Wire;
12 import era.mi.logic.wires.Wire.ReadEnd;
13 import era.mi.logic.wires.Wire.ReadWriteEnd;
15 public class SimpleGateAdapter implements ComponentAdapter<SimpleRectangularGUIGate>
17 private final ComponentConstructor constructor;
19 public SimpleGateAdapter(ComponentConstructor constructor)
21 this.constructor = constructor;
25 public Component createAndLinkComponent(Timeline timeline, LogicModelParameters params, SimpleRectangularGUIGate guiComponent,
26 Map<Pin, Wire> logicWiresPerPin)
28 ReadWriteEnd out = logicWiresPerPin.get(guiComponent.getOutputPin()).createReadWriteEnd();
29 List<Pin> inputPins = guiComponent.getInputPins();
30 ReadEnd[] ins = new ReadEnd[inputPins.size()];
31 for (int i = 0; i < inputPins.size(); i++)
32 ins[i] = logicWiresPerPin.get(inputPins.get(i)).createReadOnlyEnd();
33 return constructor.newComponent(timeline, params.gateProcessTime, out, ins);
36 public static interface ComponentConstructor
38 public Component newComponent(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd[] ins);