diff --git a/src/main/java/de/neemann/digital/analyse/DependencyAnalyser.java b/src/main/java/de/neemann/digital/analyse/DependencyAnalyser.java index 6858b82f3..0cc150693 100644 --- a/src/main/java/de/neemann/digital/analyse/DependencyAnalyser.java +++ b/src/main/java/de/neemann/digital/analyse/DependencyAnalyser.java @@ -52,7 +52,7 @@ public class DependencyAnalyser { if (!effected.contains(value)) { effected.add(value); - for (Observer o : value) { + for (Observer o : value.getObservers()) { if ((o instanceof NodeInterface)) { ObservableValues outputs = ((NodeInterface) o).getOutputs(); for (ObservableValue co : outputs) diff --git a/src/main/java/de/neemann/digital/core/Observable.java b/src/main/java/de/neemann/digital/core/Observable.java index 99da67c6a..96596f20b 100644 --- a/src/main/java/de/neemann/digital/core/Observable.java +++ b/src/main/java/de/neemann/digital/core/Observable.java @@ -8,7 +8,7 @@ import java.util.Iterator; * * @author hneemann */ -public class Observable implements Iterable { +public class Observable { private final ArrayList observers; /** @@ -76,8 +76,11 @@ public class Observable implements Iterable { return observers.contains(observer); } - @Override - public Iterator iterator() { - return observers.iterator(); + /** + * @return tje list of observers + */ + public ArrayList getObservers() { + return observers; } + } diff --git a/src/main/java/de/neemann/digital/data/ValueTable.java b/src/main/java/de/neemann/digital/data/ValueTable.java index 66571f84f..e211a8ca2 100644 --- a/src/main/java/de/neemann/digital/data/ValueTable.java +++ b/src/main/java/de/neemann/digital/data/ValueTable.java @@ -1,5 +1,7 @@ package de.neemann.digital.data; +import de.neemann.digital.core.Observable; + import java.io.*; import java.util.ArrayList; import java.util.Arrays; @@ -9,7 +11,7 @@ import java.util.Iterator; * Stores values in a table * Created by hneemann on 03.07.17. */ -public class ValueTable implements Iterable { +public class ValueTable extends Observable implements Iterable { private final String[] names; private final ArrayList values; @@ -59,6 +61,9 @@ public class ValueTable implements Iterable { } values.add(row); checkMax(row); + + fireHasChanged(); + return this; } @@ -151,6 +156,7 @@ public class ValueTable implements Iterable { public void clear() { values.clear(); Arrays.fill(max, 0); + fireHasChanged(); } /**