JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / appletgui / SeqPanel.java
index 86dedfc..db6add7 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.appletgui;
 
-import java.awt.BorderLayout;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Panel;
-import java.awt.Point;
-import java.awt.event.InputEvent;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.util.List;
-import java.util.Vector;
-
 import jalview.api.AlignViewportI;
 import jalview.commands.EditCommand;
 import jalview.commands.EditCommand.Action;
+import jalview.datamodel.AlignmentI;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.SearchResults;
 import jalview.datamodel.SearchResults.Match;
@@ -52,6 +41,17 @@ import jalview.util.MappingUtils;
 import jalview.util.MessageManager;
 import jalview.viewmodel.AlignmentViewport;
 
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.util.Vector;
+
 public class SeqPanel extends Panel implements MouseMotionListener,
         MouseListener, SequenceListener, SelectionListener
 {
@@ -432,8 +432,9 @@ public class SeqPanel extends Panel implements MouseMotionListener,
     }
     else
     {
-      residue = "X".equalsIgnoreCase(displayChar) ? "X"
-              : ResidueProperties.aa2Triplet.get(displayChar);
+      residue = "X".equalsIgnoreCase(displayChar) ? "X" : ("*"
+              .equals(displayChar) ? "STOP" : ResidueProperties.aa2Triplet
+              .get(displayChar));
       if (residue != null)
       {
         text.append(" Residue: ").append(residue);
@@ -446,36 +447,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       pos = sequence.findPosition(res);
       text.append(" (").append(Integer.toString(pos)).append(")");
     }
-    // Object obj = null;
-    // if (av.getAlignment().isNucleotide())
-    // {
-    // obj = ResidueProperties.nucleotideName.get(sequence.getCharAt(res)
-    // + "");
-    // if (obj != null)
-    // {
-    // text.append(" Nucleotide: ");
-    // }
-    // }
-    // else
-    // {
-    // obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) + "");
-    // if (obj != null)
-    // {
-    // text.append("  Residue: ");
-    // }
-    // }
-    //
-    // if (obj != null)
-    // {
-    //
-    // if (obj != "")
-    // {
-    // text.append(obj + " (" + sequence.findPosition(res) + ")");
-    // }
-    // }
 
     ap.alignFrame.statusBar.setText(text.toString());
-
   }
 
   /**
@@ -483,23 +456,37 @@ public class SeqPanel extends Panel implements MouseMotionListener,
    * search results.
    * 
    * @param results
+   * @return true if results were matched, false if not
    */
-  private void setStatusMessage(SearchResults results)
+  private boolean setStatusMessage(SearchResults results)
   {
-    List<Match> matches = results.getResults();
-    if (!matches.isEmpty())
+    AlignmentI al = this.av.getAlignment();
+    int sequenceIndex = al.findIndex(results);
+    if (sequenceIndex == -1)
+    {
+      return false;
+    }
+    SequenceI ds = al.getSequenceAt(sequenceIndex).getDatasetSequence();
+    for (Match m : results.getResults())
     {
-      Match m = matches.get(0);
       SequenceI seq = m.getSequence();
-      int sequenceIndex = this.av.getAlignment().findIndex(seq);
+      if (seq.getDatasetSequence() != null)
+      {
+        seq = seq.getDatasetSequence();
+      }
 
-      /*
-       * Convert position in sequence (base 1) to sequence character array index
-       * (base 0)
-       */
-      int start = m.getStart() - 1;
-      setStatusMessage(seq, start, sequenceIndex);
+      if (seq == ds)
+      {
+        /*
+         * Convert position in sequence (base 1) to sequence character array
+         * index (base 0)
+         */
+        int start = m.getStart() - 1;
+        setStatusMessage(seq, start, sequenceIndex);
+        return true;
+      }
     }
+    return false;
   }
 
   public void mousePressed(MouseEvent evt)
@@ -577,8 +564,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       }
       if (features != null && features.length > 0)
       {
-        seqCanvas.getFeatureRenderer().amendFeatures(new SequenceI[]
-        { sequence }, features, false, ap);
+        seqCanvas.getFeatureRenderer().amendFeatures(
+                new SequenceI[] { sequence }, features, false, ap);
 
         seqCanvas.highlightSearchResults(null);
       }
@@ -620,8 +607,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       }
 
       int cHeight = av.getAlignment().getHeight() * av.getCharHeight()
-              + hgap
-              + seqCanvas.getAnnotationHeight();
+              + hgap + seqCanvas.getAnnotationHeight();
 
       int y = evt.getY();
       y -= hgap;
@@ -678,8 +664,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       }
 
       int cHeight = av.getAlignment().getHeight() * av.getCharHeight()
-              + hgap
-              + seqCanvas.getAnnotationHeight();
+              + hgap + seqCanvas.getAnnotationHeight();
 
       y -= hgap;
 
@@ -813,8 +798,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
     }
     else
     {
-      obj = "X".equalsIgnoreCase(ch) ? "X"
-              : ResidueProperties.aa2Triplet.get(ch);
+      obj = "X".equalsIgnoreCase(ch) ? "X" : ResidueProperties.aa2Triplet
+              .get(ch);
       if (obj != null)
       {
         text.append(" Residue: ").append(obj);
@@ -898,13 +883,15 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       for (int i = 0; i < features.length; i++)
       {
         if (av.getFeaturesDisplayed() == null
-                || !av.getFeaturesDisplayed().isVisible(features[i].getType()))
+                || !av.getFeaturesDisplayed().isVisible(
+                        features[i].getType()))
         {
           continue;
         }
 
         if (features[i].featureGroup != null
-                && !seqCanvas.fr.checkGroupVisibility(features[i].featureGroup,false))
+                && !seqCanvas.fr.checkGroupVisibility(
+                        features[i].featureGroup, false))
         {
           continue;
         }
@@ -1060,8 +1047,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       if (editCommand == null)
       {
         editCommand = new EditCommand(MessageManager.formatMessage(
-                "label.edit_params", new String[]
-                { label }));
+                "label.edit_params", new String[] { label }));
       }
     }
 
@@ -1295,14 +1281,14 @@ public class SeqPanel extends Panel implements MouseMotionListener,
         {
           for (int j = lastres; j < startres; j++)
           {
-            insertChar(j, new SequenceI[]
-            { seq }, fixedRight);
+            insertChar(j, new SequenceI[] { seq }, fixedRight);
           }
         }
         else
         {
-          editCommand.appendEdit(Action.INSERT_GAP, new SequenceI[]
-          { seq }, lastres, startres - lastres, av.getAlignment(), true);
+          editCommand.appendEdit(Action.INSERT_GAP,
+                  new SequenceI[] { seq }, lastres, startres - lastres,
+                  av.getAlignment(), true);
         }
       }
       else
@@ -1317,8 +1303,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
               endEditing();
               break;
             }
-            deleteChar(startres, new SequenceI[]
-            { seq }, fixedRight);
+            deleteChar(startres, new SequenceI[] { seq }, fixedRight);
           }
         }
         else
@@ -1336,8 +1321,9 @@ public class SeqPanel extends Panel implements MouseMotionListener,
 
           if (max > 0)
           {
-            editCommand.appendEdit(Action.DELETE_GAP, new SequenceI[]
-            { seq }, startres, max, av.getAlignment(), true);
+            editCommand.appendEdit(Action.DELETE_GAP,
+                    new SequenceI[] { seq }, startres, max,
+                    av.getAlignment(), true);
           }
         }
       }
@@ -1942,22 +1928,24 @@ public class SeqPanel extends Panel implements MouseMotionListener,
   protected boolean selectionFromTranslation(SequenceGroup seqsel,
           ColumnSelection colsel, SelectionSource source)
   {
-    if (!(source instanceof AlignViewportI)) {
+    if (!(source instanceof AlignViewportI))
+    {
       return false;
     }
     final AlignViewportI sourceAv = (AlignViewportI) source;
-    if (sourceAv.getCodingComplement() != av && av.getCodingComplement() != sourceAv)
+    if (sourceAv.getCodingComplement() != av
+            && av.getCodingComplement() != sourceAv)
     {
       return false;
     }
-  
+
     /*
      * Map sequence selection
      */
     SequenceGroup sg = MappingUtils.mapSequenceGroup(seqsel, sourceAv, av);
     av.setSelectionGroup(sg);
     av.isSelectionGroupChanged(true);
-  
+
     /*
      * Map column selection
      */
@@ -1965,10 +1953,10 @@ public class SeqPanel extends Panel implements MouseMotionListener,
             av);
     av.setColumnSelection(cs);
     av.isColSelChanged(true);
-  
+
     ap.scalePanelHolder.repaint();
     ap.repaint();
-  
+
     return true;
   }