diff --git a/src/main/java/de/neemann/digital/data/ValueTableModel.java b/src/main/java/de/neemann/digital/data/ValueTableModel.java index d1255c559..6a2d1e39b 100644 --- a/src/main/java/de/neemann/digital/data/ValueTableModel.java +++ b/src/main/java/de/neemann/digital/data/ValueTableModel.java @@ -1,18 +1,23 @@ package de.neemann.digital.data; +import de.neemann.digital.core.Observer; import de.neemann.digital.lang.Lang; +import javax.swing.*; +import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; +import java.util.ArrayList; /** * The table model to represent a value table. *

* Created by hneemann on 24.08.16. */ -public class ValueTableModel implements TableModel { +public class ValueTableModel implements TableModel, Observer { private final ValueTable values; + private ArrayList listeners; /** * Creates a new table model @@ -21,6 +26,8 @@ public class ValueTableModel implements TableModel { */ public ValueTableModel(ValueTable values) { this.values = values; + listeners = new ArrayList<>(); + values.addObserver(this); } @Override @@ -69,10 +76,20 @@ public class ValueTableModel implements TableModel { @Override public void addTableModelListener(TableModelListener l) { + listeners.add(l); } @Override public void removeTableModelListener(TableModelListener l) { + listeners.remove(l); } + @Override + public void hasChanged() { + SwingUtilities.invokeLater(() -> { + TableModelEvent tme = new TableModelEvent(this); + for (TableModelListener l : listeners) + l.tableChanged(tme); + }); + } }