JAL-1641 refactored out view settings from Desktop.java
[jalview.git] / src / jalview / io / BioJsHTMLOutput.java
index 772337a..4945306 100644 (file)
@@ -1,37 +1,38 @@
 package jalview.io;
 
+import jalview.api.FeaturesDisplayedI;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.exceptions.NoFileSelectedException;
-import jalview.gui.AlignViewport;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.FeatureRenderer;
-import jalview.json.binding.v1.BioJsAlignmentPojo;
-import jalview.json.binding.v1.BioJsFeaturePojo;
-import jalview.json.binding.v1.BioJsSeqPojo;
+import jalview.json.binding.v1.AlignmentPojo;
+import jalview.json.binding.v1.SequenceFeaturesPojo;
+import jalview.json.binding.v1.SequencePojo;
 import jalview.schemes.ColourSchemeProperty;
 import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
 
+import java.awt.Color;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Hashtable;
 
 import com.json.JSONException;
 
 public class BioJsHTMLOutput
 {
-  private AlignViewport av;
+  private AlignmentViewport av;
 
-  private FeatureRenderer fr;
+  private jalview.api.FeatureRenderer fr;
 
   private String globalColorScheme;
 
-  private Hashtable displayedFeatures;
+  private FeaturesDisplayedI displayedFeatures;
 
   private String jalviewVersion;
 
@@ -50,12 +51,9 @@ public class BioJsHTMLOutput
       this.av = ap.av;
       this.globalColorScheme = ColourSchemeProperty.getColourName(av
               .getGlobalColourScheme());
-      this.fr = new FeatureRenderer(ap);
-    fr.transferSettings(fr1);
+      this.fr = ap.cloneFeatureRenderer();
       displayedFeatures = av.getFeaturesDisplayed();
-
-    exportJalviewAlignmentAsBioJsHtmlFile();
-  }
+    }
   }
 
   private void exportJalviewAlignmentAsBioJsHtmlFile()
@@ -119,11 +117,11 @@ public class BioJsHTMLOutput
   public String getJalviewAlignmentAsJsonString(AlignmentI alignment)
           throws IOException, JSONException
   {
-    BioJsAlignmentPojo bjsAlignment = new BioJsAlignmentPojo();
+    AlignmentPojo bjsAlignment = new AlignmentPojo();
 
-    bjsAlignment.setGlobalColorScheme(getGlobalColorScheme());
-    bjsAlignment.setJalviewVersion(jalviewVersion);
-    bjsAlignment.setWebStartUrl(webStartLaunchServletUrl);
+    // bjsAlignment.setGlobalColorScheme(getGlobalColorScheme());
+    // bjsAlignment.setJalviewVersion(jalviewVersion);
+    // bjsAlignment.setWebStartUrl(webStartLaunchServletUrl);
 
     int count = 0;
     for (SequenceI seq : alignment.getSequences())
@@ -132,34 +130,36 @@ public class BioJsHTMLOutput
       name.append(seq.getName()).append("/").append(seq.getStart())
               .append("-").append(seq.getEnd());
 
-      BioJsSeqPojo seqPojo = new BioJsSeqPojo();
+      SequencePojo seqPojo = new SequencePojo();
       seqPojo.setId(String.valueOf(++count));
       seqPojo.setEnd(seq.getEnd());
       seqPojo.setStart(seq.getStart());
       seqPojo.setName(name.toString());
       seqPojo.setSeq(seq.getSequenceAsString());
 
-      SequenceFeature[] seqFeatures = seq.getDatasetSequence()
-              .getSequenceFeatures();
+      SequenceFeature[] seqFeatures = seq.getSequenceFeatures();
       if (seqFeatures != null)
       {
-        ArrayList<BioJsFeaturePojo> bjsSeqFeatures = new ArrayList<BioJsFeaturePojo>();
+        ArrayList<SequenceFeaturesPojo> bjsSeqFeatures = new ArrayList<SequenceFeaturesPojo>();
         for (SequenceFeature sf : seqFeatures)
         {
           if (displayedFeatures != null
-                  && displayedFeatures.get(sf.getType()) != null)
+                  && displayedFeatures.isVisible(sf.getType()))
           {
+
+            // TODO: translate graduated/complex colourschemes to biojs model
             String featureColour = jalview.util.Format.getHexString(fr
-                    .getColour(sf));
-            BioJsFeaturePojo bjsFeature = new BioJsFeaturePojo();
-            bjsFeature.setFillColor(featureColour);
-            bjsFeature.setXstart(seq.findIndex(sf.getBegin()) - 1);
-            bjsFeature.setXend(seq.findIndex(sf.getEnd()));
-            bjsFeature.setText(sf.getType());
-            bjsSeqFeatures.add(bjsFeature);
+                    .findFeatureColour(Color.white, seq,
+                            seq.findIndex(sf.getBegin())));
+            // SequenceFeaturesPojo bjsFeature = new SequenceFeaturesPojo();
+            // bjsFeature.setFillColor(featureColour);
+            // bjsFeature.setXstart(seq.findIndex(sf.getBegin()) - 1);
+            // bjsFeature.setXend(seq.findIndex(sf.getEnd()));
+            // bjsFeature.setType(sf.getType());
+            // bjsSeqFeatures.add(bjsFeature);
           }
         }
-        seqPojo.setFeatures(bjsSeqFeatures);
+        // seqPojo.setFeatures(bjsSeqFeatures);
       }
       bjsAlignment.getSeqs().add(seqPojo);
     }