From 198fecea32e55dd946b18c64bc4c80fd34068f5a Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 10 Apr 2016 15:50:34 +0200 Subject: [PATCH] made the model events a simple enum. --- .../de/neemann/digital/core/ModelEvent.java | 46 +++++++++++++------ .../digital/core/ModelStateObserver.java | 7 +++ .../digital/draw/model/RealTimeClock.java | 2 +- .../digital/draw/shapes/DataShape.java | 6 +-- .../neemann/digital/gui/GuiModelObserver.java | 6 +-- .../java/de/neemann/digital/gui/Main.java | 6 +-- .../digital/gui/components/ProbeDialog.java | 6 +-- .../gui/components/data/DataSetDialog.java | 2 +- .../gui/components/data/DataSetObserver.java | 10 ++-- 9 files changed, 57 insertions(+), 34 deletions(-) diff --git a/src/main/java/de/neemann/digital/core/ModelEvent.java b/src/main/java/de/neemann/digital/core/ModelEvent.java index acafce2c2..e53180354 100644 --- a/src/main/java/de/neemann/digital/core/ModelEvent.java +++ b/src/main/java/de/neemann/digital/core/ModelEvent.java @@ -1,27 +1,43 @@ package de.neemann.digital.core; /** + * A event fired by the model + * * @author hneemann */ -public class ModelEvent { +public enum ModelEvent { - public static final ModelEvent STEP = new ModelEvent(Event.STEP); - public static final ModelEvent MICROSTEP = new ModelEvent(Event.MICROSTEP); - public static final ModelEvent STARTED = new ModelEvent(Event.STARTED); - public static final ModelEvent BREAK = new ModelEvent(Event.BREAK); - public static final ModelEvent STOPPED = new ModelEvent(Event.STOPPED); - public static final ModelEvent MANUALCHANGE = new ModelEvent(Event.MANUALCHANGE); + /** + * Is fired after the model had became stable after first stabilization. + */ + STARTED, - public enum Event {STARTED, STOPPED, STEP, BREAK, MANUALCHANGE, MICROSTEP} + /** + * The model had stopped. + */ + STOPPED, - private final Event event; + /** + * Is fired if the model had performed a full step. + * This means a change is propagated through all nodes, and the model has + * become stable again. + */ + STEP, - private ModelEvent(Event event) { - this.event = event; - } + /** + * A break is detected. + */ + BREAK, - public Event getType() { - return event; - } + /** + * Here was a manual change to the model by the user. + */ + MANUALCHANGE, + + /** + * If fired if a micro step is calculated. + * This means the aktual nodes are calculated, but not the effected nodes. + */ + MICROSTEP; } diff --git a/src/main/java/de/neemann/digital/core/ModelStateObserver.java b/src/main/java/de/neemann/digital/core/ModelStateObserver.java index 746266141..cfa99f0f6 100644 --- a/src/main/java/de/neemann/digital/core/ModelStateObserver.java +++ b/src/main/java/de/neemann/digital/core/ModelStateObserver.java @@ -1,10 +1,17 @@ package de.neemann.digital.core; /** + * Interface to implement observers of the model. + * * @author hneemann */ public interface ModelStateObserver { + /** + * called if a event was detected. + * + * @param event the event + */ void handleEvent(ModelEvent event); } diff --git a/src/main/java/de/neemann/digital/draw/model/RealTimeClock.java b/src/main/java/de/neemann/digital/draw/model/RealTimeClock.java index 14c89d8c3..dc3218f87 100644 --- a/src/main/java/de/neemann/digital/draw/model/RealTimeClock.java +++ b/src/main/java/de/neemann/digital/draw/model/RealTimeClock.java @@ -41,7 +41,7 @@ public class RealTimeClock implements ModelStateObserver { @Override public void handleEvent(ModelEvent event) { - switch (event.getType()) { + switch (event) { case STARTED: if (frequency > 50) // if frequency is high it is not necessary to update the GUI at every clock output.removeObserver(GuiModelObserver.class); diff --git a/src/main/java/de/neemann/digital/draw/shapes/DataShape.java b/src/main/java/de/neemann/digital/draw/shapes/DataShape.java index c4f2464e0..7182e731a 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/DataShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/DataShape.java @@ -23,14 +23,14 @@ import java.util.ArrayList; */ public class DataShape implements Shape { - private final ModelEvent.Event type; + private final ModelEvent type; private DataSet dataSet; public DataShape(ElementAttributes attr) { if (attr.get(AttributeKey.MicroStep)) - type = ModelEvent.Event.MICROSTEP; + type = ModelEvent.MICROSTEP; else - type = ModelEvent.Event.STEP; + type = ModelEvent.STEP; } @Override diff --git a/src/main/java/de/neemann/digital/gui/GuiModelObserver.java b/src/main/java/de/neemann/digital/gui/GuiModelObserver.java index 921ca8343..8cddfd117 100644 --- a/src/main/java/de/neemann/digital/gui/GuiModelObserver.java +++ b/src/main/java/de/neemann/digital/gui/GuiModelObserver.java @@ -16,7 +16,7 @@ import de.neemann.digital.gui.components.CircuitComponent; */ public class GuiModelObserver implements Observer, ModelStateObserver { private final CircuitComponent component; - private final ModelEvent.Event type; + private final ModelEvent type; private boolean changed = false; /** @@ -25,7 +25,7 @@ public class GuiModelObserver implements Observer, ModelStateObserver { * @param component the component to update * @param type the event type which triggers a repainting */ - public GuiModelObserver(CircuitComponent component, ModelEvent.Event type) { + public GuiModelObserver(CircuitComponent component, ModelEvent type) { this.component = component; this.type = type; } @@ -37,7 +37,7 @@ public class GuiModelObserver implements Observer, ModelStateObserver { @Override public void handleEvent(ModelEvent event) { - if (changed && event.getType() == type) { + if (changed && event == type) { component.paintImmediately(0, 0, component.getWidth(), component.getHeight()); changed = false; } diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index d4010ad1c..ea0721587 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -374,7 +374,7 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E @Override public void enter() { super.enter(); - if (createAndStartModel(settings.get(AttributeKey.StartTimer), ModelEvent.Event.STEP)) + if (createAndStartModel(settings.get(AttributeKey.StartTimer), ModelEvent.STEP)) circuitComponent.setManualChangeObserver(new FullStepObserver(model)); } }); @@ -382,7 +382,7 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E @Override public void enter() { super.enter(); - if (createAndStartModel(false, ModelEvent.Event.MICROSTEP)) + if (createAndStartModel(false, ModelEvent.MICROSTEP)) circuitComponent.setManualChangeObserver(new MicroStepObserver(model)); } }); @@ -416,7 +416,7 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E } - private boolean createAndStartModel(boolean runClock, ModelEvent.Event updateEvent) { + private boolean createAndStartModel(boolean runClock, ModelEvent updateEvent) { try { circuitComponent.removeHighLighted(); circuitComponent.setModeAndReset(true); diff --git a/src/main/java/de/neemann/digital/gui/components/ProbeDialog.java b/src/main/java/de/neemann/digital/gui/components/ProbeDialog.java index 91bcc61cb..5760b8bba 100644 --- a/src/main/java/de/neemann/digital/gui/components/ProbeDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/ProbeDialog.java @@ -20,10 +20,10 @@ import java.util.List; */ public class ProbeDialog extends JDialog implements ModelStateObserver { - private final ModelEvent.Event type; + private final ModelEvent type; private final SignalTableModel tableModel; - public ProbeDialog(Frame owner, Model model, ModelEvent.Event type, List ordering) { + public ProbeDialog(Frame owner, Model model, ModelEvent type, List ordering) { super(owner, Lang.get("win_measures"), false); setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.type = type; @@ -61,7 +61,7 @@ public class ProbeDialog extends JDialog implements ModelStateObserver { @Override public void handleEvent(ModelEvent event) { - if (event.getType() == type || event.getType() == ModelEvent.Event.MANUALCHANGE) { + if (event == type || event == ModelEvent.MANUALCHANGE) { tableModel.fireChanged(); } } diff --git a/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java b/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java index 1ce8bb9df..c7dea4120 100644 --- a/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java @@ -32,7 +32,7 @@ public class DataSetDialog extends JDialog implements ModelStateObserver { * @param type the event type which triggers a new DataSample * @param ordering */ - public DataSetDialog(Frame owner, Model model, ModelEvent.Event type, List ordering) { + public DataSetDialog(Frame owner, Model model, ModelEvent type, List ordering) { super(owner, Lang.get("win_measures"), false); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setAlwaysOnTop(true); diff --git a/src/main/java/de/neemann/digital/gui/components/data/DataSetObserver.java b/src/main/java/de/neemann/digital/gui/components/data/DataSetObserver.java index 86b6e4c8c..9b629ba84 100644 --- a/src/main/java/de/neemann/digital/gui/components/data/DataSetObserver.java +++ b/src/main/java/de/neemann/digital/gui/components/data/DataSetObserver.java @@ -9,29 +9,29 @@ import de.neemann.digital.core.ModelStateObserver; public class DataSetObserver implements ModelStateObserver { private final DataSet dataSet; - private final ModelEvent.Event type; + private final ModelEvent type; private DataSample manualSample; private int maintime; - public DataSetObserver(ModelEvent.Event type, DataSet dataSet) { + public DataSetObserver(ModelEvent type, DataSet dataSet) { this.type = type; this.dataSet = dataSet; } @Override public void handleEvent(ModelEvent event) { - if (event.getType() == ModelEvent.Event.STARTED) { + if (event == ModelEvent.STARTED) { dataSet.clear(); maintime = 0; } - if (event.getType() == ModelEvent.Event.MANUALCHANGE) { + if (event == ModelEvent.MANUALCHANGE) { if (manualSample == null) manualSample = new DataSample(maintime, dataSet.signalSize()); manualSample.fillWith(dataSet.getSignals()); } - if (event.getType() == type) { + if (event == type) { if (manualSample != null) { dataSet.add(manualSample); manualSample = null;