tidying save actions

This commit is contained in:
Denis Molony 2021-05-19 19:28:04 +10:00
parent 45a97d2959
commit 438dd9dd4c
4 changed files with 48 additions and 20 deletions

View File

@ -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);
}
}

View File

@ -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");
}
}
}

View File

@ -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");
}
}
}

View File

@ -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");
}
}
}