From b292ebdb53c335d3b23fa1fb61ed3826c71281fb Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 27 Nov 2020 13:08:01 +0100 Subject: [PATCH] adds the FileLocator to the DataFieldEditor load button, closes #566 --- src/main/java/de/neemann/digital/FileLocator.java | 10 ++++++---- .../digital/gui/components/EditorFactory.java | 13 ++++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/neemann/digital/FileLocator.java b/src/main/java/de/neemann/digital/FileLocator.java index 97b7b44c3..c6bce9030 100644 --- a/src/main/java/de/neemann/digital/FileLocator.java +++ b/src/main/java/de/neemann/digital/FileLocator.java @@ -31,7 +31,7 @@ public class FileLocator { /** * Creates a new instance * - * @param file the file to serach for + * @param file the file to search for */ public FileLocator(File file) { this(file == null ? null : file.getName()); @@ -90,8 +90,10 @@ public class FileLocator { * @return this for chained calls */ public FileLocator setupWithMain(Main main) { - setBaseFile(main.getBaseFileName()); - setLibrary(main.getLibrary()); + if (main != null) { + setBaseFile(main.getBaseFileName()); + setLibrary(main.getLibrary()); + } return this; } @@ -105,7 +107,7 @@ public class FileLocator { return file; if (filename == null) - return file; + return null; if (baseFile != null) { File f = new File(baseFile.getParentFile(), filename); diff --git a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java index 8424dcd03..145504c26 100644 --- a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java +++ b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java @@ -5,6 +5,7 @@ */ package de.neemann.digital.gui.components; +import de.neemann.digital.FileLocator; import de.neemann.digital.analyse.expression.format.FormatToExpression; import de.neemann.digital.core.*; import de.neemann.digital.core.element.*; @@ -640,7 +641,9 @@ public final class EditorFactory { int dataBits = attr.get(Keys.BITS); int addrBits = getAddrBits(attr); DataEditor de = new DataEditor(panel, data, dataBits, addrBits, false, SyncAccess.NOSYNC, attr.get(Keys.INT_FORMAT)); - de.setFileName(attr.getFile(ROM.LAST_DATA_FILE_KEY)); + de.setFileName(new FileLocator(attr.getFile(ROM.LAST_DATA_FILE_KEY)) + .setupWithMain(getAttributeDialog().getMain()) + .locate()); if (de.showDialog()) { DataField mod = de.getModifiedDataField(); if (!data.equals(mod)) @@ -659,7 +662,9 @@ public final class EditorFactory { try { getAttributeDialog().storeEditedValues(); int dataBits = attr.get(Keys.BITS); - data = Importer.read(attr.getFile(ROM.LAST_DATA_FILE_KEY), dataBits) + data = Importer.read(new FileLocator(attr.getFile(ROM.LAST_DATA_FILE_KEY)) + .setupWithMain(getAttributeDialog().getMain()) + .locate(), dataBits) .trimValues(getAddrBits(attr), dataBits); } catch (IOException e1) { new ErrorMessage(Lang.get("msg_errorReadingFile")).addCause(e1).show(panel); @@ -677,7 +682,9 @@ public final class EditorFactory { public void actionPerformed(ActionEvent e) { try { getAttributeDialog().storeEditedValues(); - final File file = attr.getFile(ROM.LAST_DATA_FILE_KEY); + final File file = new FileLocator(attr.getFile(ROM.LAST_DATA_FILE_KEY)) + .setupWithMain(getAttributeDialog().getMain()) + .locate(); data.saveTo(SaveAsHelper.checkSuffix(file, "hex")); } catch (IOException e1) { new ErrorMessage(Lang.get("msg_errorWritingFile")).addCause(e1).show(panel);