private boolean saveStory() {

        boolean XMLProject = true; // make a proj file

        JFileChooser j = new JFileChooser();
        j.setSelectedFile(new File(map.getStory().getName()));
        j.setDialogTitle("Select a location to save the project");
        j.setAcceptAllFileFilterUsed(false);
        j.setFileFilter(new ExtensionFileFilter(
                                    new String[]{".PROJ"},
                                    "*.iStory.proj"));
        int dialog = j.showSaveDialog(this);

        // Catch actions of the File Chooser Dialog Window
        if (dialog == JFileChooser.APPROVE_OPTION) {

            try {
                String XMLcontent = this.story.printXML(XMLProject);
                this.story.setPrinted(false);
                // Add no linked nodes at the end
                XMLcontent += this.map.printNodeXML();

                String filePathName = j.getSelectedFile().toString();

                // Add ".iStory.proj  at the end of the string (only if it not exists)
                if (!filePathName.endsWith(".iStory.proj")) {
                    filePathName += ".iStory.proj";
                }

                /* XML */

                // Create an XML-file
                File projectFile = new File(filePathName);

                // Check if the iStory file already exists
                boolean exists = projectFile.createNewFile();
                if (!exists) {
                    // Confirm the save
                    int option = JOptionPane.showConfirmDialog(null,
                            "There is already a file with the same name in the selected folder. \n "
                            + "Do you want to overwrite this file?",
                            "File already exists",
                            JOptionPane.YES_NO_CANCEL_OPTION,
                            JOptionPane.WARNING_MESSAGE);
                    if (option == JOptionPane.YES_OPTION) {
                        projectFile.delete();
                    } else if (option == JOptionPane.NO_OPTION) {
                        saveStory();
                        return false;
                    } else if (option == JOptionPane.CANCEL_OPTION || option == JOptionPane.CLOSED_OPTION) {
                        return false;
                    }
                }
                FileWriter fstream = new FileWriter(filePathName);
                BufferedWriter out = new BufferedWriter(fstream);
                out.write(XMLcontent);
                out.close();
                JOptionPane.showMessageDialog(
                        Main.this,
                        "The project has been saved",
                        "Saved succes..",
                        JOptionPane.INFORMATION_MESSAGE);
                // Set the changed to false to be able to close the program
                story.setSomethingChanged(false);
                return true;
            } catch (IOException ioe) {
                LOGGER.log(Level.SEVERE, "Input- Output exception: {0}", ioe);
                return false;
            }
        }
        return false;
    }