package hirondelle.stocks.portfolio;
import javax.swing.*;
import java.awt.event.*;
import hirondelle.stocks.util.Args;
public final class EditSaver {
public EditSaver(Action aSaveAction, Action aSaveAsAction, JFrame aFrame) {
Args.checkForNull(aSaveAction);
Args.checkForNull(aSaveAsAction);
Args.checkForNull(aFrame);
fSaveAction = aSaveAction;
fSaveAsAction = aSaveAsAction;
fFrame = aFrame;
}
public void save(CurrentPortfolio aCurrentPortfolio, ActionEvent aEvent) {
if (!aCurrentPortfolio.getNeedsSave()) return;
if (!userWantsToSaveEdits(aCurrentPortfolio)) return;
if (aCurrentPortfolio.isUntitled()) {
fSaveAsAction.actionPerformed(aEvent);
}
else {
fSaveAction.actionPerformed(aEvent);
}
}
private Action fSaveAction;
private Action fSaveAsAction;
private JFrame fFrame;
private boolean userWantsToSaveEdits(CurrentPortfolio aCurrentPortfolio) {
StringBuilder message = new StringBuilder("Do you want to save the edits for the \"");
message.append(aCurrentPortfolio.getName());
message.append("\" portfolio?");
int result = JOptionPane.showConfirmDialog(
fFrame, message.toString(), "Confirm Save Edits", JOptionPane.YES_NO_OPTION
);
return (result == JOptionPane.YES_OPTION ? true : false);
}
}