From 438dd9dd4c585fb1c35607acfcda25e35b3db37b Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Wed, 19 May 2021 19:28:04 +1000 Subject: [PATCH] tidying save actions --- .../diskbrowser/gui/AbstractSaveAction.java | 16 +++++++++++++++ .../diskbrowser/gui/SaveDiskAction.java | 18 ++++++++++------- .../diskbrowser/gui/SaveFileAction.java | 14 ++++++++----- .../diskbrowser/gui/SaveSectorsAction.java | 20 +++++++++++-------- 4 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java diff --git a/src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java b/src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java new file mode 100644 index 0000000..2af88d7 --- /dev/null +++ b/src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java @@ -0,0 +1,16 @@ +package com.bytezone.diskbrowser.gui; + +import javax.swing.JFileChooser; + +import com.bytezone.diskbrowser.utilities.DefaultAction; + +public abstract class AbstractSaveAction extends DefaultAction +{ + JFileChooser fileChooser; + + public AbstractSaveAction (String text, String tip) + { + super (text, tip); + } + +} diff --git a/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java b/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java index bb0cee7..55c420d 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java @@ -9,10 +9,9 @@ import javax.swing.JFileChooser; import javax.swing.JOptionPane; import com.bytezone.diskbrowser.disk.FormattedDisk; -import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// -class SaveDiskAction extends DefaultAction implements DiskSelectionListener +class SaveDiskAction extends AbstractSaveAction implements DiskSelectionListener // -----------------------------------------------------------------------------------// { FormattedDisk disk; @@ -31,14 +30,18 @@ class SaveDiskAction extends DefaultAction implements DiskSelectionListener { if (disk == null) { - System.out.println ("No disk"); + JOptionPane.showMessageDialog (null, "No disk selected"); return; } - JFileChooser fileChooser = new JFileChooser (); - fileChooser.setDialogTitle ("Save converted disk"); - String name = disk.getName (); - fileChooser.setSelectedFile (new File (name + ".dsk")); + if (fileChooser == null) + { + fileChooser = new JFileChooser (); + fileChooser.setDialogTitle ("Save converted disk"); + } + + fileChooser.setSelectedFile (new File (disk.getName () + ".dsk")); + if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile (); @@ -50,6 +53,7 @@ class SaveDiskAction extends DefaultAction implements DiskSelectionListener catch (IOException e) { e.printStackTrace (); + JOptionPane.showMessageDialog (null, "Disk failed to save"); } } } diff --git a/src/com/bytezone/diskbrowser/gui/SaveFileAction.java b/src/com/bytezone/diskbrowser/gui/SaveFileAction.java index fb23da1..1609fa1 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveFileAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveFileAction.java @@ -10,10 +10,9 @@ import javax.swing.JFileChooser; import javax.swing.JOptionPane; import com.bytezone.diskbrowser.applefile.AppleFileSource; -import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// -class SaveFileAction extends DefaultAction implements FileSelectionListener +class SaveFileAction extends AbstractSaveAction implements FileSelectionListener //-----------------------------------------------------------------------------------// { AppleFileSource appleFileSource; @@ -32,12 +31,16 @@ class SaveFileAction extends DefaultAction implements FileSelectionListener { if (appleFileSource == null) { - System.out.println ("No data source"); + JOptionPane.showMessageDialog (null, "No file selected"); return; } - JFileChooser fileChooser = new JFileChooser (); - fileChooser.setDialogTitle ("Save File"); + if (fileChooser == null) + { + fileChooser = new JFileChooser (); + fileChooser.setDialogTitle ("Save File"); + } + fileChooser.setSelectedFile (new File (appleFileSource.getUniqueName () + ".bin")); if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) @@ -52,6 +55,7 @@ class SaveFileAction extends DefaultAction implements FileSelectionListener catch (IOException e) { e.printStackTrace (); + JOptionPane.showMessageDialog (null, "File failed to save"); } } } diff --git a/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java b/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java index 3be7da2..0b9288e 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java @@ -9,10 +9,8 @@ import java.nio.file.StandardOpenOption; import javax.swing.JFileChooser; import javax.swing.JOptionPane; -import com.bytezone.diskbrowser.utilities.DefaultAction; - // -----------------------------------------------------------------------------------// -class SaveSectorsAction extends DefaultAction implements SectorSelectionListener +class SaveSectorsAction extends AbstractSaveAction implements SectorSelectionListener // -----------------------------------------------------------------------------------// { SectorSelectedEvent event; @@ -32,26 +30,32 @@ class SaveSectorsAction extends DefaultAction implements SectorSelectionListener { if (event == null) { - System.out.println ("No sectors"); + JOptionPane.showMessageDialog (null, "No sectors selected"); return; } - byte[] buffer = event.getFormattedDisk ().getDisk ().readBlocks (event.getSectors ()); - JFileChooser fileChooser = new JFileChooser (); - fileChooser.setDialogTitle ("Save sectors"); - fileChooser.setSelectedFile (new File ("saved-" + buffer.length + ".bin")); + if (fileChooser == null) + { + fileChooser = new JFileChooser (); + fileChooser.setDialogTitle ("Save sectors"); + } + + fileChooser.setSelectedFile (new File ("savedSectors.bin")); if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile (); try { + byte[] buffer = + event.getFormattedDisk ().getDisk ().readBlocks (event.getSectors ()); Files.write (file.toPath (), buffer, StandardOpenOption.CREATE_NEW); JOptionPane.showMessageDialog (null, "File saved"); } catch (IOException e) { e.printStackTrace (); + JOptionPane.showMessageDialog (null, "File failed to save"); } } }