JAL-1486 JAL-535 refactor code for trimming alignment annotation according to selecti...
authorj.procter@dundee.ac.uk <jprocter@carderbee.dyn.lifesci.dundee.ac.uk>
Fri, 12 Sep 2014 15:56:29 +0000 (16:56 +0100)
committerj.procter@dundee.ac.uk <jprocter@carderbee.dyn.lifesci.dundee.ac.uk>
Fri, 12 Sep 2014 15:56:29 +0000 (16:56 +0100)
src/jalview/api/AlignViewportI.java
src/jalview/viewmodel/AlignmentViewport.java

index 567ae83..d8ba30d 100644 (file)
@@ -22,6 +22,7 @@ package jalview.api;
 
 import java.awt.Color;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Map;
 
 import jalview.analysis.Conservation;
@@ -191,4 +192,12 @@ public interface AlignViewportI
 
   void setConservation(Conservation cons);
 
+  /**
+   * get a copy of the currently visible alignment annotation
+   * @param selectedOnly if true - trim to selected regions on the alignment
+   * @return an empty list or new alignment annotation objects shown only visible columns trimmed to selected region only
+   */
+  List<AlignmentAnnotation> getVisibleAlignmentAnnotation(
+          boolean selectedOnly);
+
 }
index 0c8afaa..0fa4a3c 100644 (file)
@@ -1243,6 +1243,28 @@ public abstract class AlignmentViewport implements AlignViewportI
 
   }
 
+  @Override
+  public List<AlignmentAnnotation> getVisibleAlignmentAnnotation(boolean selectedOnly)
+  {
+    ArrayList<AlignmentAnnotation> ala = new ArrayList<AlignmentAnnotation>();
+    AlignmentAnnotation[] aa;
+    if ((aa=alignment.getAlignmentAnnotation())!=null)
+    {
+      for (AlignmentAnnotation annot:aa)
+      {
+        AlignmentAnnotation clone = new AlignmentAnnotation(annot);
+        if (selectedOnly && selectionGroup!=null)
+        {
+          colSel.makeVisibleAnnotation(selectionGroup.getStartRes(), selectionGroup.getEndRes(),clone);
+        } else {
+          colSel.makeVisibleAnnotation(clone);
+        }
+        ala.add(clone);
+      }
+    }
+    return ala;
+  }
+
   /**
    * @return the padGaps
    */