JAL-967 JAL-1482 new feature renderer api - needs more design work
authorJim Procter <jprocter@dundee.ac.uk>
Mon, 21 Apr 2014 09:25:24 +0000 (10:25 +0100)
committerJim Procter <jprocter@dundee.ac.uk>
Mon, 21 Apr 2014 13:18:13 +0000 (14:18 +0100)
src/jalview/api/AlignmentViewPanel.java
src/jalview/api/FeatureRenderer.java
src/jalview/appletgui/AlignmentPanel.java
src/jalview/appletgui/FeatureRenderer.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/AppJmolBinding.java
src/jalview/gui/FeatureRenderer.java
src/jalview/ws/jws2/AADisorderClient.java

index 1705995..9089310 100644 (file)
@@ -48,4 +48,9 @@ public interface AlignmentViewPanel extends OOMHandlerI
    * ensuring the alignment is still visible.
    */
   void adjustAnnotationHeight();
+
+  FeatureRenderer getFeatureRenderer();
+
+  FeatureRenderer cloneFeatureRenderer();
+  
 }
index ea7f55a..baba482 100644 (file)
@@ -18,7 +18,9 @@
  */
 package jalview.api;
 
+import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
+import jalview.schemes.GraduatedColor;
 
 import java.awt.Color;
 
@@ -35,4 +37,8 @@ public interface FeatureRenderer
 
   void featuresAdded();
 
+  Object getFeatureStyle(String ft);
+
+  void setColour(String ft, Object ggc);
+
 }
index 5a49281..cd1d20a 100644 (file)
@@ -143,12 +143,18 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
   {
     return seqPanel.seqCanvas.sr;
   }
-
-  public FeatureRenderer getFeatureRenderer()
+  @Override
+  public jalview.api.FeatureRenderer getFeatureRenderer()
   {
     return seqPanel.seqCanvas.fr;
   }
-
+  @Override
+  public jalview.api.FeatureRenderer cloneFeatureRenderer()
+  {
+    FeatureRenderer nfr = new FeatureRenderer(av);
+    nfr.transferSettings(seqPanel.seqCanvas.fr);
+    return nfr;
+  }
   public void alignmentChanged()
   {
     av.alignmentChanged(this);
index 0a40439..e11f1b4 100644 (file)
@@ -79,31 +79,41 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     }
   }
 
-  public void transferSettings(FeatureRenderer fr)
+  public void transferSettings(jalview.api.FeatureRenderer _fr)
   {
-    renderOrder = fr.renderOrder;
-    featureGroups = fr.featureGroups;
-    featureColours = fr.featureColours;
-    transparency = fr.transparency;
-    if (av != null && fr.av != null && fr.av != av)
+    if (_fr instanceof FeatureRenderer)
     {
-      if (fr.av.featuresDisplayed != null)
+      FeatureRenderer fr = (FeatureRenderer) _fr;
+      renderOrder = fr.renderOrder;
+      featureGroups = fr.featureGroups;
+      featureColours = fr.featureColours;
+      transparency = fr.transparency;
+      if (av != null && fr.av != null && fr.av != av)
       {
-        if (av.featuresDisplayed == null)
-        {
-          av.featuresDisplayed = new Hashtable();
-        }
-        else
+        if (fr.av.featuresDisplayed != null)
         {
-          av.featuresDisplayed.clear();
-        }
-        Enumeration en = fr.av.featuresDisplayed.keys();
-        while (en.hasMoreElements())
-        {
-          av.featuresDisplayed.put(en.nextElement(), Boolean.TRUE);
+          if (av.featuresDisplayed == null)
+          {
+            av.featuresDisplayed = new Hashtable();
+          }
+          else
+          {
+            av.featuresDisplayed.clear();
+          }
+          Enumeration en = fr.av.featuresDisplayed.keys();
+          while (en.hasMoreElements())
+          {
+            av.featuresDisplayed.put(en.nextElement(), Boolean.TRUE);
+          }
         }
       }
     }
+    else
+    {
+      throw new Error(
+              "Implementation error: cannot port feature settings from implementation of type "
+                      + _fr.getClass() + " to " + getClass());
+    }
   }
 
   static String lastFeatureAdded;
index 6bfe4bd..671a7cb 100644 (file)
@@ -1502,18 +1502,23 @@ public class AlignmentPanel extends GAlignmentPanel implements
     new OOMWarning(string, error, this);
   }
 
-  public FeatureRenderer cloneFeatureRenderer()
+  @Override
+  public jalview.api.FeatureRenderer cloneFeatureRenderer()
   {
 
     return new FeatureRenderer(this);
   }
-
+  @Override 
+  public jalview.api.FeatureRenderer getFeatureRenderer()
+  {
+    return seqPanel.seqCanvas.getFeatureRenderer();
+  }
   public void updateFeatureRenderer(FeatureRenderer fr)
   {
     fr.transferSettings(seqPanel.seqCanvas.getFeatureRenderer());
   }
 
-  public void updateFeatureRendererFrom(FeatureRenderer fr)
+  public void updateFeatureRendererFrom(jalview.api.FeatureRenderer fr)
   {
     if (seqPanel.seqCanvas.getFeatureRenderer() != null)
     {
index 80a7b9e..bd80c76 100644 (file)
@@ -60,7 +60,7 @@ public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
     {
       if (fr == null)
       {
-        fr = ap.cloneFeatureRenderer();
+        fr = (jalview.gui.FeatureRenderer) ap.cloneFeatureRenderer();
       }
       else
       {
index c07fdcf..5c7f32a 100644 (file)
@@ -39,7 +39,7 @@ import jalview.util.MessageManager;
  * @author $author$
  * @version $Revision$
  */
-public class FeatureRenderer implements jalview.api.FeatureRenderer
+public class FeatureRenderer extends jalview.viewmodel.FeatureRenderer implements jalview.api.FeatureRenderer
 {
   AlignmentPanel ap;
 
@@ -174,8 +174,9 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
    * update from another feature renderer
    * @param fr settings to copy
    */
-  public void transferSettings(FeatureRenderer fr)
+  public void transferSettings(jalview.api.FeatureRenderer _fr)
   {
+    FeatureRenderer fr = (FeatureRenderer) _fr;
     FeatureRendererSettings frs = new FeatureRendererSettings(fr);
     this.renderOrder = frs.renderOrder;
     this.featureGroups = frs.featureGroups;
index 49a904c..5759cb2 100644 (file)
@@ -322,7 +322,7 @@ public class AADisorderClient extends JabawsCalcWorker implements
       {
         if (dispFeatures)
         {
-          jalview.gui.FeatureRenderer fr = ((jalview.gui.AlignmentPanel) ap)
+          jalview.api.FeatureRenderer fr = ((jalview.gui.AlignmentPanel) ap)
                   .cloneFeatureRenderer();
           for (String ft : fc.keySet())
           {