package hirondelle.stocks.file;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import hirondelle.stocks.portfolio.PortfolioDAO;
import hirondelle.stocks.portfolio.CurrentPortfolio;
import hirondelle.stocks.util.ui.UiUtil;
import java.util.logging.Logger;
import hirondelle.stocks.util.Util;
public final class FileSaveAction extends AbstractAction implements Observer {
public FileSaveAction(CurrentPortfolio aCurrentPortfolio) {
super("Save", UiUtil.getImageIcon("/toolbarButtonGraphics/general/Save"));
fCurrentPortfolio = aCurrentPortfolio;
fCurrentPortfolio.addObserver(this);
putValue(SHORT_DESCRIPTION, "Save edits to the current portfolio");
putValue(
ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)
);
putValue(LONG_DESCRIPTION, "Save edits to the current portfolio");
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_S));
}
@Override public void actionPerformed(ActionEvent e) {
fLogger.info("Saving edits to the current portfolio.");
PortfolioDAO portfolioDAO = new PortfolioDAO();
portfolioDAO.save(fCurrentPortfolio.getPortfolio());
fCurrentPortfolio.setNeedsSave(false);
fCurrentPortfolio.notifyObservers();
}
@Override public void update(Observable aPublisher, Object aData) {
setEnabled(fCurrentPortfolio.getNeedsSave() && !fCurrentPortfolio.isUntitled());
}
private CurrentPortfolio fCurrentPortfolio;
private static final Logger fLogger = Util.getLogger(FileSaveAction.class);
}