Control and shift for col selection
[jalview.git] / src / jalview / appletgui / ScalePanel.java
index f72ea7b..5419d27 100755 (executable)
@@ -63,34 +63,18 @@ public class ScalePanel
 \r
     min = res;\r
     max = res;\r
-    if (reveal != null\r
-        && (evt.getModifiers() & InputEvent.BUTTON3_MASK)\r
+    if ((evt.getModifiers() & InputEvent.BUTTON3_MASK)\r
         == InputEvent.BUTTON3_MASK)\r
     {\r
-\r
-      MenuItem item = new MenuItem("Reveal");\r
-      item.addActionListener(new ActionListener()\r
-      {\r
-        public void actionPerformed(ActionEvent e)\r
-        {\r
-          av.showColumn(reveal[0]);\r
-          reveal = null;\r
-          ap.repaint();\r
-          if (ap.overviewPanel != null)\r
-            ap.overviewPanel.updateOverviewImage();\r
-        }\r
-      });\r
       PopupMenu pop = new PopupMenu();\r
-      pop.add(item);\r
-\r
-      if (av.getColumnSelection().getHiddenColumns().size() > 1)\r
+      if (reveal != null)\r
       {\r
-        item = new MenuItem("Reveal All");\r
+        MenuItem item = new MenuItem("Reveal");\r
         item.addActionListener(new ActionListener()\r
         {\r
           public void actionPerformed(ActionEvent e)\r
           {\r
-            av.showAllHiddenColumns();\r
+            av.showColumn(reveal[0]);\r
             reveal = null;\r
             ap.repaint();\r
             if (ap.overviewPanel != null)\r
@@ -98,16 +82,26 @@ public class ScalePanel
           }\r
         });\r
         pop.add(item);\r
-      }\r
 \r
-      this.add(pop);\r
-      pop.show(this, evt.getX(), evt.getY());\r
-\r
-    }\r
-    else if (av.getColumnSelection().contains(res))\r
-    {\r
-      if ( (evt.getModifiers() & InputEvent.BUTTON3_MASK)\r
-          == InputEvent.BUTTON3_MASK)\r
+        if (av.getColumnSelection().getHiddenColumns().size() > 1)\r
+        {\r
+          item = new MenuItem("Reveal All");\r
+          item.addActionListener(new ActionListener()\r
+          {\r
+            public void actionPerformed(ActionEvent e)\r
+            {\r
+              av.showAllHiddenColumns();\r
+              reveal = null;\r
+              ap.repaint();\r
+              if (ap.overviewPanel != null)\r
+                ap.overviewPanel.updateOverviewImage();\r
+            }\r
+          });\r
+          pop.add(item);\r
+        }\r
+        pop.show(this, evt.getX(), evt.getY());\r
+      }\r
+      else if (av.getColumnSelection().contains(res))\r
       {\r
         MenuItem item = new MenuItem("Hide Columns");\r
         item.addActionListener(new ActionListener()\r
@@ -120,22 +114,19 @@ public class ScalePanel
               ap.overviewPanel.updateOverviewImage();\r
           }\r
         });\r
-        PopupMenu pop = new PopupMenu();\r
         pop.add(item);\r
-        this.add(pop);\r
         pop.show(this, evt.getX(), evt.getY());\r
       }\r
-      else\r
-      {\r
-        av.getColumnSelection().removeElement(res);\r
-        av.setSelectionGroup(null);\r
-      }\r
     }\r
-    else\r
+    else // LEFT MOUSE TO SELECT\r
     {\r
+      if (!evt.isControlDown() && !evt.isShiftDown())\r
+      {\r
+        av.getColumnSelection().clear();\r
+      }\r
+\r
       av.getColumnSelection().addElement(res);\r
       SequenceGroup sg = new SequenceGroup();\r
-\r
       for (int i = 0; i < av.alignment.getSequences().size(); i++)\r
       {\r
         sg.addSequence(av.alignment.getSequenceAt(i), false);\r
@@ -144,7 +135,20 @@ public class ScalePanel
       sg.setStartRes(res);\r
       sg.setEndRes(res);\r
       av.setSelectionGroup(sg);\r
+\r
+      if(evt.isShiftDown())\r
+      {\r
+        int min = Math.min(av.getColumnSelection().getMin(), res);\r
+        int max = Math.max(av.getColumnSelection().getMax(), res);\r
+        for (int i = min; i<max; i++)\r
+        {\r
+            av.getColumnSelection().addElement(i);\r
+        }\r
+        sg.setStartRes(min);\r
+        sg.setEndRes(max);\r
+      }\r
     }\r
+\r
     ap.repaint();\r
   }\r
 \r