3 import static java.nio.file.Files.readAllBytes;
4 import static java.nio.file.Paths.get;
5 import jalview.datamodel.AlignmentI;
6 import jalview.datamodel.SequenceI;
7 import jalview.gui.AlignViewport;
8 import jalview.gui.AlignmentPanel;
9 import jalview.gui.FeatureRenderer;
10 import jalview.gui.SequenceRenderer;
11 import jalview.util.MessageManager;
13 import java.io.IOException;
14 import java.io.PrintWriter;
16 public class BioJsHTMLOutput
18 private AlignViewport av;
19 private FeatureRenderer fr;
21 public BioJsHTMLOutput(AlignmentPanel ap, SequenceRenderer sr,
24 System.out.println("BioJs working as expected so far");
27 this.fr = new FeatureRenderer(ap);
28 fr.transferSettings(fr1);
32 private void exportAsBioJsHtml()
36 JalviewFileChooser jvFileChooser = getJalviewFileChooserOption();
37 int fileChooserOpt = jvFileChooser.showSaveDialog(null);
38 if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
40 jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
41 .getSelectedFile().getParent());
42 String selectedFile = jvFileChooser.getSelectedFile().getPath();
43 String generartedBioJs = generateBioJsAlignmentData(av
45 PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
47 out.print(generartedBioJs);
49 jalview.util.BrowserLauncher.openURL("file:///" + selectedFile);
51 } catch (Exception ex)
57 private JalviewFileChooser getJalviewFileChooserOption()
59 JalviewFileChooser chooser = new JalviewFileChooser(
60 jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
61 { "html" }, new String[]
62 { "HTML files" }, "HTML files");
64 chooser.setFileView(new JalviewFileView());
65 // TODO uncomment when supported by MassageManager
66 // chooser.setDialogTitle(MessageManager.getString("label.save_as_biojs_html"));
67 chooser.setDialogTitle("save as BioJs HTML");
68 chooser.setToolTipText(MessageManager.getString("action.save"));
73 private String generateBioJsAlignmentData(AlignmentI alignment)
76 StringBuilder bioJsData = new StringBuilder();
78 for (SequenceI seq : alignment.getSequences())
80 bioJsData.append("seqOnFly.push({seq:'" + seq.getSequenceAsString()
81 + "', name:'" + seq.getName() + "', id:" + ++count + "});");
83 String bioJSTemplate = new String(
84 readAllBytes(get("resources/templates/BioJSTemplate.txt")));
86 return bioJSTemplate.replaceAll("#sequenceData#", bioJsData.toString());