2020-01-13 00:05:32 +00:00
|
|
|
package com.bytezone.diskbrowser.gui;
|
|
|
|
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.io.File;
|
2021-05-21 03:34:33 +00:00
|
|
|
import java.util.List;
|
2020-01-13 00:05:32 +00:00
|
|
|
|
|
|
|
import javax.swing.JOptionPane;
|
|
|
|
|
2021-05-21 03:34:33 +00:00
|
|
|
import com.bytezone.diskbrowser.disk.Disk;
|
|
|
|
import com.bytezone.diskbrowser.disk.DiskAddress;
|
|
|
|
|
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
|
|
|
{
|
2021-05-20 10:13:06 +00:00
|
|
|
super ("Save sectors...", "Save currently selected sectors", "Save 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-21 03:34:33 +00:00
|
|
|
// block 0 will not read when it is the only DiskAddress in the list
|
|
|
|
List<DiskAddress> blocks = event.getSectors ();
|
|
|
|
Disk disk = event.getFormattedDisk ().getDisk ();
|
|
|
|
byte[] buffer =
|
|
|
|
blocks.size () == 1 ? disk.readBlock (blocks.get (0)) : disk.readBlocks (blocks);
|
|
|
|
|
|
|
|
setSelectedFile (new File ("SavedSectors.bin"));
|
|
|
|
saveBuffer (buffer);
|
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);
|
|
|
|
}
|
|
|
|
}
|