2021-05-19 08:13:17 +00:00
|
|
|
package com.bytezone.diskbrowser.gui;
|
|
|
|
|
2022-07-30 23:21:52 +00:00
|
|
|
import java.awt.Toolkit;
|
2021-05-19 08:13:17 +00:00
|
|
|
import java.awt.event.ActionEvent;
|
2022-07-30 23:21:52 +00:00
|
|
|
import java.awt.event.KeyEvent;
|
2021-05-19 08:13:17 +00:00
|
|
|
import java.io.File;
|
|
|
|
|
2022-07-30 23:21:52 +00:00
|
|
|
import javax.swing.Action;
|
2022-07-30 21:13:59 +00:00
|
|
|
import javax.swing.JCheckBox;
|
|
|
|
import javax.swing.JFileChooser;
|
2021-05-19 08:13:17 +00:00
|
|
|
import javax.swing.JOptionPane;
|
2022-07-30 23:21:52 +00:00
|
|
|
import javax.swing.KeyStroke;
|
2021-05-19 08:13:17 +00:00
|
|
|
|
|
|
|
import com.bytezone.diskbrowser.applefile.AppleFileSource;
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------------//
|
2021-05-19 09:28:04 +00:00
|
|
|
class SaveFileAction extends AbstractSaveAction implements FileSelectionListener
|
2021-05-19 08:13:17 +00:00
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
{
|
|
|
|
AppleFileSource appleFileSource;
|
2022-07-30 21:13:59 +00:00
|
|
|
private JCheckBox formatted = new JCheckBox ("Formatted");
|
2021-05-19 08:13:17 +00:00
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------//
|
2021-05-19 08:19:55 +00:00
|
|
|
SaveFileAction ()
|
2021-05-19 08:13:17 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
{
|
2021-05-20 10:13:06 +00:00
|
|
|
super ("Save file...", "Save currently selected file", "Save File");
|
2022-07-30 21:13:59 +00:00
|
|
|
|
|
|
|
fileChooser.setAccessory (formatted);
|
2022-07-30 23:21:52 +00:00
|
|
|
int mask = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMaskEx ();
|
|
|
|
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke (KeyEvent.VK_S, mask));
|
2021-05-19 08:13:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
@Override
|
|
|
|
public void actionPerformed (ActionEvent evt)
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
{
|
|
|
|
if (appleFileSource == null)
|
|
|
|
{
|
2021-05-19 09:28:04 +00:00
|
|
|
JOptionPane.showMessageDialog (null, "No file selected");
|
2021-05-19 08:13:17 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2022-07-30 23:21:52 +00:00
|
|
|
if (formatted.isSelected ())
|
|
|
|
setSelectedFile (new File (appleFileSource.getUniqueName () + ".txt"));
|
|
|
|
else
|
|
|
|
setSelectedFile (new File (appleFileSource.getUniqueName () + ".bin"));
|
|
|
|
|
2022-07-30 21:13:59 +00:00
|
|
|
if (fileChooser.showSaveDialog (null) != JFileChooser.APPROVE_OPTION)
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (formatted.isSelected ())
|
|
|
|
saveBuffer (appleFileSource.getDataSource ().getText ().getBytes ());
|
|
|
|
else
|
|
|
|
saveBuffer (appleFileSource.getDataSource ().getBuffer ());
|
2021-05-19 08:13:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------//
|
2021-05-19 09:07:45 +00:00
|
|
|
@Override
|
|
|
|
public void fileSelected (FileSelectedEvent event)
|
2021-05-19 08:13:17 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
{
|
2021-05-19 09:07:45 +00:00
|
|
|
this.appleFileSource = event.appleFileSource;
|
2022-07-30 21:13:59 +00:00
|
|
|
|
|
|
|
setEnabled (appleFileSource != null && appleFileSource.getDataSource () != null
|
|
|
|
&& appleFileSource.getDataSource ().getBuffer () != null);
|
2021-05-19 08:13:17 +00:00
|
|
|
}
|
|
|
|
}
|