JAL-345 refactor list of sequences that are highlighted from Id Canvas to Alignment...
authorJim Procter <jprocter@issues.jalview.org>
Fri, 14 Sep 2018 11:04:52 +0000 (12:04 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Fri, 14 Sep 2018 11:04:52 +0000 (12:04 +0100)
src/jalview/api/AlignViewportI.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/IdCanvas.java
src/jalview/gui/IdPanel.java
src/jalview/gui/RedundancyPanel.java
src/jalview/viewmodel/AlignmentViewport.java

index 931eba6..aa98680 100644 (file)
@@ -490,4 +490,8 @@ public interface AlignViewportI extends ViewStyleI
   public abstract TreeModel getCurrentTree();
 
   public abstract void setCurrentTree(TreeModel tree);
+
+  void setHighlightedSeqs(List<SequenceI> list);
+
+  List<SequenceI> getHighlightedSeqs();
 }
index 94b38ed..0fdc9f0 100644 (file)
@@ -2431,7 +2431,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.setSelectionGroup(null);
     viewport.getColumnSelection().clear();
     viewport.setSelectionGroup(null);
-    alignPanel.getIdPanel().getIdCanvas().searchResults = null;
+    viewport.setHighlightedSeqs(null);
     // JAL-2034 - should delegate to
     // alignPanel to decide if overview needs
     // updating.
index cf88c90..b886552 100755 (executable)
@@ -61,8 +61,6 @@ public class IdCanvas extends JPanel implements ViewportListenerI
 
   boolean fastPaint = false;
 
-  List<SequenceI> searchResults;
-
   AnnotationPanel ap;
 
   private Font idfont;
@@ -103,7 +101,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
     int xPos = 0;
     int panelWidth = getWidth();
     int charHeight = av.getCharHeight();
-
+    List<SequenceI> searchResults = av.getHighlightedSeqs();
     if ((searchResults != null) && searchResults.contains(s))
     {
       g.setColor(Color.black);
@@ -163,6 +161,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
     }
 
     ViewportRanges ranges = av.getRanges();
+    List<SequenceI> searchResults = av.getHighlightedSeqs();
 
     gg.copyArea(0, 0, getWidth(), imgHeight, 0,
             -vertical * av.getCharHeight());
@@ -252,7 +251,8 @@ public class IdCanvas extends JPanel implements ViewportListenerI
     gg.setColor(Color.white);
     gg.fillRect(0, 0, getWidth(), imgHeight);
     
-    drawIds(gg, av, av.getRanges().getStartSeq(), av.getRanges().getEndSeq(), searchResults);
+    drawIds(gg, av, av.getRanges().getStartSeq(),
+            av.getRanges().getEndSeq(), av.getHighlightedSeqs());
     
     g.drawImage(image, 0, 0, this);
   }
@@ -544,18 +544,6 @@ public class IdCanvas extends JPanel implements ViewportListenerI
     return getIdfont();
   }
 
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param list
-   *          DOCUMENT ME!
-   */
-  public void setHighlighted(List<SequenceI> list)
-  {
-    searchResults = list;
-    repaint();
-  }
-
   public Font getIdfont()
   {
     return idfont;
index a183144..3c7e06f 100755 (executable)
@@ -430,10 +430,11 @@ public class IdPanel extends JPanel
    */
   public void highlightSearchResults(List<SequenceI> list)
   {
-    getIdCanvas().setHighlighted(list);
+    av.setHighlightedSeqs(list);
 
     if (list == null)
     {
+      idCanvas.repaint();
       return;
     }
 
@@ -445,6 +446,11 @@ public class IdPanel extends JPanel
     {
       av.getRanges().setStartSeq(index);
     }
+    else
+    {
+      // just repaint
+      idCanvas.repaint();
+    }
   }
 
   public IdCanvas getIdCanvas()
index c4390c0..916ffeb 100755 (executable)
@@ -110,7 +110,8 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
       @Override
       public void internalFrameClosing(InternalFrameEvent evt)
       {
-        ap.getIdPanel().getIdCanvas().setHighlighted(null);
+        ap.av.setHighlightedSeqs(null);
+        ap.getIdPanel().getIdCanvas().repaint();
       }
     });
 
@@ -202,7 +203,8 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
         redundantSequences.add(originalSequences[i]);
       }
     }
-    ap.getIdPanel().getIdCanvas().setHighlighted(redundantSequences);
+    ap.av.setHighlightedSeqs(redundantSequences);
+    ap.getIdPanel().getIdCanvas().repaint();
   }
 
   /**
index 1366ada..ea6c6f8 100644 (file)
@@ -2954,4 +2954,25 @@ public abstract class AlignmentViewport
   {
     return currentTree;
   }
+
+  List<SequenceI> highlightedSeqs = null;
+
+  /**
+   * Highlight the IDs for the given sequences call alignPanel.repaint() to
+   * update view after setting.
+   * 
+   * @param list
+   *          List<SequenceI>
+   */
+  @Override
+  public void setHighlightedSeqs(List<SequenceI> list)
+  {
+    highlightedSeqs = list;
+  }
+
+  @Override
+  public List<SequenceI> getHighlightedSeqs()
+  {
+    return highlightedSeqs;
+  }
 }