JAL-1620 version bump and release notes
[jalview.git] / src / jalview / appletgui / AnnotationLabels.java
index 3d54ae1..85a2fbe 100755 (executable)
@@ -1,28 +1,31 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
  *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.appletgui;
 
 import java.util.*;
-
 import java.awt.*;
 import java.awt.event.*;
 
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 import jalview.util.ParseHtmlBodyAndLinks;
 
 public class AnnotationLabels extends Panel implements ActionListener,
@@ -91,10 +94,13 @@ public class AnnotationLabels extends Panel implements ActionListener,
     this.av = av;
   }
 
-  public void setScrollOffset(int y)
+  public void setScrollOffset(int y, boolean repaint)
   {
     scrollOffset = y;
-    repaint();
+    if (repaint)
+    {
+      repaint();
+    }
   }
 
   /**
@@ -405,7 +411,8 @@ public class AnnotationLabels extends Panel implements ActionListener,
     if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
     {
 
-      PopupMenu popup = new PopupMenu("Annotations");
+      PopupMenu popup = new PopupMenu(
+              MessageManager.getString("label.annotations"));
 
       MenuItem item = new MenuItem(ADDNEW);
       item.addActionListener(this);
@@ -448,7 +455,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
           {
             popup.addSeparator();
             final CheckboxMenuItem cbmi = new CheckboxMenuItem(
-                    "Ignore Gaps In Consensus",
+                    MessageManager.getString("label.ignore_gaps_consensus"),
                     (aa[selectedRow].groupRef != null) ? aa[selectedRow].groupRef
                             .getIgnoreGapsConsensus() : ap.av
                             .getIgnoreGapsConsensus());
@@ -473,7 +480,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
             if (aaa.groupRef != null)
             {
               final CheckboxMenuItem chist = new CheckboxMenuItem(
-                      "Show Group Histogram",
+                      MessageManager.getString("label.show_group_histogram"),
                       aa[selectedRow].groupRef.isShowConsensusHistogram());
               chist.addItemListener(new ItemListener()
               {
@@ -492,7 +499,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
               });
               popup.add(chist);
               final CheckboxMenuItem cprofl = new CheckboxMenuItem(
-                      "Show Group Logo",
+                      MessageManager.getString("label.show_group_logo"),
                       aa[selectedRow].groupRef.isShowSequenceLogo());
               cprofl.addItemListener(new ItemListener()
               {
@@ -512,7 +519,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
 
               popup.add(cprofl);
               final CheckboxMenuItem cprofn = new CheckboxMenuItem(
-                      "Normalise Group Logo",
+                      MessageManager.getString("label.normalise_group_logo"),
                       aa[selectedRow].groupRef.isNormaliseSequenceLogo());
               cprofn.addItemListener(new ItemListener()
               {
@@ -535,7 +542,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
             else
             {
               final CheckboxMenuItem chist = new CheckboxMenuItem(
-                      "Show Histogram", av.isShowConsensusHistogram());
+                      MessageManager.getString("label.show_histogram"), av.isShowConsensusHistogram());
               chist.addItemListener(new ItemListener()
               {
                 public void itemStateChanged(ItemEvent e)
@@ -557,7 +564,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
               });
               popup.add(chist);
               final CheckboxMenuItem cprof = new CheckboxMenuItem(
-                      "Show Logo", av.isShowSequenceLogo());
+                      MessageManager.getString("label.show_logo"), av.isShowSequenceLogo());
               cprof.addItemListener(new ItemListener()
               {
                 public void itemStateChanged(ItemEvent e)
@@ -580,7 +587,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
               });
               popup.add(cprof);
               final CheckboxMenuItem cprofn = new CheckboxMenuItem(
-                      "Normalise Logo", av.isNormaliseSequenceLogo());
+                      MessageManager.getString("label.normalise_logo"), av.isNormaliseSequenceLogo());
               cprofn.addItemListener(new ItemListener()
               {
                 public void itemStateChanged(ItemEvent e)
@@ -641,17 +648,40 @@ public class AnnotationLabels extends Panel implements ActionListener,
         }
         else if (aa[selectedRow].sequenceRef != null)
         {
-          Vector sr = new Vector();
-          sr.addElement(aa[selectedRow].sequenceRef);
           if (evt.getClickCount() == 1)
           {
-            ap.seqPanel.ap.idPanel.highlightSearchResults(sr);
+            ap.seqPanel.ap.idPanel.highlightSearchResults(Arrays
+                    .asList(new SequenceI[]
+                    { aa[selectedRow].sequenceRef }));
           }
           else if (evt.getClickCount() >= 2)
           {
             ap.seqPanel.ap.idPanel.highlightSearchResults(null);
-            SequenceGroup sg = new SequenceGroup();
-            sg.addSequence(aa[selectedRow].sequenceRef, false);
+            SequenceGroup sg = ap.av.getSelectionGroup();
+            if (sg!=null)
+            {
+              // we make a copy rather than edit the current selection if no modifiers pressed
+              // see Enhancement JAL-1557
+              if (!(evt.isControlDown() || evt.isShiftDown()))
+              {
+                sg = new SequenceGroup(sg);
+                sg.clear();
+                sg.addSequence(aa[selectedRow].sequenceRef, false);
+              } else {
+                if (evt.isControlDown())
+                {
+                  sg.addOrRemove(aa[selectedRow].sequenceRef, true);
+                } else {
+                  // notionally, we should also add intermediate sequences from last added sequence ?
+                  sg.addSequence(aa[selectedRow].sequenceRef, true);
+                }
+              }
+            } else {
+              sg = new SequenceGroup();
+              sg.setStartRes(0);
+              sg.setEndRes(ap.av.getAlignment().getWidth()-1);
+              sg.addSequence(aa[selectedRow].sequenceRef, false);
+            }
             ap.av.setSelectionGroup(sg);
             ap.paintAlignment(false);
             PaintRefresher.Refresh(ap, ap.av.getSequenceSetId());
@@ -765,8 +795,9 @@ public class AnnotationLabels extends Panel implements ActionListener,
     if (!av.wrapAlignment && ((aa == null) || (aa.length < 1)))
     {
       g.setColor(Color.black);
-      g.drawString("Right click", 2, 8);
-      g.drawString("to add annotation", 2, 18);
+      g.drawString(MessageManager.getString("label.right_click"), 2, 8);
+      g.drawString(MessageManager.getString("label.to_add_annotation"), 2,
+              18);
     }
   }
 }