protected boolean save(char[][] matrix) {
      BufferedWriter writer = null;
      boolean saved = false;
      File file = listener.getSaveFile();
      try {
         if (file.getName().endsWith(".nono")) {
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
         } else {
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file + ".nono")));
         }
         String nono = riddle.getNono();
         if (nono == null) {
            nono = createNono(riddle);
         }
         if (nono.contains("content")) {
            String[] nonoSplit = nono.split("content");
            nono = nonoSplit[0];
         }
         writer.write(nono);
         writer.write(System.getProperty("line.separator") + "content" + System.getProperty("line.separator"));
         for (int row = 0; row < riddle.getHeight(); row++) {
            String rowString = "";
            for (int column = 0; column < riddle.getWidth(); column++) {
               rowString += matrix[row][column];
            }
            writer.write(rowString + System.getProperty("line.separator"));
         }
         saved = true;
      } catch (IOException e) {

      } finally {
         try {
            if (writer != null)
               writer.close();
         } catch (IOException e) {

         }
      }
      return saved;
   }