now also the GraphDialog observes the ValueTable instead of the model

This commit is contained in:
hneemann 2017-07-04 08:11:13 +02:00
parent 120fb03215
commit 47ea8752ce

View File

@ -1,9 +1,6 @@
package de.neemann.digital.gui.components.data; package de.neemann.digital.gui.components.data;
import de.neemann.digital.core.Model; import de.neemann.digital.core.*;
import de.neemann.digital.core.ModelEvent;
import de.neemann.digital.core.ModelStateObserver;
import de.neemann.digital.core.Signal;
import de.neemann.digital.data.ValueTable; import de.neemann.digital.data.ValueTable;
import de.neemann.digital.gui.SaveAsHelper; import de.neemann.digital.gui.SaveAsHelper;
import de.neemann.digital.gui.components.OrderMerger; import de.neemann.digital.gui.components.OrderMerger;
@ -29,13 +26,11 @@ import java.util.List;
* *
* @author hneemann * @author hneemann
*/ */
public class GraphDialog extends JDialog implements ModelStateObserver { public class GraphDialog extends JDialog implements Observer {
private static final int MAX_SAMPLE_SIZE = 1000; private static final int MAX_SAMPLE_SIZE = 1000;
private final GraphComponent dsc; private final GraphComponent dsc;
private final JScrollPane scrollPane; private final JScrollPane scrollPane;
private final Sync modelSync;
private final ToolTipAction showTable; private final ToolTipAction showTable;
private ValueTableObserver valueTableObserver;
private static final Icon ICON_EXPAND = IconCreator.create("View-zoom-fit.png"); private static final Icon ICON_EXPAND = IconCreator.create("View-zoom-fit.png");
private static final Icon ICON_ZOOM_IN = IconCreator.create("View-zoom-in.png"); private static final Icon ICON_ZOOM_IN = IconCreator.create("View-zoom-in.png");
@ -95,8 +90,6 @@ public class GraphDialog extends JDialog implements ModelStateObserver {
*/ */
private GraphDialog(JFrame owner, String title, Model model, ValueTable logData, ValueTableObserver valueTableObserver, Sync modelSync) { private GraphDialog(JFrame owner, String title, Model model, ValueTable logData, ValueTableObserver valueTableObserver, Sync modelSync) {
super(owner, title, false); super(owner, title, false);
this.valueTableObserver = valueTableObserver;
this.modelSync = modelSync;
setDefaultCloseOperation(DISPOSE_ON_CLOSE); setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setAlwaysOnTop(true); setAlwaysOnTop(true);
@ -105,6 +98,8 @@ public class GraphDialog extends JDialog implements ModelStateObserver {
getContentPane().add(scrollPane); getContentPane().add(scrollPane);
dsc.setScrollPane(scrollPane); dsc.setScrollPane(scrollPane);
logData.addObserver(this);
JToolBar toolBar = new JToolBar(); JToolBar toolBar = new JToolBar();
ToolTipAction maximize = new ToolTipAction(Lang.get("menu_maximize"), ICON_EXPAND) { ToolTipAction maximize = new ToolTipAction(Lang.get("menu_maximize"), ICON_EXPAND) {
@Override @Override
@ -147,12 +142,12 @@ public class GraphDialog extends JDialog implements ModelStateObserver {
addWindowListener(new WindowAdapter() { addWindowListener(new WindowAdapter() {
@Override @Override
public void windowOpened(WindowEvent e) { public void windowOpened(WindowEvent e) {
modelSync.access(() -> model.addObserver(GraphDialog.this)); modelSync.access(() -> model.addObserver(valueTableObserver));
} }
@Override @Override
public void windowClosed(WindowEvent e) { public void windowClosed(WindowEvent e) {
modelSync.access(() -> model.removeObserver(GraphDialog.this)); modelSync.access(() -> model.removeObserver(valueTableObserver));
} }
}); });
@ -185,10 +180,7 @@ public class GraphDialog extends JDialog implements ModelStateObserver {
} }
@Override @Override
public void handleEvent(ModelEvent event) { public void hasChanged() {
modelSync.access(() -> {
valueTableObserver.handleEvent(event);
});
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
dsc.revalidate(); dsc.revalidate();
dsc.repaint(); dsc.repaint();