diff --git a/uk/ac/sanger/artemis/components/alignment/BamView.java b/uk/ac/sanger/artemis/components/alignment/BamView.java index b5be95af4d02c58236e48f714cf06cff8c42050c..70937b38604615621b2f81e8bf0c32ea3e783fc5 100644 --- a/uk/ac/sanger/artemis/components/alignment/BamView.java +++ b/uk/ac/sanger/artemis/components/alignment/BamView.java @@ -50,6 +50,7 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; +import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; @@ -72,6 +73,7 @@ import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JCheckBoxMenuItem; @@ -2162,9 +2164,11 @@ public class BamView extends JPanel private void addToViewMenu(final int thisBamIndex) { - File f = new File(bamList.get(thisBamIndex)); + final File f = new File(bamList.get(thisBamIndex)); final JCheckBoxMenuItem cbBam = new JCheckBoxMenuItem( - f.getName(), true); + f.getName(), + getImageIcon(getColourByCoverageColour(thisBamIndex)), + true); bamFilesMenu.add(cbBam); cbBam.addActionListener(new ActionListener() { @@ -2179,8 +2183,48 @@ public class BamView extends JPanel } }); } - + /** + * Refresh the colour of the icons used to identify the + * BAM files. + */ + protected void refreshColourOfBamMenu() + { + final Component cs[] = bamFilesMenu.getMenuComponents(); + for(Component c : cs) + { + if(c instanceof JCheckBoxMenuItem) + { + final JCheckBoxMenuItem cbBam = (JCheckBoxMenuItem) c; + final String bam = cbBam.getText(); + + for(int i=0; i<bamList.size(); i++) + { + final File f = new File(bamList.get(i)); + if(f.getName().equals(bam)) + { + cbBam.setIcon(getImageIcon(getColourByCoverageColour(i))); + break; + } + } + } + } + } + + /** + * Create an icon of a box using the given colour. + * @param c + * @return + */ + private ImageIcon getImageIcon(Color c) + { + BufferedImage image = (BufferedImage)this.createImage(10, 10); + Graphics2D g2 = image.createGraphics(); + g2.setColor(c); + g2.fillRect(0, 0, 10, 10); + return new ImageIcon(image); + } + private void createMenus(JComponent menu) { final JMenuItem addBam = new JMenuItem("Add BAM ..."); @@ -3042,12 +3086,18 @@ public class BamView extends JPanel */ private Color getColourByCoverageColour(SAMRecord samRecord) { - LineAttributes lines[] = CoveragePanel.getLineAttributes(bamList.size()); int fileIndex = 0; if(bamList.size()>1) fileIndex = (Integer) samRecord.getAttribute("FL"); + return getColourByCoverageColour(fileIndex); + } + + private Color getColourByCoverageColour(final int fileIndex) + { + LineAttributes lines[] = CoveragePanel.getLineAttributes(bamList.size()); return lines[fileIndex].getLineColour(); } + protected int getMaxBases() { diff --git a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java index 3a287fcf125bbf5043c646f058259739965efdc9..31b2de5539fe76f5482c3d181b942b9e37e28e09 100644 --- a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java +++ b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java @@ -87,6 +87,7 @@ import net.sf.samtools.SAMRecord; lines = LineAttributes.configurePlots(bamView.bamList, getLineAttributes(size), CoveragePanel.this); + bamView.refreshColourOfBamMenu(); } }); menu.add(configure);