// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/

package graphtea.samples.ui.texteditor.myplugin.actions;

import graphtea.platform.core.BlackBoard;
import graphtea.platform.core.exception.ExceptionHandler;
import graphtea.ui.extension.UIActionExtension;

import javax.swing.*;
import java.io.File;
import java.io.IOException;

public class SaveAction implements UIActionExtension {

    public void actionPerformed(BlackBoard blackBoard) {
        String path = blackBoard.getData("last file");

        if (path == null || path.isEmpty()) {
            JFileChooser jfc = new JFileChooser();
            jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
            jfc.setMultiSelectionEnabled(false);
            jfc.setDialogType(JFileChooser.SAVE_DIALOG);
            int ret = jfc.showSaveDialog(null);
            if (ret != JFileChooser.APPROVE_OPTION) {
                return;
            }
            path = jfc.getSelectedFile().getAbsolutePath();
        }

        //fetch the text area (body of application) from blackboard
        JTextArea editor = Utils.getMainEditor(blackBoard);

        try {
            File f = new File(path);
            if (!f.exists()) {
                f.createNewFile();
            }
            ReadWriteTextFile.setContents(f, editor.getText());
        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Error while saving file! <br> " + e.getMessage(), "Save Error", JOptionPane.ERROR_MESSAGE);
            ExceptionHandler.catchException(e);
        }
    }

}
