patched for JAL-531 - only display full symbol distribution stats on tooltip/annotati...
authorjprocter <Jim Procter>
Fri, 11 Jun 2010 07:59:54 +0000 (07:59 +0000)
committerjprocter <Jim Procter>
Fri, 11 Jun 2010 07:59:54 +0000 (07:59 +0000)
src/jalview/appletgui/AlignFrame.java
src/jalview/appletgui/AlignViewport.java
src/jalview/datamodel/SequenceGroup.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/AnnotationLabels.java
src/jalview/gui/Jalview2XML.java

index b8ed2f1..0aefe9b 100755 (executable)
@@ -1683,8 +1683,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       for (int g = 0; g < gps.length; g++)
       {
         // gps[g].setShowunconserved(viewport.getShowUnconserved());
-        gps[g].setIncludeAllConsSymbols(viewport
-                .isIncludeAllConsensusSymbols());
+        gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo());
         viewport.alignment.addGroup(gps[g]);
         Color col = new Color((int) (Math.random() * 255), (int) (Math
                 .random() * 255), (int) (Math.random() * 255));
index 85c8ab5..ff3fe55 100755 (executable)
@@ -559,7 +559,7 @@ public class AlignViewport
 
         hconsensus = new Hashtable[aWidth];
         AAFrequency.calculate(alignment.getSequencesArray(), 0, alignment
-                .getWidth(), hconsensus, includeAllConsensusSymbols);
+                .getWidth(), hconsensus, true); // always calculate the full profile
         AAFrequency.completeConsensus(consensus, hconsensus, 0, aWidth,
                 ignoreGapsInConsensusCalculation,
                 includeAllConsensusSymbols);
index cc71e4a..451250e 100755 (executable)
@@ -1079,17 +1079,18 @@ public class SequenceGroup
   }
 
   /**
-   * @param includeAllConsSymbols
-   *          the includeAllConsSymbols to set
+   * @param showSequenceLogo
+   *          indicates if a sequence logo is shown for consensus annotation
    */
-  public void setIncludeAllConsSymbols(boolean includeAllConsSymbols)
+  public void setshowSequenceLogo(boolean showSequenceLogo)
   {
-    if (this.showSequenceLogo != includeAllConsSymbols && consensus != null)
+    // TODO: decouple calculation from settings update
+    if (this.showSequenceLogo != showSequenceLogo && consensus != null)
     {
-      this.showSequenceLogo = includeAllConsSymbols;
+      this.showSequenceLogo = showSequenceLogo;
       recalcConservation();
     }
-    this.showSequenceLogo = includeAllConsSymbols;
+    this.showSequenceLogo = showSequenceLogo;
   }
 
   /**
index 2d1fc1e..87776d3 100755 (executable)
@@ -4714,8 +4714,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       for (int g = 0; g < gps.length; g++)
       {
         gps[g].setShowNonconserved(viewport.getShowUnconserved());
-        gps[g].setIncludeAllConsSymbols(viewport
-                .isIncludeAllConsensusSymbols());
+        gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo());
         viewport.alignment.addGroup(gps[g]);
         Color col = new Color((int) (Math.random() * 255), (int) (Math
                 .random() * 255), (int) (Math.random() * 255));
index 2791ffc..63695b6 100755 (executable)
@@ -433,7 +433,8 @@ public class AlignViewport implements SelectionSource
     showUnconserved = jalview.bin.Cache.getDefault("SHOW_UNCONSERVED",
             false);
     sortByTree = jalview.bin.Cache.getDefault("SORT_BY_TREE", false);
-    followSelection = jalview.bin.Cache.getDefault("FOLLOW_SELECTIONS", true); 
+    followSelection = jalview.bin.Cache.getDefault("FOLLOW_SELECTIONS",
+            true);
   }
 
   /**
@@ -477,11 +478,6 @@ public class AlignViewport implements SelectionSource
   private boolean shownpfeats;
 
   /**
-   * consensus annotation includes all percentage for all symbols in column
-   */
-  private boolean includeAllConsensusSymbols = true;
-
-  /**
    * trigger update of conservation annotation
    */
   public void updateConservation(final AlignmentPanel ap)
@@ -557,10 +553,8 @@ public class AlignViewport implements SelectionSource
 
         hconsensus = new Hashtable[aWidth];
         AAFrequency.calculate(alignment.getSequencesArray(), 0, alignment
-                .getWidth(), hconsensus, includeAllConsensusSymbols);
-        AAFrequency.completeConsensus(consensus, hconsensus, 0, aWidth,
-                ignoreGapsInConsensusCalculation,
-                includeAllConsensusSymbols);
+                .getWidth(), hconsensus, true);
+        updateAnnotation(true);
 
         if (globalColourScheme != null)
         {
@@ -583,6 +577,26 @@ public class AlignViewport implements SelectionSource
         ap.paintAlignment(true);
       }
     }
+
+    /**
+     * update the consensus annotation from the sequence profile data using
+     * current visualization settings.
+     */
+    public void updateAnnotation()
+    {
+      updateAnnotation(false);
+    }
+
+    protected void updateAnnotation(boolean immediate)
+    {
+      if (immediate
+              || (!updatingConsensus && consensus != null && hconsensus != null))
+      {
+        AAFrequency.completeConsensus(consensus, hconsensus, 0,
+                hconsensus.length, ignoreGapsInConsensusCalculation,
+                showSequenceLogo);
+      }
+    }
   }
 
   /**
@@ -2206,6 +2220,16 @@ public class AlignViewport implements SelectionSource
    */
   public void setShowSequenceLogo(boolean showSequenceLogo)
   {
+    if (showSequenceLogo != this.showSequenceLogo)
+    {
+      // TODO: decouple settings setting from calculation when refactoring
+      // annotation update method from alignframe to viewport
+      this.showSequenceLogo = showSequenceLogo;
+      if (consensusThread != null)
+      {
+        consensusThread.updateAnnotation();
+      }
+    }
     this.showSequenceLogo = showSequenceLogo;
   }
 
@@ -2253,24 +2277,6 @@ public class AlignViewport implements SelectionSource
   }
 
   /**
-   * @return the includeAllConsensusSymbols
-   */
-  public boolean isIncludeAllConsensusSymbols()
-  {
-    return includeAllConsensusSymbols;
-  }
-
-  /**
-   * @param includeAllConsensusSymbols
-   *          the includeAllConsensusSymbols to set
-   */
-  public void setIncludeAllConsensusSymbols(
-          boolean includeAllConsensusSymbols)
-  {
-    this.includeAllConsensusSymbols = includeAllConsensusSymbols;
-  }
-
-  /**
    * 
    * @return flag to indicate if the consensus histogram should be rendered by
    *         default
index 750e823..4f0d0e8 100755 (executable)
@@ -1366,7 +1366,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       if (applyGlobalSettings || !oldrfs.containsKey(sg))
       {
         // set defaults for this group's conservation/consensus
-        sg.setIncludeAllConsSymbols(showprf);
+        sg.setshowSequenceLogo(showprf);
         sg.setShowConsensusHistogram(showConsHist);
       }
       if (conv)
index 1033936..07a9b03 100755 (executable)
@@ -592,10 +592,10 @@ public class AnnotationLabels extends JPanel implements MouseListener,
             }
           });
           pop.add(chist);
-          final JCheckBoxMenuItem cprof = new JCheckBoxMenuItem(
+          final JCheckBoxMenuItem cprofl = new JCheckBoxMenuItem(
                   "Show Group Logo", aa[selectedRow].groupRef
                           .isShowSequenceLogo());
-          cprof.addActionListener(new ActionListener()
+          cprofl.addActionListener(new ActionListener()
           {
             public void actionPerformed(ActionEvent e)
             {
@@ -605,12 +605,12 @@ public class AnnotationLabels extends JPanel implements MouseListener,
               // view
               // can be
               // updated.
-              aaa.groupRef.setIncludeAllConsSymbols(cprof.getState());
+              aaa.groupRef.setshowSequenceLogo(cprofl.getState());
               ap.repaint();
               // ap.annotationPanel.paint(ap.annotationPanel.getGraphics());
             }
           });
-          pop.add(cprof);
+          pop.add(cprofl);
         }
         else
         {
index c59a125..af8b2c0 100755 (executable)
@@ -2245,7 +2245,7 @@ public class Jalview2XML
         ;
         if (groups[i].hasShowSequenceLogo())
         {
-          sg.setIncludeAllConsSymbols(groups[i].isShowSequenceLogo());
+          sg.setshowSequenceLogo(groups[i].isShowSequenceLogo());
         }
         if (groups[i].hasIgnoreGapsinConsensus())
         {
@@ -2948,8 +2948,6 @@ public class Jalview2XML
     }
 
     af.setMenusFromViewport(af.viewport);
-    // This is done twice - why ?
-    af.alignPanel.updateAnnotation(false); // recompute any autoannotation
     // TODO: we don't need to do this if the viewport is aready visible.
     Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(), view
             .getHeight());