X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2FViewModel.java;fp=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2FViewModel.java;h=0000000000000000000000000000000000000000;hb=3a52b6bffe52db5dd5ca907b4b3dfd368a58e14f;hp=b0d6a3cfcf1a050ba27df4950f7cdc9574a1c453;hpb=552986fd8718d5f2db00802015fdd1ecd58a5a2f;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModel.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModel.java deleted file mode 100644 index b0d6a3cf..00000000 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModel.java +++ /dev/null @@ -1,153 +0,0 @@ -package net.mograsim.logic.model.model; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import net.mograsim.logic.model.model.components.ModelComponent; -import net.mograsim.logic.model.model.wires.ModelWire; - -public class ViewModel -{ - private final Map components; - private final Map componentDestroyFunctions; - private final Map componentsUnmodifiable; - private final Map wires; - private final Map wireDestroyFunctions; - private final Map wiresUnmodifiable; - - private final List> componentAddedListeners; - private final List> componentRemovedListeners; - private final List> wireAddedListeners; - private final List> wireRemovedListeners; - private final List> redrawHandlerChangedListeners; - - private Runnable redrawHandler; - - protected ViewModel() - { - components = new HashMap<>(); - componentDestroyFunctions = new HashMap<>(); - componentsUnmodifiable = Collections.unmodifiableMap(components); - wires = new HashMap<>(); - wireDestroyFunctions = new HashMap<>(); - wiresUnmodifiable = Collections.unmodifiableMap(wires); - - componentAddedListeners = new ArrayList<>(); - componentRemovedListeners = new ArrayList<>(); - wireAddedListeners = new ArrayList<>(); - wireRemovedListeners = new ArrayList<>(); - redrawHandlerChangedListeners = new ArrayList<>(); - } - - /** - * Adds the given component to the list of components and calls all componentAddedListeners. Don't call this method from application - * code as it is automatically called in {@link ModelComponent}'s constructor. - * - * @author Daniel Kirschten - */ - protected void componentCreated(ModelComponent component, Runnable destroyed) - { - if (components.containsKey(component.name)) - throw new IllegalStateException("Don't add the same component twice!"); - components.put(component.name, component); - componentDestroyFunctions.put(component.name, destroyed); - callComponentAddedListeners(component); - requestRedraw(); - } - - /** - * Destroyes the given component, removes it from the list of components and calls all componentRemovedListeners. - * - * @author Daniel Kirschten - */ - protected void destroyComponent(ModelComponent component) - { - componentDestroyFunctions.get(component.name).run(); - if (!components.containsKey(component.name)) - throw new IllegalStateException("Don't remove the same component twice!"); - components.remove(component.name); - callComponentRemovedListeners(component); - requestRedraw(); - } - - /** - * Adds the given wire to the list of wires and calls all wireAddedListeners. - * - * @author Daniel Kirschten - */ - protected void wireCreated(ModelWire wire, Runnable destroyed) - { - if (wires.containsKey(wire.name)) - throw new IllegalStateException("Don't add the same wire twice!"); - wires.put(wire.name, wire); - wireDestroyFunctions.put(wire.name, destroyed); - callWireAddedListeners(wire); - requestRedraw(); - } - - /** - * Destroys the given wire, removes it from the list of wires and calls all wireRemovedListeners. - * - * @author Daniel Kirschten - */ - protected void destroyWire(ModelWire wire) - { - wireDestroyFunctions.get(wire.name).run(); - if (!wires.containsKey(wire.name)) - throw new IllegalStateException("Don't remove the same wire twice!"); - wires.remove(wire.name); - callWireRemovedListeners(wire); - requestRedraw(); - } - - public Map getComponentsByName() - { - return componentsUnmodifiable; - } - - public Map getWiresByName() - { - return wiresUnmodifiable; - } - - // @formatter:off - public void addComponentAddedListener (Consumer listener) {componentAddedListeners .add (listener);} - public void addComponentRemovedListener (Consumer listener) {componentRemovedListeners .add (listener);} - public void addWireAddedListener (Consumer listener) {wireAddedListeners .add (listener);} - public void addWireRemovedListener (Consumer listener) {wireRemovedListeners .add (listener);} - public void addRedrawHandlerChangedListener (Consumer listener) {redrawHandlerChangedListeners.add (listener);} - - public void removeComponentAddedListener (Consumer listener) {componentAddedListeners .remove(listener);} - public void removeComponentRemovedListener (Consumer listener) {componentRemovedListeners .remove(listener);} - public void removeWireAddedListener (Consumer listener) {wireAddedListeners .remove(listener);} - public void removeWireRemovedListener (Consumer listener) {wireRemovedListeners .remove(listener);} - public void removeRedrawHandlerChangedListener(Consumer listener) {redrawHandlerChangedListeners.remove(listener);} - - private void callComponentAddedListeners (ModelComponent c) {componentAddedListeners .forEach(l -> l.accept(c));} - private void callComponentRemovedListeners (ModelComponent c) {componentRemovedListeners .forEach(l -> l.accept(c));} - private void callWireAddedListeners (ModelWire w) {wireAddedListeners .forEach(l -> l.accept(w));} - private void callWireRemovedListeners (ModelWire w) {wireRemovedListeners .forEach(l -> l.accept(w));} - private void callRedrawHandlerChangedListener(Runnable r) {redrawHandlerChangedListeners.forEach(l -> l.accept(r));} - // @formatter:on - - public void setRedrawHandler(Runnable handler) - { - this.redrawHandler = handler; - callRedrawHandlerChangedListener(handler); - } - - public Runnable getRedrawHandler() - { - return redrawHandler; - } - - public void requestRedraw() - { - if (redrawHandler != null) - redrawHandler.run(); - } -} \ No newline at end of file