JAL-1683 replace year/version strings with tokens in source
[jalview.git] / src / jalview / appletgui / AnnotationLabels.java
index b5ebbbe..f288188 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.appletgui;
 
-import java.util.*;
-import java.awt.*;
-import java.awt.event.*;
-
-import jalview.datamodel.*;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
 import jalview.util.MessageManager;
 import jalview.util.ParseHtmlBodyAndLinks;
 
+import java.awt.Checkbox;
+import java.awt.CheckboxMenuItem;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.MenuItem;
+import java.awt.Panel;
+import java.awt.PopupMenu;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.util.Arrays;
+import java.util.Vector;
+
 public class AnnotationLabels extends Panel implements ActionListener,
         MouseListener, MouseMotionListener
 {
@@ -221,7 +243,9 @@ public class AnnotationLabels extends Panel implements ActionListener,
       return true;
     }
     else
+    {
       return false;
+    }
 
   }
 
@@ -455,7 +479,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());
@@ -480,7 +504,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()
               {
@@ -499,7 +523,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()
               {
@@ -519,7 +543,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()
               {
@@ -542,7 +566,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)
@@ -564,7 +588,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)
@@ -587,7 +611,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)
@@ -660,9 +684,22 @@ public class AnnotationLabels extends Panel implements ActionListener,
             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);
@@ -700,11 +737,8 @@ public class AnnotationLabels extends Panel implements ActionListener,
     if (av.hasHiddenColumns())
     {
       jalview.appletgui.AlignFrame.copiedHiddenColumns = new Vector();
-      for (int i = 0; i < av.getColumnSelection().getHiddenColumns().size(); i++)
+      for (int[] region : av.getColumnSelection().getHiddenColumns())
       {
-        int[] region = (int[]) av.getColumnSelection().getHiddenColumns()
-                .elementAt(i);
-
         jalview.appletgui.AlignFrame.copiedHiddenColumns
                 .addElement(new int[]
                 { region[0], region[1] });