3 import jalview.datamodel.AlignmentI;
4 import jalview.datamodel.SequenceI;
5 import jalview.gui.AlignViewport;
6 import jalview.gui.AlignmentPanel;
7 import jalview.gui.FeatureRenderer;
8 import jalview.gui.SequenceRenderer;
9 import jalview.json.binding.v1.BioJsAlignmentPojo;
10 import jalview.json.binding.v1.BioJsSeqPojo;
11 import jalview.util.MessageManager;
13 import java.io.BufferedReader;
14 import java.io.IOException;
15 import java.io.InputStreamReader;
16 import java.io.PrintWriter;
19 import com.json.JSONException;
21 public class BioJsHTMLOutput
23 private AlignViewport av;
25 private FeatureRenderer fr;
27 public BioJsHTMLOutput(AlignmentPanel ap, SequenceRenderer sr,
31 this.fr = new FeatureRenderer(ap);
32 fr.transferSettings(fr1);
36 private void exportAsBioJsHtml()
40 JalviewFileChooser jvFileChooser = getJalviewFileChooserOption();
41 int fileChooserOpt = jvFileChooser.showSaveDialog(null);
42 if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
44 jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
45 .getSelectedFile().getParent());
46 String selectedFile = jvFileChooser.getSelectedFile().getPath();
47 String generartedBioJs = generateBioJsAlignmentData(av
49 PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
51 out.print(generartedBioJs);
53 jalview.util.BrowserLauncher.openURL("file:///" + selectedFile);
55 } catch (Exception ex)
61 private JalviewFileChooser getJalviewFileChooserOption()
63 JalviewFileChooser chooser = new JalviewFileChooser(
64 jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
65 { "html" }, new String[]
66 { "HTML files" }, "HTML files");
67 chooser.setFileView(new JalviewFileView());
69 // TODO uncomment when supported by MassageManager
70 chooser.setDialogTitle(MessageManager
71 .getString("label.save_as_biojs_html"));
72 chooser.setDialogTitle("save as BioJs HTML");
73 chooser.setToolTipText(MessageManager.getString("action.save"));
78 private String generateBioJsAlignmentData(AlignmentI alignment)
79 throws IOException, JSONException
81 BioJsAlignmentPojo bjsAlignment = new BioJsAlignmentPojo();
83 for (SequenceI seq : alignment.getSequences())
85 StringBuilder name = new StringBuilder();
86 name.append(seq.getName()).append("/").append(seq.getStart())
87 .append("-").append(seq.getEnd());
88 bjsAlignment.getSeqs().add(
89 new BioJsSeqPojo(String.valueOf(++count), name.toString(),
90 seq.getSequenceAsString()));
93 String seqs = new com.json.JSONObject(bjsAlignment).getString("seqs");
94 // String bioJSTemplate = new String(
95 // java.nio.file.Files.readAllBytes(java.nio.file.Paths
96 // .get("resources/templates/BioJSTemplate.txt")));
97 String bioJSTemplate = getBioJsTemplateAsString(alignment);
99 return bioJSTemplate.replaceAll("#sequenceData#", seqs).replaceAll(
100 "#scheme#", "zappo");
104 public static String getBioJsTemplateAsString(AlignmentI bio)
107 StringBuilder sb = new StringBuilder();
108 URL url = bio.getClass().getResource(
109 "/templates/BioJSTemplate.txt");
114 BufferedReader reader = new BufferedReader(new InputStreamReader(
117 String lineSeparator = System.getProperty("line.separator");
118 while ((line = reader.readLine()) != null)
120 sb.append(line).append(lineSeparator);
122 } catch (Exception ex)
124 ex.printStackTrace();
128 return sb.toString();