package jalview.io;
-import static java.nio.file.Files.readAllBytes;
-import static java.nio.file.Paths.get;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignViewport;
import jalview.json.binding.v1.BioJsSeqPojo;
import jalview.util.MessageManager;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.PrintWriter;
-
-import org.json.simple.parser.ParseException;
+import java.net.URL;
import com.json.JSONException;
-public class BioJsHTMLOutput {
- private AlignViewport av;
- private FeatureRenderer fr;
-
- public BioJsHTMLOutput(AlignmentPanel ap, SequenceRenderer sr, FeatureRenderer fr1) {
- this.av = ap.av;
- this.fr = new FeatureRenderer(ap);
- fr.transferSettings(fr1);
- exportAsBioJsHtml();
- }
-
- private void exportAsBioJsHtml() {
- try {
- JalviewFileChooser jvFileChooser = getJalviewFileChooserOption();
- int fileChooserOpt = jvFileChooser.showSaveDialog(null);
- if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION) {
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser.getSelectedFile().getParent());
- String selectedFile = jvFileChooser.getSelectedFile().getPath();
- String generartedBioJs = generateBioJsAlignmentData(av.getAlignment());
- PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(selectedFile));
- out.print(generartedBioJs);
- out.close();
- jalview.util.BrowserLauncher.openURL("file:///" + selectedFile);
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
- private JalviewFileChooser getJalviewFileChooserOption() {
- JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[] { "html" }, new String[] { "HTML files" }, "HTML files");
- chooser.setFileView(new JalviewFileView());
-
- // TODO uncomment when supported by MassageManager
- chooser.setDialogTitle(MessageManager.getString("label.save_as_biojs_html"));
- chooser.setDialogTitle("save as BioJs HTML");
- chooser.setToolTipText(MessageManager.getString("action.save"));
-
- return chooser;
- }
-
- private String generateBioJsAlignmentData(AlignmentI alignment) throws IOException, JSONException {
- BioJsAlignmentPojo bjsAlignment = new BioJsAlignmentPojo();
- int count = 0;
- for (SequenceI seq : alignment.getSequences()) {
- StringBuilder name = new StringBuilder();
- name.append(seq.getName()).append("/").append(seq.getStart()).append("-").append(seq.getEnd());
- bjsAlignment.getSeqs().add(new BioJsSeqPojo(String.valueOf(++count), name.toString(), seq.getSequenceAsString()));
- }
-
- // Taylor
- // av.getGlobalColourScheme().;
- String seqs = new com.json.JSONObject(bjsAlignment).getString("seqs");
- String bioJSTemplate = new String(readAllBytes(get("resources/templates/BioJSTemplate.txt")));
-
- // av.get
- // fr.
- return bioJSTemplate.replaceAll("#sequenceData#", seqs).replaceAll("#scheme#", "zappo");
- }
-
- public static void main(String[] args) throws IOException, ParseException {
-
- }
+public class BioJsHTMLOutput
+{
+ private AlignViewport av;
+
+ private FeatureRenderer fr;
+
+ public BioJsHTMLOutput(AlignmentPanel ap, SequenceRenderer sr,
+ FeatureRenderer fr1)
+ {
+ this.av = ap.av;
+ this.fr = new FeatureRenderer(ap);
+ fr.transferSettings(fr1);
+ exportAsBioJsHtml();
+ }
+
+ private void exportAsBioJsHtml()
+ {
+ try
+ {
+ JalviewFileChooser jvFileChooser = getJalviewFileChooserOption();
+ int fileChooserOpt = jvFileChooser.showSaveDialog(null);
+ if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
+ {
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
+ .getSelectedFile().getParent());
+ String selectedFile = jvFileChooser.getSelectedFile().getPath();
+ String generartedBioJs = generateBioJsAlignmentData(av
+ .getAlignment());
+ PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
+ selectedFile));
+ out.print(generartedBioJs);
+ out.close();
+ jalview.util.BrowserLauncher.openURL("file:///" + selectedFile);
+ }
+ } catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ private JalviewFileChooser getJalviewFileChooserOption()
+ {
+ JalviewFileChooser chooser = new JalviewFileChooser(
+ jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
+ { "html" }, new String[]
+ { "HTML files" }, "HTML files");
+ chooser.setFileView(new JalviewFileView());
+
+ // TODO uncomment when supported by MassageManager
+ chooser.setDialogTitle(MessageManager
+ .getString("label.save_as_biojs_html"));
+ chooser.setDialogTitle("save as BioJs HTML");
+ chooser.setToolTipText(MessageManager.getString("action.save"));
+
+ return chooser;
+ }
+
+ private String generateBioJsAlignmentData(AlignmentI alignment)
+ throws IOException, JSONException
+ {
+ BioJsAlignmentPojo bjsAlignment = new BioJsAlignmentPojo();
+ int count = 0;
+ for (SequenceI seq : alignment.getSequences())
+ {
+ StringBuilder name = new StringBuilder();
+ name.append(seq.getName()).append("/").append(seq.getStart())
+ .append("-").append(seq.getEnd());
+ bjsAlignment.getSeqs().add(
+ new BioJsSeqPojo(String.valueOf(++count), name.toString(),
+ seq.getSequenceAsString()));
+ }
+
+ String seqs = new com.json.JSONObject(bjsAlignment).getString("seqs");
+ // String bioJSTemplate = new String(
+ // java.nio.file.Files.readAllBytes(java.nio.file.Paths
+ // .get("resources/templates/BioJSTemplate.txt")));
+ String bioJSTemplate = getBioJsTemplateAsString(alignment);
+
+ return bioJSTemplate.replaceAll("#sequenceData#", seqs).replaceAll(
+ "#scheme#", "zappo");
+ }
+
+
+ public static String getBioJsTemplateAsString(AlignmentI bio)
+ throws IOException
+ {
+ StringBuilder sb = new StringBuilder();
+ URL url = bio.getClass().getResource(
+ "/templates/BioJSTemplate.txt");
+ if (url != null)
+ {
+ try
+ {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ url.openStream()));
+ String line;
+ String lineSeparator = System.getProperty("line.separator");
+ while ((line = reader.readLine()) != null)
+ {
+ sb.append(line).append(lineSeparator);
+ }
+ } catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ return sb.toString();
+ }
}