3 import jalview.exceptions.NoFileSelectedException;
4 import jalview.gui.AlignViewport;
5 import jalview.gui.AlignmentPanel;
6 import jalview.gui.FeatureRenderer;
7 import jalview.util.MessageManager;
9 import java.io.BufferedReader;
10 import java.io.IOException;
11 import java.io.InputStreamReader;
12 import java.io.PrintWriter;
15 public class BioJsHTMLOutput
17 private AlignViewport av;
20 public BioJsHTMLOutput(AlignmentPanel ap,
28 av.setFeatureRenderer(new FeatureRenderer(ap));
30 exportJalviewAlignmentAsBioJsHtmlFile();
33 private void exportJalviewAlignmentAsBioJsHtmlFile()
37 String outputFile = getOutputFile();
38 String jalviewAlignmentJson = JSONFile.getJSONData(av);
39 String bioJSTemplateString = getBioJsTemplateAsString(this);
40 String generatedBioJsWithJalviewAlignmentAsJson = bioJSTemplateString
42 "#sequenceData#", jalviewAlignmentJson)
45 PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
47 out.print(generatedBioJsWithJalviewAlignmentAsJson);
50 jalview.util.BrowserLauncher.openURL("file:///" + outputFile);
51 } catch (NoFileSelectedException ex)
53 // do noting if no file was selected
60 public String getOutputFile() throws NoFileSelectedException
62 String selectedFile = null;
63 JalviewFileChooser jvFileChooser = new JalviewFileChooser(
64 jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
65 { "html" }, new String[]
66 { "HTML files" }, "HTML files");
67 jvFileChooser.setFileView(new JalviewFileView());
69 // TODO uncomment when supported by MassageManager
70 jvFileChooser.setDialogTitle(MessageManager
71 .getString("label.save_as_biojs_html"));
72 jvFileChooser.setDialogTitle("save as BioJs HTML");
73 jvFileChooser.setToolTipText(MessageManager.getString("action.save"));
75 int fileChooserOpt = jvFileChooser.showSaveDialog(null);
76 if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
78 jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
79 .getSelectedFile().getParent());
80 selectedFile = jvFileChooser.getSelectedFile().getPath();
84 throw new NoFileSelectedException("No file was selected.");
90 public static String getBioJsTemplateAsString(Object currentObj)
93 InputStreamReader isReader = null;
94 BufferedReader buffReader = null;
95 StringBuilder sb = new StringBuilder();
96 URL url = currentObj.getClass().getResource(
97 "/templates/BioJSTemplate.txt");
102 isReader = new InputStreamReader(url.openStream());
103 buffReader = new BufferedReader(isReader);
105 String lineSeparator = System.getProperty("line.separator");
106 while ((line = buffReader.readLine()) != null)
108 sb.append(line).append(lineSeparator);
111 } catch (Exception ex)
113 ex.printStackTrace();
116 if (isReader != null)
121 if (buffReader != null)
127 return sb.toString();