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

59 lines
2.0 KiB
Java
Raw Permalink 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;
2021-05-21 03:34:33 +00:00
import java.util.List;
2020-01-13 00:05:32 +00:00
import javax.swing.JFileChooser;
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"));
if (fileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION)
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);
}
}