From 13647213c63d1e69d4573b1250c7d9ab13710f60 Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Thu, 20 May 2021 20:13:06 +1000 Subject: [PATCH] refactoring --- .../diskbrowser/gui/AbstractSaveAction.java | 65 ++++++++++++++++++- .../diskbrowser/gui/SaveDiskAction.java | 41 ++++-------- .../diskbrowser/gui/SaveFileAction.java | 32 +-------- .../diskbrowser/gui/SaveSectorsAction.java | 49 ++++++-------- 4 files changed, 98 insertions(+), 89 deletions(-) diff --git a/src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java b/src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java index 7a670c6..17b7d1a 100644 --- a/src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java +++ b/src/com/bytezone/diskbrowser/gui/AbstractSaveAction.java @@ -1,6 +1,13 @@ package com.bytezone.diskbrowser.gui; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; + import javax.swing.JFileChooser; +import javax.swing.JOptionPane; import com.bytezone.diskbrowser.utilities.DefaultAction; @@ -9,12 +16,68 @@ public abstract class AbstractSaveAction extends DefaultAction // -----------------------------------------------------------------------------------// { JFileChooser fileChooser; + String title; // ---------------------------------------------------------------------------------// - public AbstractSaveAction (String text, String tip) + public AbstractSaveAction (String text, String tip, String title) // ---------------------------------------------------------------------------------// { super (text, tip); + this.title = title; } + // ---------------------------------------------------------------------------------// + void setSelectedFile (File file) + // ---------------------------------------------------------------------------------// + { + if (fileChooser == null) + { + fileChooser = new JFileChooser (); + fileChooser.setDialogTitle (title); + } + + fileChooser.setSelectedFile (file); + } + + // ---------------------------------------------------------------------------------// + void saveBuffer (byte[] buffer) + // ---------------------------------------------------------------------------------// + { + if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) + { + File file = fileChooser.getSelectedFile (); + try + { + Files.write (file.toPath (), buffer, StandardOpenOption.CREATE_NEW); + JOptionPane.showMessageDialog (null, + String.format ("File %s saved", file.getName ())); + } + catch (IOException e) + { + e.printStackTrace (); + JOptionPane.showMessageDialog (null, "File failed to save"); + } + } + } + + // ---------------------------------------------------------------------------------// + void saveFile (Path sourcePath) + // ---------------------------------------------------------------------------------// + { + if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) + { + File file = fileChooser.getSelectedFile (); + try + { + Files.copy (sourcePath, file.toPath ()); + JOptionPane.showMessageDialog (null, + String.format ("File %s saved", file.getName ())); + } + catch (IOException e) + { + e.printStackTrace (); + JOptionPane.showMessageDialog (null, "File failed to save"); + } + } + } } diff --git a/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java b/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java index dc5f810..1320b44 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveDiskAction.java @@ -2,25 +2,23 @@ package com.bytezone.diskbrowser.gui; import java.awt.event.ActionEvent; import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import javax.swing.JFileChooser; import javax.swing.JOptionPane; +import com.bytezone.diskbrowser.disk.Disk; import com.bytezone.diskbrowser.disk.FormattedDisk; // -----------------------------------------------------------------------------------// class SaveDiskAction extends AbstractSaveAction implements DiskSelectionListener // -----------------------------------------------------------------------------------// { - FormattedDisk disk; + FormattedDisk formattedDisk; // ---------------------------------------------------------------------------------// SaveDiskAction () // ---------------------------------------------------------------------------------// { - super ("Save converted disk...", "Save converted disk"); + super ("Save converted disk...", "Save converted disk", "Save converted disk"); } // ---------------------------------------------------------------------------------// @@ -28,35 +26,18 @@ class SaveDiskAction extends AbstractSaveAction implements DiskSelectionListener public void actionPerformed (ActionEvent evt) // ---------------------------------------------------------------------------------// { - if (disk == null) + if (formattedDisk == null) { JOptionPane.showMessageDialog (null, "No disk selected"); return; } - if (fileChooser == null) - { - fileChooser = new JFileChooser (); - fileChooser.setDialogTitle ("Save converted disk"); - } + Disk disk = formattedDisk.getDisk (); + int blocks = disk.getTotalBlocks (); + String suffix = blocks <= 560 ? ".dsk" : ".hdv"; - fileChooser.setSelectedFile (new File (disk.getName () + ".dsk")); - - if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) - { - File file = fileChooser.getSelectedFile (); - try - { - Files.copy (disk.getDisk ().getFile ().toPath (), file.toPath ()); - JOptionPane.showMessageDialog (null, - String.format ("File %s saved", file.getName ())); - } - catch (IOException e) - { - e.printStackTrace (); - JOptionPane.showMessageDialog (null, "Disk failed to save"); - } - } + setSelectedFile (new File (formattedDisk.getName () + suffix)); + saveFile (disk.getFile ().toPath ()); } // ---------------------------------------------------------------------------------// @@ -64,7 +45,7 @@ class SaveDiskAction extends AbstractSaveAction implements DiskSelectionListener public void diskSelected (DiskSelectedEvent event) // ---------------------------------------------------------------------------------// { - this.disk = event.getFormattedDisk (); - setEnabled (disk != null && disk.isTempDisk ()); + formattedDisk = event.getFormattedDisk (); + setEnabled (formattedDisk != null && formattedDisk.isTempDisk ()); } } diff --git a/src/com/bytezone/diskbrowser/gui/SaveFileAction.java b/src/com/bytezone/diskbrowser/gui/SaveFileAction.java index c41e5cd..c1bf597 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveFileAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveFileAction.java @@ -2,11 +2,7 @@ package com.bytezone.diskbrowser.gui; import java.awt.event.ActionEvent; import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; -import javax.swing.JFileChooser; import javax.swing.JOptionPane; import com.bytezone.diskbrowser.applefile.AppleFileSource; @@ -21,7 +17,7 @@ class SaveFileAction extends AbstractSaveAction implements FileSelectionListener SaveFileAction () // ---------------------------------------------------------------------------------// { - super ("Save file...", "Save currently selected file"); + super ("Save file...", "Save currently selected file", "Save File"); } // ---------------------------------------------------------------------------------// @@ -35,30 +31,8 @@ class SaveFileAction extends AbstractSaveAction implements FileSelectionListener return; } - if (fileChooser == null) - { - fileChooser = new JFileChooser (); - fileChooser.setDialogTitle ("Save File"); - } - - fileChooser.setSelectedFile (new File (appleFileSource.getUniqueName () + ".bin")); - - if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) - { - File file = fileChooser.getSelectedFile (); - try - { - Files.write (file.toPath (), appleFileSource.getDataSource ().getBuffer (), - StandardOpenOption.CREATE_NEW); - JOptionPane.showMessageDialog (null, - String.format ("File %s saved", file.getName ())); - } - catch (IOException e) - { - e.printStackTrace (); - JOptionPane.showMessageDialog (null, "File failed to save"); - } - } + setSelectedFile (new File (appleFileSource.getUniqueName () + ".bin")); + saveBuffer (appleFileSource.getDataSource ().getBuffer ()); } // ---------------------------------------------------------------------------------// diff --git a/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java b/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java index 12de740..0487a71 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java @@ -2,11 +2,7 @@ package com.bytezone.diskbrowser.gui; import java.awt.event.ActionEvent; import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; -import javax.swing.JFileChooser; import javax.swing.JOptionPane; // -----------------------------------------------------------------------------------// @@ -19,7 +15,7 @@ class SaveSectorsAction extends AbstractSaveAction implements SectorSelectionLis SaveSectorsAction () // ---------------------------------------------------------------------------------// { - super ("Save sectors...", "Save currently selected sectors"); + super ("Save sectors...", "Save currently selected sectors", "Save sectors"); this.setEnabled (false); } @@ -34,31 +30,26 @@ class SaveSectorsAction extends AbstractSaveAction implements SectorSelectionLis return; } - if (fileChooser == null) - { - fileChooser = new JFileChooser (); - fileChooser.setDialogTitle ("Save sectors"); - } + setSelectedFile (new File ("savedSectors.bin")); + saveBuffer (event.getFormattedDisk ().getDisk ().readBlocks (event.getSectors ())); - 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, - String.format ("File %s saved", file.getName ())); - } - catch (IOException e) - { - e.printStackTrace (); - JOptionPane.showMessageDialog (null, "File failed to save"); - } - } + // 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, + // String.format ("File %s saved", file.getName ())); + // } + // catch (IOException e) + // { + // e.printStackTrace (); + // JOptionPane.showMessageDialog (null, "File failed to save"); + // } + // } } // ---------------------------------------------------------------------------------//