diff --git a/src/main/java/de/neemann/digital/core/memory/DataField.java b/src/main/java/de/neemann/digital/core/memory/DataField.java index f43bb049b..0bf0ba37d 100644 --- a/src/main/java/de/neemann/digital/core/memory/DataField.java +++ b/src/main/java/de/neemann/digital/core/memory/DataField.java @@ -205,13 +205,23 @@ public class DataField { * * @param addr the address which value has changed */ - public void fireChanged(int addr) { + private void fireChanged(int addr) { synchronized (listeners) { for (DataListener l : listeners) l.valueChanged(addr); } } + /** + * Sets the data from the given data field + * + * @param dataField the data to set to this data field + */ + public void setDataFrom(DataField dataField) { + data = Arrays.copyOf(dataField.data, size); + fireChanged(-1); + } + /** * The listener interface */ diff --git a/src/main/java/de/neemann/digital/gui/components/DataEditor.java b/src/main/java/de/neemann/digital/gui/components/DataEditor.java index bd792c057..ffa8ecef5 100644 --- a/src/main/java/de/neemann/digital/gui/components/DataEditor.java +++ b/src/main/java/de/neemann/digital/gui/components/DataEditor.java @@ -59,11 +59,7 @@ public class DataEditor extends JDialog { else localDataField = new DataField(dataField, size); - int cols = 16; - if (size <= 16) cols = 1; - else if (size <= 128) cols = 8; - - if (dataBits > 20 && cols == 16) cols = 8; + final int cols = calcCols(size, dataBits); int tableWidth = 0; MyTableModel dm = new MyTableModel(this.localDataField, cols, modelSync); @@ -115,7 +111,7 @@ public class DataEditor extends JDialog { getContentPane().add(buttons, BorderLayout.SOUTH); JMenuBar menuBar = new JMenuBar(); - JMenu data = new JMenu(Lang.get("menu_data")); + JMenu data = new JMenu(Lang.get("menu_file")); data.add(new ToolTipAction(Lang.get("btn_clearData")) { @Override @@ -134,7 +130,8 @@ public class DataEditor extends JDialog { if (fc.showOpenDialog(DataEditor.this) == JFileChooser.APPROVE_OPTION) { fileName = fc.getSelectedFile(); try { - localDataField = new DataField(fc.getSelectedFile()); + localDataField.setDataFrom(new DataField(fc.getSelectedFile())); + dm.fireEvent(new TableModelEvent(dm)); } catch (IOException e1) { new ErrorMessage(Lang.get("msg_errorReadingFile")).addCause(e1).show(DataEditor.this); } @@ -170,6 +167,15 @@ public class DataEditor extends JDialog { setLocationRelativeTo(parent); } + private int calcCols(int size, int dataBits) { + int cols = 16; + if (size <= 16) cols = 1; + else if (size <= 128) cols = 8; + + if (dataBits > 20 && cols == 16) cols = 8; + return cols; + } + /** * @return the data field */ diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index 492206c76..d0fa8cd4d 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -1243,7 +1243,6 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Die ZIP-Datei enthält damit alle Dateien, die für den Betrieb der Schaltung erforderlich sind. Ein- und Ausgänge benennen Für alle unbenannten Ein- und Ausgänge eine Bezeichnung setzen. - Daten Fehler beim Öffnen einer PDF-Datei! diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 2d431e895..0183aecf5 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -1234,7 +1234,6 @@ The names of the variables may not be unique. The ZIP file thus contains all the files that are necessary for the operation of the circuit. Label Inputs and Outputs Set a label to all inputs and outputs without a label. - Data <h1>Digital</h1>A simple simulator for digital circuits. @@ -1322,7 +1321,7 @@ an <a href="https://github.com/hneemann/Digital/issues/new?labels=enhanc Start export anyway? To create a hardware description, a circuit must first be created and analyzed. A standalone truth table can not be used to generate a hardware description. - Used ROM's + Included ROM's no data Ok