JAL-3081 restore annotation ordering from project (work in progress)
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index 60ef480..c606b9f 100644 (file)
@@ -21,6 +21,7 @@
 package jalview.gui;
 
 import jalview.analysis.AnnotationSorter;
+import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.bin.Cache;
@@ -328,12 +329,12 @@ public class AlignmentPanel extends GAlignmentPanel implements
   }
 
   /**
-   * Highlight the given results on the alignment.
+   * Highlight the given results on the alignment
    * 
    */
   public void highlightSearchResults(SearchResultsI results)
   {
-    boolean scrolled = scrollToPosition(results, 0, true, false);
+    boolean scrolled = scrollToPosition(results, 0, false);
 
     boolean noFastPaint = scrolled && av.getWrapAlignment();
 
@@ -345,13 +346,11 @@ public class AlignmentPanel extends GAlignmentPanel implements
    * (if any)
    * 
    * @param searchResults
-   * @param redrawOverview
    * @return
    */
-  public boolean scrollToPosition(SearchResultsI searchResults,
-          boolean redrawOverview)
+  public boolean scrollToPosition(SearchResultsI searchResults)
   {
-    return scrollToPosition(searchResults, 0, redrawOverview, false);
+    return scrollToPosition(searchResults, 0, false);
   }
 
   /**
@@ -364,14 +363,12 @@ public class AlignmentPanel extends GAlignmentPanel implements
    * @param verticalOffset
    *          if greater than zero, allows scrolling to a position below the
    *          first displayed sequence
-   * @param redrawOverview
-   *          - when set, the overview will be recalculated (takes longer)
    * @param centre
    *          if true, try to centre the search results horizontally in the view
    * @return
    */
   protected boolean scrollToPosition(SearchResultsI results,
-          int verticalOffset, boolean redrawOverview, boolean centre)
+          int verticalOffset, boolean centre)
   {
     int startv, endv, starts, ends;
     ViewportRanges ranges = av.getRanges();
@@ -477,7 +474,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       scrollNeeded = ranges.scrollToWrappedVisible(start);
     }
 
-    paintAlignment(redrawOverview, false);
+    paintAlignment(false, false);
 
     return scrollNeeded;
   }
@@ -536,7 +533,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     addNotify();
     // TODO: many places call this method and also paintAlignment with various
     // different settings. this means multiple redraws are triggered...
-    paintAlignment(true, false);
+    paintAlignment(true, av.needToUpdateStructureViews());
   }
 
   /**
@@ -641,16 +638,9 @@ public class AlignmentPanel extends GAlignmentPanel implements
     }
     else
     {
-      int width = av.getAlignment().getWidth();
+      int width = av.getAlignment().getVisibleWidth();
       int height = av.getAlignment().getHeight();
 
-      if (av.hasHiddenColumns())
-      {
-        // reset the width to exclude hidden columns
-        width = av.getAlignment().getHiddenColumns()
-                .absoluteToVisibleColumn(width);
-      }
-
       hextent = getSeqPanel().seqCanvas.getWidth() / av.getCharWidth();
       vextent = getSeqPanel().seqCanvas.getHeight() / av.getCharHeight();
 
@@ -815,10 +805,6 @@ public class AlignmentPanel extends GAlignmentPanel implements
   public void paintAlignment(boolean updateOverview,
           boolean updateStructures)
   {
-    final AnnotationSorter sorter = new AnnotationSorter(getAlignment(),
-            av.isShowAutocalculatedAbove());
-    sorter.sort(getAlignment().getAlignmentAnnotation(),
-            av.getSortAnnotationsBy());
     repaint();
 
     if (updateStructures)
@@ -836,6 +822,21 @@ public class AlignmentPanel extends GAlignmentPanel implements
   }
 
   /**
+   * Sorts annotations according to currently selected preferences. Does nothing
+   * if currently set to 'Custom' (manual) ordering.
+   */
+  void sortAnnotations()
+  {
+    SequenceAnnotationOrder sortBy = av.getSortAnnotationsBy();
+    if (sortBy != SequenceAnnotationOrder.CUSTOM)
+    {
+      final AnnotationSorter sorter = new AnnotationSorter(getAlignment(),
+              av.isShowAutocalculatedAbove());
+      sorter.sort(getAlignment().getAlignmentAnnotation(), sortBy);
+    }
+  }
+
+  /**
    * DOCUMENT ME!
    * 
    * @param g
@@ -962,8 +963,8 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
     final int totalSeq = (pageHeight - scaleHeight) / charHeight - 1;
 
-    final int alignmentWidth = av.getAlignment().getWidth();
-    final int pagesWide = (alignmentWidth / totalRes) + 1;
+    final int alignmentWidth = av.getAlignment().getVisibleWidth();
+    int pagesWide = (alignmentWidth / totalRes) + 1;
 
     final int startRes = (pageIndex % pagesWide) * totalRes;
     final int endRes = Math.min(startRes + totalRes - 1,
@@ -1080,12 +1081,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
     int idWidth = getVisibleIdWidth(false);
 
-    int maxwidth = av.getAlignment().getWidth();
-    if (av.hasHiddenColumns())
-    {
-      maxwidth = av.getAlignment().getHiddenColumns()
-              .absoluteToVisibleColumn(maxwidth) - 1;
-    }
+    int maxwidth = av.getAlignment().getVisibleWidth();
 
     int resWidth = getSeqPanel().seqCanvas
             .getWrappedCanvasWidth(pageWidth - idWidth);
@@ -1247,12 +1243,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
   public AlignmentDimension getAlignmentDimension()
   {
-    int maxwidth = av.getAlignment().getWidth();
-    if (av.hasHiddenColumns())
-    {
-      maxwidth = av.getAlignment().getHiddenColumns()
-              .absoluteToVisibleColumn(maxwidth);
-    }
+    int maxwidth = av.getAlignment().getVisibleWidth();
 
     int height = ((av.getAlignment().getHeight() + 1) * av.getCharHeight())
             + getScalePanel().getHeight();
@@ -1567,7 +1558,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
   @Override
   public String getViewName()
   {
-    return av.viewName;
+    return av.getViewName();
   }
 
   /**
@@ -1698,7 +1689,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
    */
   protected void scrollToCentre(SearchResultsI sr, int verticalOffset)
   {
-    scrollToPosition(sr, verticalOffset, true, true);
+    scrollToPosition(sr, verticalOffset, true);
   }
 
   /**