Refactored alignment viewport to use common base, extended viewport API with getters...
[jalview.git] / src / jalview / gui / AlignViewport.java
index 1c6a94e..1b39869 100644 (file)
@@ -40,7 +40,10 @@ import java.util.*;
 import java.awt.*;
 
 import jalview.analysis.*;
+import jalview.api.AlignCalcManagerI;
 import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+import jalview.api.OOMHandlerI;
 
 import jalview.bin.*;
 
@@ -50,6 +53,8 @@ import jalview.schemes.*;
 import jalview.structure.SelectionSource;
 import jalview.structure.StructureSelectionManager;
 import jalview.structure.VamsasSource;
+import jalview.workers.AlignCalcManager;
+import jalview.workers.ConservationThread;
 
 /**
  * DOCUMENT ME!
@@ -57,7 +62,7 @@ import jalview.structure.VamsasSource;
  * @author $author$
  * @version $Revision: 1.141 $
  */
-public class AlignViewport implements SelectionSource, VamsasSource, AlignViewportI
+public class AlignViewport extends AlignmentViewport implements SelectionSource, VamsasSource, AlignViewportI
 {
   private static final int RIGHT_JUSTIFY = 1;
 
@@ -158,9 +163,6 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
 
   boolean autoCalculateStrucConsensus = true;
 
-  /** DOCUMENT ME!! */
-  public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!
-
   // JBPNote Prolly only need this in the applet version.
   private java.beans.PropertyChangeSupport changeSupport = new java.beans.PropertyChangeSupport(
           this);
@@ -373,7 +375,7 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
       if (!alignment.isNucleotide())
       {
         conservation = new AlignmentAnnotation("Conservation",
-                "Conservation of total alignment less than " + ConsPercGaps
+                "Conservation of total alignment less than " + getConsPercGaps()
                         + "% gaps", new Annotation[1], 0f, 11f,
                 AlignmentAnnotation.BAR_GRAPH);
         conservation.hasText = true;
@@ -475,8 +477,8 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
   {
     return showSequenceFeatures;
   }
-
-  ConservationThread conservationThread;
+  
+  AlignCalcManagerI calculator=new AlignCalcManager();
 
   ConsensusThread consensusThread;
 
@@ -509,7 +511,7 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
   /**
    * trigger update of conservation annotation
    */
-  public void updateConservation(final AlignmentPanel ap)
+  public void updateConservation(final AlignmentViewPanel ap)
   {
     // see note in mantis : issue number 8585
     if (alignment.isNucleotide() || conservation == null
@@ -517,9 +519,8 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
     {
       return;
     }
-
-    conservationThread = new ConservationThread(this, ap);
-    conservationThread.start();
+    
+    calculator.startWorker(new jalview.workers.ConservationThread(this, ap));
   }
 
   /**
@@ -538,8 +539,7 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
 
   class ConsensusThread extends Thread
   {
-    AlignmentPanel ap;
-
+    AlignmentViewPanel ap;
     public ConsensusThread(AlignmentPanel ap)
     {
       this.ap = ap;
@@ -596,8 +596,8 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
         alignment.deleteAnnotation(consensus);
 
         consensus = null;
-        hconsensus = null;
-        new OOMWarning("calculating consensus", error);
+        hconsensus = null; 
+        ap.raiseOOMWarning("calculating consensus", error);
       }
       UPDATING_CONSENSUS = false;
       updatingConsensus = false;
@@ -1939,12 +1939,12 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
       cs.setConsensus(hconsensus);
       if (cs.conservationApplied())
       {
-        Alignment al = (Alignment) alignment;
+        AlignmentI al = (Alignment) alignment;
         Conservation c = new Conservation("All",
                 ResidueProperties.propHash, 3, al.getSequences(), 0, al
                         .getWidth() - 1);
         c.calculate();
-        c.verdict(false, ConsPercGaps);
+        c.verdict(false, getConsPercGaps());
 
         cs.setConservation(c);
       }
@@ -2523,4 +2523,29 @@ public class AlignViewport implements SelectionSource, VamsasSource, AlignViewpo
   {
     return hStrucConsensus;
   }
+
+  @Override
+  public AlignmentAnnotation getAlignmentQualityAnnot()
+  {
+    return quality;
+  }
+
+  @Override
+  public AlignmentAnnotation getAlignmentConservationAnnotation()
+  {
+    return conservation;
+  }
+
+  @Override
+  public boolean isClosed()
+  {
+    // TODO: check that this isClosed is only true after panel is closed, not before it is fully constructed.
+    return alignment==null;
+  }
+
+  @Override
+  public AlignCalcManagerI getCalcManager()
+  {
+    return calculator;
+  }
 }