package jalview.io;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceI;
+import jalview.exceptions.NoFileSelectedException;
import jalview.gui.AlignViewport;
import jalview.gui.AlignmentPanel;
import jalview.gui.FeatureRenderer;
-import jalview.gui.SequenceRenderer;
-import jalview.json.binding.v1.BioJsAlignmentPojo;
-import jalview.json.binding.v1.BioJsSeqPojo;
import jalview.util.MessageManager;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.net.URL;
-import com.json.JSONException;
-
public class BioJsHTMLOutput
{
private AlignViewport av;
- private FeatureRenderer fr;
- public BioJsHTMLOutput(AlignmentPanel ap, SequenceRenderer sr,
+ public BioJsHTMLOutput(AlignmentPanel ap,
FeatureRenderer fr1)
{
- this.av = ap.av;
- this.fr = new FeatureRenderer(ap);
- fr.transferSettings(fr1);
- exportAsBioJsHtml();
+
+ if (ap != null)
+ {
+
+ this.av = ap.av;
+ av.setFeatureRenderer(new FeatureRenderer(ap));
+ }
+ exportJalviewAlignmentAsBioJsHtmlFile();
}
- private void exportAsBioJsHtml()
+ private void exportJalviewAlignmentAsBioJsHtmlFile()
{
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)
+ String outputFile = getOutputFile();
+ String jalviewAlignmentJson = JSONFile.getJSONData(av);
+ String bioJSTemplateString = getBioJsTemplateAsString(this);
+ String generatedBioJsWithJalviewAlignmentAsJson = bioJSTemplateString
+ .replaceAll(
+"#sequenceData#", jalviewAlignmentJson)
+ .toString();
+
+ PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(
+ outputFile));
+ out.print(generatedBioJsWithJalviewAlignmentAsJson);
+ out.flush();
+ out.close();
+ jalview.util.BrowserLauncher.openURL("file:///" + outputFile);
+ } catch (NoFileSelectedException ex)
{
- ex.printStackTrace();
+ // do noting if no file was selected
+ } catch (Exception e)
+ {
+ e.printStackTrace();
}
}
- private JalviewFileChooser getJalviewFileChooserOption()
+ public String getOutputFile() throws NoFileSelectedException
{
- JalviewFileChooser chooser = new JalviewFileChooser(
+ String selectedFile = null;
+ JalviewFileChooser jvFileChooser = new JalviewFileChooser(
jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
{ "html" }, new String[]
{ "HTML files" }, "HTML files");
- chooser.setFileView(new JalviewFileView());
+ jvFileChooser.setFileView(new JalviewFileView());
// TODO uncomment when supported by MassageManager
- chooser.setDialogTitle(MessageManager
+ jvFileChooser.setDialogTitle(MessageManager
.getString("label.save_as_biojs_html"));
- chooser.setDialogTitle("save as BioJs HTML");
- chooser.setToolTipText(MessageManager.getString("action.save"));
+ jvFileChooser.setDialogTitle("save as BioJs HTML");
+ jvFileChooser.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())
+ int fileChooserOpt = jvFileChooser.showSaveDialog(null);
+ if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
{
- 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()));
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser
+ .getSelectedFile().getParent());
+ selectedFile = jvFileChooser.getSelectedFile().getPath();
}
-
- 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");
+ else
+ {
+ throw new NoFileSelectedException("No file was selected.");
+ }
+ return selectedFile;
}
- public static String getBioJsTemplateAsString(AlignmentI bio)
+ public static String getBioJsTemplateAsString(Object currentObj)
throws IOException
{
InputStreamReader isReader = null;
BufferedReader buffReader = null;
StringBuilder sb = new StringBuilder();
- URL url = bio.getClass().getResource(
+ URL url = currentObj.getClass().getResource(
"/templates/BioJSTemplate.txt");
if (url != null)
{
}
}
}
-
return sb.toString();
}
-
}