From c4265973b98fb1c25891cf1cf5684dc213d589ae Mon Sep 17 00:00:00 2001
From: tcarver <tjc>
Date: Mon, 29 Oct 2012 15:46:36 +0000
Subject: [PATCH] add heatmap options

---
 .../artemis/components/alignment/BamView.java | 15 ++++++--
 .../components/alignment/CoveragePanel.java   |  5 +++
 .../components/alignment/GroupBamFrame.java   | 37 +++++++++++++++----
 3 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/uk/ac/sanger/artemis/components/alignment/BamView.java b/uk/ac/sanger/artemis/components/alignment/BamView.java
index d77f92a96..34199b863 100644
--- a/uk/ac/sanger/artemis/components/alignment/BamView.java
+++ b/uk/ac/sanger/artemis/components/alignment/BamView.java
@@ -216,6 +216,7 @@ public class BamView extends JPanel
   private AlphaComposite translucent = 
     AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.6f);
   
+  private GroupBamFrame groupsFrame = new GroupBamFrame(this, bamFilesMenu);
   private CoveragePanel coverageView = new CoveragePanel();
   
   protected static String BAM_SUFFIX = ".*\\.(bam|cram)$";
@@ -2413,9 +2414,8 @@ public class BamView extends JPanel
     });
     
     bamFilesMenu.setFont(addBam.getFont());
-    
+
     final JMenuItem groupBams = new JMenuItem("Group BAMs ...");
-    final GroupBamFrame groupsFrame = new GroupBamFrame(this, bamFilesMenu);
     groupBams.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent arg0)
       {
@@ -3688,7 +3688,7 @@ public class BamView extends JPanel
           if(coverageMenu == null)
           {
             coverageMenu = new JMenu("Coverage HeatMap");
-            final JCheckBoxMenuItem coverageGrid = new JCheckBoxMenuItem("Heatmap grid", false);
+            final JCheckBoxMenuItem coverageGrid = new JCheckBoxMenuItem("Show heatmap grid", false);
             coverageGrid.addActionListener(new ActionListener()
             {
               public void actionPerformed(ActionEvent e) 
@@ -3701,9 +3701,16 @@ public class BamView extends JPanel
             createGroup = new JMenuItem("Create group from selected BAMs");
             createGroup.addActionListener(new ActionListener()
             {
+              private int n = 1;
               public void actionPerformed(ActionEvent e) 
               {
-                
+                String groupName = "group_"+n;
+                groupsFrame.addGroup(groupName);
+                final List<String> selected = coverageView.getSelected();
+                for(String sel: selected)
+                  groupsFrame.addToGroup((new File(sel)).getName(), groupName);
+                groupsFrame.updateAndDisplay();
+                n++;
               }
             });
             coverageMenu.add(createGroup);
diff --git a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java
index 1f3c6e0a4..4810c54fb 100644
--- a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java
+++ b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java
@@ -624,6 +624,11 @@ import net.sf.samtools.SAMRecord;
     {
       return (selected.size() > 0);
     }
+    
+    protected List<String> getSelected()
+    {
+      return selected;
+    }
 
     class HeatMapLn
     {
diff --git a/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java b/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java
index 148a80d90..ee720fca2 100644
--- a/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java
+++ b/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java
@@ -66,7 +66,7 @@ class GroupBamFrame extends JFrame
     newGroup.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e)
       {
-        addGroup(bamView, bamFilesMenu, newGroup, jsp);
+        addGroup(newGroup.getText().trim());
       }
     });
     newGroup.addFocusListener(new java.awt.event.FocusAdapter() {
@@ -92,7 +92,7 @@ class GroupBamFrame extends JFrame
               JOptionPane.INFORMATION_MESSAGE);
           return;
         }
-        addGroup(bamView, bamFilesMenu, newGroup, jsp);
+        addGroup(newGroup.getText().trim());
       }
     });
     xBox.add(Box.createHorizontalGlue());
@@ -148,18 +148,16 @@ class GroupBamFrame extends JFrame
     setVisible(true);
   }
   
-  private void addGroup(final BamView bamView, final JMenu bamFilesMenu,
-                        final JTextField newGroup, final JScrollPane jsp)
+  protected void addGroup(final String newGroup)
   {
     final String tmpGroups[] = new String[groups.length+1];
-    for(int i=0; i<groups.length; i++)
-      tmpGroups[i] = groups[i];
-    tmpGroups[tmpGroups.length-1] = newGroup.getText().trim();
+    System.arraycopy(groups, 0, tmpGroups, 0, groups.length);
+    tmpGroups[tmpGroups.length-1] = newGroup;
     groups = tmpGroups;
     
     updateGroupPanel();
     updateBamPanel();
-    jsp.validate();
+    validate();
   }
   
   private void updateBamPanel()
@@ -203,6 +201,29 @@ class GroupBamFrame extends JFrame
     }
   }
   
+  /**
+   * Add a BAM to a specified group
+   * @param bam
+   * @param group
+   */
+  protected void addToGroup(String bam, String group)
+  {
+    final Component cs[] = bamFilesMenu.getMenuComponents();
+    for(Component cp : cs)
+    {
+      if(cp instanceof JCheckBoxMenuItem)
+      {
+        final JCheckBoxMenuItem cbBam = (JCheckBoxMenuItem) cp;
+        final String thisBam = cbBam.getText();
+        if(bam.equals(thisBam))
+        {
+          bamGroupMap.get(cbBam).setSelectedItem(group);
+          return;
+        }
+      }
+    }
+  }
+  
   /**
    * For a give BAM file return the group it belongs to.
    * @param bamName
-- 
GitLab