* Bug #14468 fixed - Scinotes was unable to export to HTML. 36/17936/2
Clément DAVID [Wed, 16 Mar 2016 13:54:20 +0000 (14:54 +0100)]
Change-Id: I8eae806da3cd54f0af734c5114df8aa6220a6e4a

scilab/CHANGES
scilab/modules/gui/src/java/org/scilab/modules/gui/utils/SciFileFilter.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/SciNotes.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/ExportAction.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/utils/CodeExporter.java

index 953d014..f66c82e 100644 (file)
@@ -353,6 +353,8 @@ In 6.0.0:
 
 * Bug #14434 fixed - PlotSparse did not work anymore.
 
+* Bug #14468 fixed - Scinotes was unable to export to HTML.
+
 In 6.0.0 beta-1:
 
 * Bug #6057 fixed  - trailing space after minus sign has been removed from the display of values
index 8cf1d16..8f1ef54 100644 (file)
@@ -79,6 +79,8 @@ public class SciFileFilter extends FileFilter {
                 description = Messages.gettext("All PNG image files") +  "(*.png)";
             } else if (fileMask.equals("*.rtf")) {
                 description = Messages.gettext("All RTF (Rich Text Format) files") +  "(*.rtf)";
+            } else if (fileMask.equals("*.html")) {
+                description = Messages.gettext("All HTML files") +  "(*.html)";
             } else if (fileMask.equals("*.*")) {
                 description = Messages.gettext("All files") +  "(*.*)";
             } else {
index ea1f906..f5d58b7 100644 (file)
@@ -1260,7 +1260,7 @@ public class SciNotes extends SwingScilabDockablePanel {
         fileChooser.addChoosableFileFilter(allFilter);
         fileChooser.addChoosableFileFilter(allScilabFilter);
 
-        String name = getTextPane().getName();
+        String name = initialDirectoryPath;
         File tempFile = new File(name);
 
         // Select default file type
index 3114ab1..40f44e1 100644 (file)
@@ -36,7 +36,6 @@ import org.scilab.modules.jvm.LoadClassPath;
 import org.scilab.modules.localization.Messages;
 import org.scilab.modules.scinotes.SciNotes;
 import org.scilab.modules.scinotes.ScilabDocument;
-import org.scilab.modules.scinotes.ScilabEditorPane;
 import org.scilab.modules.scinotes.utils.CodeExporter;
 import org.scilab.modules.scinotes.utils.SciNotesMessages;
 
@@ -78,10 +77,11 @@ public class ExportAction extends DefaultAction {
             initialDirectoryPath =  ConfigManager.getLastOpenedDirectory();
         }
 
-        SciFileFilter pdfFilter = new SciFileFilter("*.pdf", null, 0);
-        SciFileFilter psFilter = new SciFileFilter("*.ps", null, 1);
-        SciFileFilter epsFilter = new SciFileFilter("*.eps", null, 2);
-        SciFileFilter rtfFilter = new SciFileFilter("*.rtf", null, 3);
+        SciFileFilter htmlFilter = new SciFileFilter("*.html", null, 0);
+        SciFileFilter pdfFilter = new SciFileFilter("*.pdf", null, 1);
+        SciFileFilter psFilter = new SciFileFilter("*.ps", null, 2);
+        SciFileFilter epsFilter = new SciFileFilter("*.eps", null, 3);
+        SciFileFilter rtfFilter = new SciFileFilter("*.rtf", null, 4);
 
         final SwingScilabFileChooser fileChooser = ((SwingScilabFileChooser) ScilabFileChooser.createFileChooser().getAsSimpleFileChooser());
 
@@ -92,13 +92,14 @@ public class ExportAction extends DefaultAction {
         fileChooser.setApproveButtonText(Messages.gettext(title));
 
         // order is also important here
+        fileChooser.addChoosableFileFilter(htmlFilter);
         fileChooser.addChoosableFileFilter(pdfFilter);
         fileChooser.addChoosableFileFilter(psFilter);
         fileChooser.addChoosableFileFilter(epsFilter);
         fileChooser.addChoosableFileFilter(rtfFilter);
 
         //select default file type
-        fileChooser.setFileFilter(pdfFilter);
+        fileChooser.setFileFilter(htmlFilter);
         fileChooser.setTitle(title);
 
         fileChooser.addPropertyChangeListener(JFileChooser.FILE_FILTER_CHANGED_PROPERTY, new PropertyChangeListener() {
@@ -172,7 +173,10 @@ public class ExportAction extends DefaultAction {
             }
 
             if (extension == null) {
-                if (fileChooser.getFileFilter() == pdfFilter) {
+                if (fileChooser.getFileFilter() == htmlFilter) {
+                    extension = "html";
+                    type = "text/html";
+                } else if (fileChooser.getFileFilter() == pdfFilter) {
                     extension = "pdf";
                     type = CodeExporter.PDF;
                 } else if (fileChooser.getFileFilter() == psFilter) {
@@ -189,7 +193,9 @@ public class ExportAction extends DefaultAction {
                     type = null;
                 }
             } else {
-                if (extension.equalsIgnoreCase("pdf")) {
+                if (extension.equalsIgnoreCase("html")) {
+                    type = "text/html";
+                } else if (extension.equalsIgnoreCase("pdf")) {
                     type = CodeExporter.PDF;
                 } else if (extension.equalsIgnoreCase("ps")) {
                     type = CodeExporter.PS;
index b81c09a..faf0eaf 100644 (file)
@@ -22,6 +22,11 @@ import java.io.OutputStream;
 import java.io.StringReader;
 
 import java.awt.print.PageFormat;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.xml.transform.Result;
 import javax.xml.transform.Source;
@@ -42,6 +47,7 @@ import org.apache.fop.apps.FopFactory;
 import org.apache.fop.apps.Fop;
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.MimeConstants;
+import org.scilab.modules.helptools.scilab.HTMLWithStyleScilabCodeHandler;
 
 /**
  * Code converter Class
@@ -104,8 +110,21 @@ public class CodeExporter extends FOCodeConverter {
      * @param format the page format
      */
     public static void convert(ScilabEditorPane pane, String fileName, String type, PageFormat format) {
-        CodeExporter exporter = new CodeExporter(pane);
-        exporter.convert(((ScilabDocument) pane.getDocument()).getText(), pane.getXln().getLineNumber(), fileName, type, pane.getShortName(), format);
+
+        if ("text/html".equals(type)) {
+            try {
+                // HTML is hardcoded to export only a file
+                HTMLWithStyleScilabCodeHandler codeHandler = new HTMLWithStyleScilabCodeHandler(Collections.emptySet(), Collections.emptySet());
+                codeHandler.convert(new StringReader(((ScilabDocument) pane.getDocument()).getText()), new FileWriter(fileName));
+            } catch (IOException e) {
+                System.err.println(SciNotesMessages.EXPORTERROR + ":");
+                e.printStackTrace();
+            }
+        } else {
+            // let's FOP convert the mimetype
+            CodeExporter exporter = new CodeExporter(pane);
+            exporter.convert(((ScilabDocument) pane.getDocument()).getText(), pane.getXln().getLineNumber(), fileName, type, pane.getShortName(), format);
+        }
     }
 
     /**