JAL-1384 group/ungroup sequences with command/ctrl+G and shift+command/ctrl+G
authorJim Procter <jprocter@compbio.dundee.ac.uk>
Mon, 7 Oct 2013 16:44:11 +0000 (17:44 +0100)
committerJim Procter <jprocter@compbio.dundee.ac.uk>
Tue, 8 Oct 2013 10:52:27 +0000 (11:52 +0100)
src/jalview/appletgui/AlignFrame.java
src/jalview/gui/AlignFrame.java
src/jalview/jbgui/GAlignFrame.java

index 2cf7602..3325525 100644 (file)
@@ -544,6 +544,20 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       }
       break;
 
+    case KeyEvent.VK_G:
+      if (evt.isControlDown())
+      {
+        if (evt.isShiftDown())
+        {
+          this.unGroup_actionPerformed();
+        }
+        else
+        {
+          this.createGroup_actionPerformed();
+        }
+      }
+      break;
+      
     case KeyEvent.VK_U:
       if (evt.isControlDown())
       {
@@ -1896,6 +1910,17 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     }
   }
 
+  protected void createGroup_actionPerformed()
+  {
+    avc.createGroup();
+  }
+  protected void unGroup_actionPerformed()
+  {
+    if (avc.unGroup())
+    {
+      alignPanel.alignmentChanged();
+    }
+  }
   protected void deleteGroups_actionPerformed()
   {
     if (avc.deleteGroups())
@@ -2848,6 +2873,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   MenuItem grpsFromSelection = new MenuItem();
 
+  MenuItem createGroup = new MenuItem();
+
+  MenuItem unGroup = new MenuItem();
+
   MenuItem delete = new MenuItem();
 
   MenuItem copy = new MenuItem();
@@ -3056,6 +3085,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     deleteGroups.addActionListener(this);
     grpsFromSelection.setLabel("Make Groups for selection");
     grpsFromSelection.addActionListener(this);
+    createGroup.setLabel("Create Group");
+    unGroup.setLabel("Remove Group");
     copy.setLabel("Copy");
     copy.addActionListener(this);
     cut.setLabel("Cut");
@@ -3284,6 +3315,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     selectMenu.add(deselectAllSequenceMenuItem);
     selectMenu.add(invertSequenceMenuItem);
     selectMenu.add(invertColSel);
+    selectMenu.add(createGroup);
+    selectMenu.add(unGroup);
     selectMenu.add(grpsFromSelection);
     selectMenu.add(deleteGroups);
 
index 382ccda..d15f742 100755 (executable)
@@ -5467,6 +5467,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
   }
 
+  @Override
+  protected void createGroup_actionPerformed(ActionEvent e)
+  {
+    if (avc.createGroup())
+    {
+      alignPanel.alignmentChanged();
+    }
+  }
+
+  @Override
+  protected void unGroup_actionPerformed(ActionEvent e)
+  {
+    if (avc.unGroup())
+    {
+      alignPanel.alignmentChanged();
+    }
+  }
+
   /**
    * make the given alignmentPanel the currently selected tab
    * 
index b523763..1eb406e 100755 (executable)
@@ -181,6 +181,9 @@ public class GAlignFrame extends JInternalFrame
   public JCheckBoxMenuItem showSeqFeaturesHeight = new JCheckBoxMenuItem();
 
   JMenuItem deleteGroups = new JMenuItem();
+  
+  JMenuItem createGroup = new JMenuItem();
+  JMenuItem unGroup = new JMenuItem();
 
   JMenuItem delete = new JMenuItem();
 
@@ -1199,6 +1202,28 @@ public class GAlignFrame extends JInternalFrame
         deleteGroups_actionPerformed(e);
       }
     });
+    createGroup.setText("Create group");
+    createGroup.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
+            java.awt.event.KeyEvent.VK_G, Toolkit.getDefaultToolkit()
+                    .getMenuShortcutKeyMask(), false));
+    createGroup.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        createGroup_actionPerformed(e);
+      }
+    });
+    unGroup.setText("Ungroup");
+    unGroup.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
+            java.awt.event.KeyEvent.VK_G,Toolkit.getDefaultToolkit()
+                    .getMenuShortcutKeyMask() | java.awt.event.KeyEvent.SHIFT_MASK, false));
+    unGroup.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        unGroup_actionPerformed(e);
+      }
+    });
     copy.setText("Copy");
     copy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
             java.awt.event.KeyEvent.VK_C, Toolkit.getDefaultToolkit()
@@ -1946,6 +1971,8 @@ public class GAlignFrame extends JInternalFrame
     selectMenu.add(deselectAllSequenceMenuItem);
     selectMenu.add(invertSequenceMenuItem);
     selectMenu.add(invertColSel);
+    selectMenu.add(createGroup);
+    selectMenu.add(unGroup);
     selectMenu.add(deleteGroups);
     selectMenu.add(grpsFromSelection);
     // TODO - determine if the listenToViewSelections button is needed : see bug
@@ -2307,6 +2334,14 @@ public class GAlignFrame extends JInternalFrame
   protected void deleteGroups_actionPerformed(ActionEvent e)
   {
   }
+  
+  protected void createGroup_actionPerformed(ActionEvent e)
+  {
+  }
+  
+  protected void unGroup_actionPerformed(ActionEvent e)
+  {
+  }
 
   protected void copy_actionPerformed(ActionEvent e)
   {