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.json.binding.v1.BioJsAlignmentPojo;
12 import jalview.json.binding.v1.BioJsSeqPojo;
13 import jalview.util.MessageManager;
15 import java.io.IOException;
16 import java.io.PrintWriter;
18 import org.jsoup.Jsoup;
19 import org.jsoup.nodes.Document;
20 import org.jsoup.nodes.Element;
22 import com.json.JSONException;
23 import com.json.JSONObject;
25 public class BioJsHTMLOutput
27 private AlignViewport av;
28 private FeatureRenderer fr;
30 public BioJsHTMLOutput(AlignmentPanel ap, SequenceRenderer sr,
35 this.fr = new FeatureRenderer(ap);
36 fr.transferSettings(fr1);
40 private void exportAsBioJsHtml()
44 JalviewFileChooser jvFileChooser = getJalviewFileChooserOption();
45 int fileChooserOpt = jvFileChooser.showSaveDialog(null);
46 if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
48 jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
49 .getSelectedFile().getParent());
50 String selectedFile = jvFileChooser.getSelectedFile().getPath();
51 String generartedBioJs = generateBioJsAlignmentData(av
53 PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
55 out.print(generartedBioJs);
57 jalview.util.BrowserLauncher.openURL("file:///" + selectedFile);
59 } catch (Exception ex)
65 private JalviewFileChooser getJalviewFileChooserOption()
67 JalviewFileChooser chooser = new JalviewFileChooser(
68 jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
69 { "html" }, new String[]
70 { "HTML files" }, "HTML files");
72 chooser.setFileView(new JalviewFileView());
73 // TODO uncomment when supported by MassageManager
74 // chooser.setDialogTitle(MessageManager.getString("label.save_as_biojs_html"));
75 chooser.setDialogTitle("save as BioJs HTML");
76 chooser.setToolTipText(MessageManager.getString("action.save"));
81 private String generateBioJsAlignmentData(AlignmentI alignment)
82 throws IOException, JSONException
84 BioJsAlignmentPojo bjsAlignment = new BioJsAlignmentPojo();
87 for (SequenceI seq : alignment.getSequences())
89 bjsAlignment.getSeqs().add(
90 new BioJsSeqPojo(String.valueOf(++count), seq.getName(), seq
91 .getSequenceAsString()));
94 String seqs = new JSONObject(bjsAlignment).getString("seqs");
95 String bioJSTemplate = new String(
96 readAllBytes(get("resources/templates/BioJSTemplate.txt")));
98 return bioJSTemplate.replaceAll("#sequenceData#", seqs);
101 public static void main(String[] args) throws IOException
103 Document doc = Jsoup.parse(new String(
104 readAllBytes(get("resources/templates/BioJSTemplate.txt"))));
106 Element content = doc.getElementById("seqData");
107 System.out.println(content.val());