the ValueTableModel observes the ValueTable

This commit is contained in:
hneemann 2017-07-04 07:57:01 +02:00
parent 87cf2f0942
commit 120fb03215

View File

@ -1,18 +1,23 @@
package de.neemann.digital.data; package de.neemann.digital.data;
import de.neemann.digital.core.Observer;
import de.neemann.digital.lang.Lang; import de.neemann.digital.lang.Lang;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener; import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel; import javax.swing.table.TableModel;
import java.util.ArrayList;
/** /**
* The table model to represent a value table. * The table model to represent a value table.
* <p> * <p>
* Created by hneemann on 24.08.16. * Created by hneemann on 24.08.16.
*/ */
public class ValueTableModel implements TableModel { public class ValueTableModel implements TableModel, Observer {
private final ValueTable values; private final ValueTable values;
private ArrayList<TableModelListener> listeners;
/** /**
* Creates a new table model * Creates a new table model
@ -21,6 +26,8 @@ public class ValueTableModel implements TableModel {
*/ */
public ValueTableModel(ValueTable values) { public ValueTableModel(ValueTable values) {
this.values = values; this.values = values;
listeners = new ArrayList<>();
values.addObserver(this);
} }
@Override @Override
@ -69,10 +76,20 @@ public class ValueTableModel implements TableModel {
@Override @Override
public void addTableModelListener(TableModelListener l) { public void addTableModelListener(TableModelListener l) {
listeners.add(l);
} }
@Override @Override
public void removeTableModelListener(TableModelListener l) { 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);
});
}
} }