dmolony-DiskBrowser/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java

73 lines
2.3 KiB
Java
Raw Normal View History

2020-01-13 00:05:32 +00:00
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;
2020-02-08 22:20:08 +00:00
// -----------------------------------------------------------------------------------//
2021-05-19 09:28:04 +00:00
class SaveSectorsAction extends AbstractSaveAction implements SectorSelectionListener
2020-02-08 22:20:08 +00:00
// -----------------------------------------------------------------------------------//
2020-01-13 00:05:32 +00:00
{
SectorSelectedEvent event;
2020-02-08 22:20:08 +00:00
// ---------------------------------------------------------------------------------//
SaveSectorsAction ()
// ---------------------------------------------------------------------------------//
2020-01-13 00:05:32 +00:00
{
super ("Save sectors...", "Save currently selected sectors");
2020-01-13 00:05:32 +00:00
this.setEnabled (false);
}
2020-02-08 22:20:08 +00:00
// ---------------------------------------------------------------------------------//
2020-01-13 00:05:32 +00:00
@Override
public void actionPerformed (ActionEvent evt)
2020-02-08 22:20:08 +00:00
// ---------------------------------------------------------------------------------//
2020-01-13 00:05:32 +00:00
{
if (event == null)
{
2021-05-19 09:28:04 +00:00
JOptionPane.showMessageDialog (null, "No sectors selected");
2020-01-13 00:05:32 +00:00
return;
}
2021-05-19 09:28:04 +00:00
if (fileChooser == null)
{
fileChooser = new JFileChooser ();
fileChooser.setDialogTitle ("Save sectors");
}
fileChooser.setSelectedFile (new File ("savedSectors.bin"));
2021-04-15 07:27:20 +00:00
2020-01-13 00:05:32 +00:00
if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION)
{
File file = fileChooser.getSelectedFile ();
try
{
2021-05-19 09:28:04 +00:00
byte[] buffer =
event.getFormattedDisk ().getDisk ().readBlocks (event.getSectors ());
2020-01-13 00:05:32 +00:00
Files.write (file.toPath (), buffer, StandardOpenOption.CREATE_NEW);
2021-05-20 02:44:40 +00:00
JOptionPane.showMessageDialog (null,
String.format ("File %s saved", file.getName ()));
2020-01-13 00:05:32 +00:00
}
catch (IOException e)
{
e.printStackTrace ();
2021-05-19 09:28:04 +00:00
JOptionPane.showMessageDialog (null, "File failed to save");
2020-01-13 00:05:32 +00:00
}
}
}
2020-02-08 22:20:08 +00:00
// ---------------------------------------------------------------------------------//
2020-01-13 00:05:32 +00:00
@Override
public void sectorSelected (SectorSelectedEvent event)
2020-02-08 22:20:08 +00:00
// ---------------------------------------------------------------------------------//
2020-01-13 00:05:32 +00:00
{
this.event = event;
this.setEnabled (true);
}
}