Splitted ViewModel and ViewModelModifiable
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 3 Jun 2019 20:10:37 +0000 (22:10 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 3 Jun 2019 20:10:37 +0000 (22:10 +0200)
15 files changed:
net.mograsim.logic.ui/src/net/mograsim/logic/ui/SimpleLogicUIStandalone.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/Am2901Example.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModelModifiable.java [new file with mode: 0644]
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/Am2901NANDBased.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIAndGate.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIManualSwitch.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUINotGate.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIOrGate.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java
net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java

index 962427f..6c856c4 100644 (file)
@@ -3,13 +3,13 @@ package net.mograsim.logic.ui;
 import java.util.function.Consumer;
 
 import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 import net.mograsim.logic.ui.modeladapter.LogicModelParameters;
 import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter;
 
 public class SimpleLogicUIStandalone
 {
-       public static void executeVisualisation(Consumer<ViewModel> setupViewModel)
+       public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel)
        {
                LogicModelParameters params = new LogicModelParameters();
                params.gateProcessTime = 50;
@@ -17,10 +17,10 @@ public class SimpleLogicUIStandalone
                executeVisualisation(setupViewModel, params);
        }
 
-       public static void executeVisualisation(Consumer<ViewModel> setupViewModel, LogicModelParameters params)
+       public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel, LogicModelParameters params)
        {
                // setup view model
-               ViewModel viewModel = new ViewModel();
+               ViewModelModifiable viewModel = new ViewModelModifiable();
                setupViewModel.accept(viewModel);
 
                // convert to logic model
index 0cafa7e..3ead2c7 100644 (file)
@@ -1,7 +1,7 @@
 package net.mograsim.logic.ui.examples;
 
 import net.mograsim.logic.ui.SimpleLogicUIStandalone;
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 import net.mograsim.logic.ui.model.components.Am2901NANDBased;
 import net.mograsim.logic.ui.model.components.GUIBitDisplay;
 import net.mograsim.logic.ui.model.components.GUIManualSwitch;
@@ -19,7 +19,7 @@ public class Am2901Example
        }
 
        @SuppressWarnings("unused") // for GUIWires being created
-       public static void createAm2901Example(ViewModel model)
+       public static void createAm2901Example(ViewModelModifiable model)
        {
                Am2901NANDBased am2901 = new Am2901NANDBased(model);
                am2901.moveTo(100, 0);
index af91d1f..835d794 100644 (file)
@@ -1,13 +1,13 @@
 package net.mograsim.logic.ui.examples;
 
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.mograsim.logic.ui.SimpleLogicUIStandalone;
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 import net.mograsim.logic.ui.model.components.GUIManualSwitch;
 import net.mograsim.logic.ui.model.components.GUINotGate;
 import net.mograsim.logic.ui.model.components.GUIOrGate;
 import net.mograsim.logic.ui.model.wires.GUIWire;
 import net.mograsim.logic.ui.model.wires.WireCrossPoint;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 
 public class RSLatchExample
 {
@@ -17,7 +17,7 @@ public class RSLatchExample
        }
 
        @SuppressWarnings("unused") // for GUIWires being created
-       public static void createRSLatchExample(ViewModel model)
+       public static void createRSLatchExample(ViewModelModifiable model)
        {
                GUIManualSwitch rIn = new GUIManualSwitch(model);
                rIn.moveTo(100, 100);
index 7f9b113..869f1a1 100644 (file)
@@ -23,7 +23,7 @@ public class ViewModel
 
        private final Runnable redrawListenerForSubcomponents;
 
-       public ViewModel()
+       protected ViewModel()
        {
                components = new ArrayList<>();
                componentsUnmodifiable = Collections.unmodifiableList(components);
@@ -43,7 +43,7 @@ public class ViewModel
         * 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 GUIComponent::new.
         */
-       public void componentCreated(GUIComponent component)
+       protected void componentCreated(GUIComponent component)
        {
                if (components.contains(component))
                        throw new IllegalStateException("Don't add the same component twice!");
@@ -57,7 +57,7 @@ public class ViewModel
         * Removes the given component from the list of components and calls all componentRemovedListeners. Don't call this method from
         * application code as it is automatically called in GUIComponent::destroy.
         */
-       public void componentDestroyed(GUIComponent component)
+       protected void componentDestroyed(GUIComponent component)
        {
                if (!components.contains(component))
                        throw new IllegalStateException("Don't remove the same component twice!");
@@ -71,7 +71,7 @@ public class ViewModel
         * 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 GUIComponent::new.
         */
-       public void wireCreated(GUIWire wire)
+       protected void wireCreated(GUIWire wire)
        {
                if (wires.contains(wire))
                        throw new IllegalStateException("Don't add the same wire twice!");
@@ -85,7 +85,7 @@ public class ViewModel
         * Removes the given component from the list of components and calls all componentRemovedListeners. Don't call this method from
         * application code as it is automatically called in GUIComponent::destroy.
         */
-       public void wireDestroyed(GUIWire wire)
+       protected void wireDestroyed(GUIWire wire)
        {
                if (!wires.contains(wire))
                        throw new IllegalStateException("Don't remove the same wire twice!");
@@ -105,11 +105,6 @@ public class ViewModel
                return wiresUnmodifiable;
        }
 
-//     public void requestRedraw()
-//     {
-//             callRedrawListeners();
-//     }
-
        // @formatter:off
        public void addComponentAddedListener     (Consumer<? super GUIComponent> listener) {componentAddedListeners  .add   (listener);}
        public void addComponentRemovedListener   (Consumer<? super GUIComponent> listener) {componentRemovedListeners.add   (listener);}
diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModelModifiable.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModelModifiable.java
new file mode 100644 (file)
index 0000000..21863db
--- /dev/null
@@ -0,0 +1,31 @@
+package net.mograsim.logic.ui.model;
+
+import net.mograsim.logic.ui.model.components.GUIComponent;
+import net.mograsim.logic.ui.model.wires.GUIWire;
+
+public class ViewModelModifiable extends ViewModel
+{
+       @Override
+       public void componentCreated(GUIComponent component)
+       {
+               super.componentCreated(component);
+       }
+
+       @Override
+       public void componentDestroyed(GUIComponent component)
+       {
+               super.componentDestroyed(component);
+       }
+
+       @Override
+       public void wireCreated(GUIWire wire)
+       {
+               super.wireCreated(wire);
+       }
+
+       @Override
+       public void wireDestroyed(GUIWire wire)
+       {
+               super.wireDestroyed(wire);
+       }
+}
\ No newline at end of file
index 7aace4d..d63b41d 100644 (file)
@@ -6,7 +6,7 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 import net.mograsim.logic.ui.model.wires.Pin;
 
 // TODO make a superclass
@@ -15,7 +15,7 @@ public class Am2901NANDBased extends GUIComponent
        public final List<String> inputNames;
        public final List<String> outputNames;
 
-       public Am2901NANDBased(ViewModel model)
+       public Am2901NANDBased(ViewModelModifiable model)
        {
                super(model);
 
index 440881d..716d210 100644 (file)
@@ -1,10 +1,10 @@
 package net.mograsim.logic.ui.model.components;
 
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 
 public class GUIAndGate extends SimpleRectangularGUIGate
 {
-       public GUIAndGate(ViewModel model, int logicWidth)
+       public GUIAndGate(ViewModelModifiable model, int logicWidth)
        {
                super(model, logicWidth, "&", false);
                setInputCount(2);// TODO make variable
index abaec56..fd2f736 100644 (file)
@@ -8,7 +8,7 @@ import net.mograsim.logic.core.LogicObservable;
 import net.mograsim.logic.core.LogicObserver;
 import net.mograsim.logic.core.components.BitDisplay;
 import net.mograsim.logic.core.types.BitVectorFormatter;
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 import net.mograsim.logic.ui.model.wires.Pin;
 
 public class GUIBitDisplay extends GUIComponent
@@ -22,7 +22,7 @@ public class GUIBitDisplay extends GUIComponent
        private final LogicObserver logicObs;
        private BitDisplay bitDisplay;
 
-       public GUIBitDisplay(ViewModel model)
+       public GUIBitDisplay(ViewModelModifiable model)
        {
                super(model);
                logicObs = (i) -> requestRedraw();
index ca21622..a4c1031 100644 (file)
@@ -5,14 +5,14 @@ import java.util.Collections;
 import java.util.List;
 import java.util.function.Consumer;
 
-import net.mograsim.logic.ui.model.ViewModel;
-import net.mograsim.logic.ui.model.wires.Pin;
 import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
+import net.mograsim.logic.ui.model.wires.Pin;
 
 public abstract class GUIComponent
 {
-       protected final ViewModel model;
+       protected final ViewModelModifiable model;
        private final Rectangle bounds;
        private final List<Pin> pins;
        protected final List<Pin> pinsUnmodifiable;
@@ -24,7 +24,7 @@ public abstract class GUIComponent
 
        private final Runnable redrawListenerForSubcomponents;
 
-       public GUIComponent(ViewModel model)
+       public GUIComponent(ViewModelModifiable model)
        {
                this.model = model;
                this.bounds = new Rectangle(0, 0, 0, 0);
index dbeabd2..0993024 100644 (file)
@@ -1,7 +1,5 @@
 package net.mograsim.logic.ui.model.components;
 
-import net.mograsim.logic.ui.model.ViewModel;
-import net.mograsim.logic.ui.model.wires.Pin;
 import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
@@ -11,6 +9,8 @@ import net.mograsim.logic.core.LogicObserver;
 import net.mograsim.logic.core.components.ManualSwitch;
 import net.mograsim.logic.core.types.BitVectorFormatter;
 import net.mograsim.logic.core.wires.Wire.ReadEnd;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
+import net.mograsim.logic.ui.model.wires.Pin;
 
 public class GUIManualSwitch extends GUIComponent
 {
@@ -24,7 +24,7 @@ public class GUIManualSwitch extends GUIComponent
        private ManualSwitch logicSwitch;
        private ReadEnd end;
 
-       public GUIManualSwitch(ViewModel model)
+       public GUIManualSwitch(ViewModelModifiable model)
        {
                super(model);
                logicObs = (i) -> requestRedraw();
index 01df349..76d2450 100644 (file)
@@ -1,10 +1,10 @@
 package net.mograsim.logic.ui.model.components;
 
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 
 public class GUINotGate extends SimpleRectangularGUIGate
 {
-       public GUINotGate(ViewModel model, int logicWidth)
+       public GUINotGate(ViewModelModifiable model, int logicWidth)
        {
                super(model, logicWidth, "1", true);
                setInputCount(1);
index bbc436d..d4fdb7f 100644 (file)
@@ -1,10 +1,10 @@
 package net.mograsim.logic.ui.model.components;
 
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 
 public class GUIOrGate extends SimpleRectangularGUIGate
 {
-       public GUIOrGate(ViewModel model, int logicWidth)
+       public GUIOrGate(ViewModelModifiable model, int logicWidth)
        {
                super(model, logicWidth, "\u22651", false);// ">=1"
                setInputCount(2);
index a2875c6..a1b0c8a 100644 (file)
@@ -4,13 +4,13 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import net.mograsim.logic.ui.model.ViewModel;
-import net.mograsim.logic.ui.model.wires.MovablePin;
-import net.mograsim.logic.ui.model.wires.Pin;
 import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
+import net.mograsim.logic.ui.model.wires.MovablePin;
+import net.mograsim.logic.ui.model.wires.Pin;
 
 public class SimpleRectangularGUIGate extends GUIComponent
 {
@@ -28,7 +28,7 @@ public class SimpleRectangularGUIGate extends GUIComponent
        private final List<Pin> inputPins;
        private final List<Pin> inputPinsUnmodifiable;
 
-       protected SimpleRectangularGUIGate(ViewModel model, int logicWidth, String label, boolean isInverted)
+       protected SimpleRectangularGUIGate(ViewModelModifiable model, int logicWidth, String label, boolean isInverted)
        {
                super(model);
                this.label = label;
index 50871fe..771e2e3 100644 (file)
@@ -10,11 +10,11 @@ import net.mograsim.logic.core.LogicObserver;
 import net.mograsim.logic.core.types.BitVectorFormatter;
 import net.mograsim.logic.core.wires.Wire.ReadEnd;
 import net.mograsim.logic.ui.ColorHelper;
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 
 public class GUIWire
 {
-       private final ViewModel model;
+       private final ViewModelModifiable model;
        public final int logicWidth;
        private Pin pin1;
        private Pin pin2;
@@ -25,7 +25,7 @@ public class GUIWire
        private final LogicObserver logicObs;
        private ReadEnd end;
 
-       public GUIWire(ViewModel model, Pin pin1, Pin pin2, Point... path)
+       public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path)
        {
                logicObs = (i) -> callRedrawListeners();
                this.model = model;
index 4626280..eb3028e 100644 (file)
@@ -7,7 +7,7 @@ import net.mograsim.logic.core.LogicObserver;
 import net.mograsim.logic.core.types.BitVectorFormatter;
 import net.mograsim.logic.core.wires.Wire.ReadEnd;
 import net.mograsim.logic.ui.ColorHelper;
-import net.mograsim.logic.ui.model.ViewModel;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
 import net.mograsim.logic.ui.model.components.GUIComponent;
 
 public class WireCrossPoint extends GUIComponent
@@ -18,7 +18,7 @@ public class WireCrossPoint extends GUIComponent
        private final LogicObserver logicObs;
        private ReadEnd end;
 
-       public WireCrossPoint(ViewModel model, int logicWidth)
+       public WireCrossPoint(ViewModelModifiable model, int logicWidth)
        {
                super(model);
                logicObs = (i) -> requestRedraw();