X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2Fmodeladapter%2FViewLogicModelAdapter.java;h=1e7d341eceb4fcac2b0ebed234152e4af0a6cc7e;hb=bedef06cf9b3fdd815dd8cf8925aeb159381d59d;hp=c64ae971d3fa354813d384fdf998284ce3bc14a1;hpb=847c715730cefc84768ab2012e8d3e6265717c98;p=Mograsim.git diff --git a/LogicUI/src/era/mi/gui/modeladapter/ViewLogicModelAdapter.java b/LogicUI/src/era/mi/gui/modeladapter/ViewLogicModelAdapter.java index c64ae971..1e7d341e 100644 --- a/LogicUI/src/era/mi/gui/modeladapter/ViewLogicModelAdapter.java +++ b/LogicUI/src/era/mi/gui/modeladapter/ViewLogicModelAdapter.java @@ -20,6 +20,7 @@ import era.mi.gui.model.wires.GUIWire; import era.mi.gui.model.wires.Pin; import era.mi.gui.model.wires.WireCrossPoint; import era.mi.gui.modeladapter.componentadapters.ComponentAdapter; +import era.mi.gui.modeladapter.componentadapters.ManualSwitchAdapter; import era.mi.gui.modeladapter.componentadapters.SimpleGateAdapter; import era.mi.logic.components.Component; import era.mi.logic.components.gates.AndGate; @@ -34,12 +35,14 @@ public class ViewLogicModelAdapter private final static Map, ComponentAdapter> componentAdapters; static { - Map, ComponentAdapter> componentAdaptersModifiable = new HashMap<>(); - componentAdaptersModifiable.put(GUIOrGate.class, new SimpleGateAdapter(OrGate::new)); - componentAdaptersModifiable.put(GUIAndGate.class, new SimpleGateAdapter(AndGate::new)); - componentAdaptersModifiable.put(GUINotGate.class, new SimpleGateAdapter((t, p, o, i) -> new NotGate(t, p, i[0], o))); + Set> componentAdaptersModifiable = new HashSet<>(); + componentAdaptersModifiable.add(new SimpleGateAdapter<>(GUIOrGate.class, OrGate::new)); + componentAdaptersModifiable.add(new SimpleGateAdapter<>(GUIAndGate.class, AndGate::new)); + componentAdaptersModifiable.add(new SimpleGateAdapter<>(GUINotGate.class, (t, p, o, i) -> new NotGate(t, p, i[0], o))); + componentAdaptersModifiable.add(new ManualSwitchAdapter()); // TODO list all "primitive" adapters here - componentAdapters = Collections.unmodifiableMap(componentAdaptersModifiable); + componentAdapters = Collections.unmodifiableMap( + componentAdaptersModifiable.stream().collect(Collectors.toMap(ComponentAdapter::getSupportedClass, Function.identity()))); } public static Timeline convert(ViewModel viewModel, LogicModelParameters params) @@ -55,10 +58,14 @@ public class ViewLogicModelAdapter Map oneToOneComponents = new HashMap<>(); for (GUIComponent guiComp : viewModel.getComponents()) { - // WireCrossPoints just vanish if (!(guiComp instanceof WireCrossPoint)) oneToOneComponents.put(guiComp, createAndLinkComponent(timeline, params, guiComp, logicWiresPerPinUnmodifiable, componentAdapters.get(guiComp.getClass()))); + else + { + WireCrossPoint guiCompCasted = (WireCrossPoint) guiComp; + guiCompCasted.setLogicModelBinding(logicWiresPerPin.get(guiCompCasted.getPin()).createReadOnlyEnd()); + } } // TODO handle complex components