JAL-516 JAL-759 JAL-1066 group & group colourscheme always gets notified when group...
[jalview.git] / src / jalview / appletgui / AlignmentPanel.java
index 224b966..fffe55a 100644 (file)
@@ -286,13 +286,14 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
     // do we need to scroll the panel?
     if (results != null && results.getSize() > 0)
     {
-      int seqIndex = av.alignment.findIndex(results);
+      AlignmentI alignment=av.getAlignment();
+      int seqIndex = alignment.findIndex(results);
       if (seqIndex == -1)
       {
         return false;
       }
-      SequenceI seq = av.alignment.getSequenceAt(seqIndex);
-      int[] r = results.getResults(seq, 0,av.alignment.getWidth());
+      SequenceI seq = alignment.getSequenceAt(seqIndex);
+      int[] r = results.getResults(seq, 0,alignment.getWidth());
       if (r == null)
       {
         if (av.applet.debug) {// DEBUG
@@ -327,13 +328,13 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
            int startv, endv, starts, ends, width;
 
          int start=-1;
-    if (av.hasHiddenColumns)
+    if (av.hasHiddenColumns())
     {
       start = av.getColumnSelection().findColumnPosition(ostart);
       end = av.getColumnSelection().findColumnPosition(end);
       if (start == end)
       {
-        if (!scrollToNearest && !av.colSel.isVisible(ostart))
+        if (!scrollToNearest && !av.getColumnSelection().isVisible(ostart))
         {
           // don't scroll - position isn't visible
           return false;
@@ -373,18 +374,18 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
                 || (av.getEndRes() < start)
                 || ((av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))
         {
-          if (start > av.alignment.getWidth() - hextent)
+          if (start > av.getAlignment().getWidth() - hextent)
           {
-            start = av.alignment.getWidth() - hextent;
+            start = av.getAlignment().getWidth() - hextent;
             if (start < 0)
             {
               start = 0;
             }
 
           }
-          if (seqIndex > av.alignment.getHeight() - vextent)
+          if (seqIndex > av.getAlignment().getHeight() - vextent)
           {
-            seqIndex = av.alignment.getHeight() - vextent;
+            seqIndex = av.getAlignment().getHeight() - vextent;
             if (seqIndex < 0)
             {
               seqIndex = 0;
@@ -463,7 +464,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
    */
   protected void validateAnnotationDimensions(boolean adjustPanelHeight) {
     boolean modified=false;
-    int height = annotationPanel.calcPanelHeight();
+    int height = av.calcPanelHeight();
     int minsize=0;
     if (hscroll.isVisible())
     {
@@ -588,10 +589,10 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
 
   public void setScrollValues(int x, int y)
   {
-    int width = av.alignment.getWidth();
-    int height = av.alignment.getHeight();
+    int width = av.getAlignment().getWidth();
+    int height = av.getAlignment().getHeight();
 
-    if (av.hasHiddenColumns)
+    if (av.hasHiddenColumns())
     {
       width = av.getColumnSelection().findColumnPosition(width);
     }
@@ -636,9 +637,9 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
     av.setStartSeq(y);
 
     int endSeq = y + vextent;
-    if (endSeq > av.alignment.getHeight())
+    if (endSeq > av.getAlignment().getHeight())
     {
-      endSeq = av.alignment.getHeight();
+      endSeq = av.getAlignment().getHeight();
     }
 
     av.setEndSeq(endSeq);
@@ -768,9 +769,9 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
     
     if (av.getWrapAlignment())
     {
-      int maxwidth = av.alignment.getWidth();
+      int maxwidth = av.getAlignment().getWidth();
 
-      if (av.hasHiddenColumns)
+      if (av.hasHiddenColumns())
       {
         maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
       }
@@ -905,79 +906,30 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, Alignme
 
   public void updateAnnotation(boolean applyGlobalSettings)
   {
-    // TODO: this should be merged with other annotation update stuff - that
-    // sits on AlignViewport
-    boolean updateCalcs = false;
-    boolean conv = av.isShowGroupConservation();
-    boolean cons = av.isShowGroupConsensus();
-    boolean showprf = av.isShowSequenceLogo();
-    boolean showConsHist = av.isShowConsensusHistogram();
-
-    boolean sortg = true;
-
-    // remove old automatic annotation
-    // add any new annotation
-
-    Vector gr = av.alignment.getGroups(); // OrderedBy(av.alignment.getSequencesArray());
-    // intersect alignment annotation with alignment groups
-
-    AlignmentAnnotation[] aan = av.alignment.getAlignmentAnnotation();
-    Hashtable oldrfs = new Hashtable();
-    if (aan != null)
-    {
-      for (int an = 0; an < aan.length; an++)
-      {
-        if (aan[an].autoCalculated && aan[an].groupRef != null)
-        {
-          oldrfs.put(aan[an].groupRef, aan[an].groupRef);
-          av.alignment.deleteAnnotation(aan[an]);
-          aan[an] = null;
-        }
-      }
-    }
-    SequenceGroup sg;
-    if (gr != null)
-    {
-      for (int g = 0; g < gr.size(); g++)
-      {
-        updateCalcs = false;
-        sg = (SequenceGroup) gr.elementAt(g);
-        if (applyGlobalSettings || !oldrfs.containsKey(sg))
-        {
-          // set defaults for this group's conservation/consensus
-          sg.setshowSequenceLogo(showprf);
-          sg.setShowConsensusHistogram(showConsHist);
-        }
-        if (conv)
-        {
-          updateCalcs = true;
-          av.alignment.addAnnotation(sg.getConservationRow(), 0);
-        }
-        if (cons)
-        {
-          updateCalcs = true;
-          av.alignment.addAnnotation(sg.getConsensus(), 0);
-        }
-        // refresh the annotation rows
-        if (updateCalcs)
-        {
-          sg.recalcConservation();
-        }
-      }
-    }
-    oldrfs.clear();
+    updateAnnotation(applyGlobalSettings, false);
+  }
+  public void updateAnnotation(boolean applyGlobalSettings, boolean preserveNewGroupSettings)
+  {
+    av.updateGroupAnnotationSettings(applyGlobalSettings, preserveNewGroupSettings);
     adjustAnnotationHeight();
   }
 
   @Override
   public AlignmentI getAlignment()
   {
-    return av.alignment;
+    return av.getAlignment();
   }
   @Override
   public StructureSelectionManager getStructureSelectionManager()
   {
     return StructureSelectionManager.getStructureSelectionManager(av.applet);
   }
+  @Override
+  public void raiseOOMWarning(String string, OutOfMemoryError error)
+  {
+    // TODO: JAL-960
+    System.err.println("Out of memory whilst '"+string+"'");
+    error.printStackTrace();
+  }
 
 }