diff --git a/uk/ac/sanger/artemis/components/alignment/BamView.java b/uk/ac/sanger/artemis/components/alignment/BamView.java index b5dfe35203b5737d4f04b42496d19db0aa161f4c..5fb944a03e7bf4c931ee922b7a4081da735e9e1f 100644 --- a/uk/ac/sanger/artemis/components/alignment/BamView.java +++ b/uk/ac/sanger/artemis/components/alignment/BamView.java @@ -198,6 +198,7 @@ public class BamView extends JPanel private JCheckBoxMenuItem cbStrandStackView = new JCheckBoxMenuItem("Strand Stack"); private JCheckBoxMenuItem cbIsizeStackView = new JCheckBoxMenuItem("Inferred Size", false); private JCheckBoxMenuItem cbCoverageView = new JCheckBoxMenuItem("Coverage", false); + private JCheckBoxMenuItem cbCoverageStrandView = new JCheckBoxMenuItem("Coverage by Strand", false); private JCheckBoxMenuItem cbLastSelected; private ButtonGroup buttonGroup = new ButtonGroup(); @@ -328,6 +329,7 @@ public class BamView extends JPanel buttonGroup.add(cbStrandStackView); buttonGroup.add(cbIsizeStackView); buttonGroup.add(cbCoverageView); + buttonGroup.add(cbCoverageStrandView); addMouseListener(new PopupListener()); jspView = new JScrollPane(this, @@ -2385,6 +2387,7 @@ public class BamView extends JPanel cbPairedStackView.setFont(viewMenu.getFont()); cbStrandStackView.setFont(viewMenu.getFont()); cbCoverageView.setFont(viewMenu.getFont()); + cbCoverageStrandView.setFont(viewMenu.getFont()); baseQualityColour.setFont(viewMenu.getFont()); colourByCoverageColour.setFont(viewMenu.getFont()); @@ -2431,9 +2434,8 @@ public class BamView extends JPanel { laststart = -1; if(isStrandStackView()) - { setViewportMidPoint(); - } + logMenuItem.setEnabled(isIsizeStackView()); repaint(); } @@ -2448,15 +2450,30 @@ public class BamView extends JPanel logMenuItem.setEnabled(isIsizeStackView()); if(cbCoverageView.isSelected()) { - Point p = jspView.getViewport().getLocation(); - p.y = getHeight(); - jspView.getViewport().setViewPosition(p); + coverageView.setPlotByStrand(false); + setViewportBtm(); } repaint(); } }); viewMenu.add(cbCoverageView); + cbCoverageStrandView.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + laststart = -1; + logMenuItem.setEnabled(isIsizeStackView()); + if(cbCoverageStrandView.isSelected()) + { + coverageView.setPlotByStrand(true); + setViewportBtm(); + } + repaint(); + } + }); + viewMenu.add(cbCoverageStrandView); + menu.add(viewMenu); final JCheckBoxMenuItem checkBoxSNPs = new JCheckBoxMenuItem("SNP marks"); @@ -2542,7 +2559,9 @@ public class BamView extends JPanel isCoverage = !isCoverage; coveragePanel.setVisible(isCoverage); - if(isCoverage && !cbCoverageView.isSelected()) + if( isCoverage && + !cbCoverageView.isSelected() && + !cbCoverageStrandView.isSelected() ) laststart = -1; repaint(); } @@ -2917,6 +2936,12 @@ public class BamView extends JPanel jspView.getViewport().setViewPosition(p); } + private void setViewportBtm() + { + jspView.getVerticalScrollBar().setValue( + jspView.getVerticalScrollBar().getMaximum()); + } + protected int getBaseAtStartOfView() { if(feature_display != null) @@ -2951,12 +2976,13 @@ public class BamView extends JPanel } else if(jspView != null) { - if(!cbCoverageView.isSelected() && nbasesInView >= MAX_BASES) + if(!cbCoverageView.isSelected() && !cbCoverageStrandView.isSelected() && nbasesInView >= MAX_BASES) { cbLastSelected = getSelectedCheckBoxMenuItem(); cbCoverageView.setSelected(true); + coverageView.setPlotByStrand(false); } - else if(cbCoverageView.isSelected() && nbasesInView < MAX_BASES && cbLastSelected != null) + else if((cbCoverageView.isSelected() || cbCoverageStrandView.isSelected()) && nbasesInView < MAX_BASES && cbLastSelected != null) { cbLastSelected.setSelected(true); cbLastSelected = null; @@ -2965,8 +2991,7 @@ public class BamView extends JPanel jspView.setColumnHeaderView(null); if(!isStrandStackView()) - jspView.getVerticalScrollBar().setValue( - jspView.getVerticalScrollBar().getMaximum()); + setViewportBtm(); else setViewportMidPoint(); showBaseAlignment = false; @@ -3185,7 +3210,7 @@ public class BamView extends JPanel { if(isBaseAlignmentView(pixPerBase)) return false; - return cbCoverageView.isSelected(); + return cbCoverageView.isSelected() || cbCoverageStrandView.isSelected(); } private boolean isIsizeStackView() @@ -3210,7 +3235,9 @@ public class BamView extends JPanel return cbStrandStackView; if(isIsizeStackView()) return cbIsizeStackView; - return cbCoverageView; + if(cbCoverageView.isSelected()) + return cbCoverageView; + return cbCoverageStrandView; } protected Selection getSelection() diff --git a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java index c1a321bab5c6d2ea7fce69eadeb9ecba513a2521..be456c4813c6fb6bc67f834f9261a0259bf53d13 100644 --- a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java +++ b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java @@ -38,7 +38,6 @@ import java.util.Hashtable; import java.util.List; import javax.swing.JCheckBox; -import javax.swing.JCheckBoxMenuItem; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JMenuItem; @@ -61,7 +60,7 @@ import net.sf.samtools.SAMRecord; private boolean setMaxBases = false; private boolean plotByStrand = false; - + protected CoveragePanel(final BamView bamView) { this(); @@ -104,18 +103,6 @@ import net.sf.samtools.SAMRecord; } }); menu.add(optMenu); - - final JCheckBoxMenuItem strandMenu = new JCheckBoxMenuItem("Plot by strand", plotByStrand); - strandMenu.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - plotByStrand = strandMenu.isSelected(); - redraw = true; - bamView.repaint(); - } - }); - menu.add(strandMenu); } /** @@ -378,6 +365,15 @@ import net.sf.samtools.SAMRecord; return redraw; } + /** + * @param plotByStrand the plotByStrand to set + */ + protected void setPlotByStrand(boolean plotByStrand) + { + redraw = true; + this.plotByStrand = plotByStrand; + } + private void defineOpts() { final JPanel opts = new JPanel(new GridBagLayout()); @@ -425,12 +421,7 @@ import net.sf.samtools.SAMRecord; showCombined.setEnabled(false); c.gridy = c.gridy+1; opts.add(showCombined, c); - - - final JCheckBox byStrand = new JCheckBox("Plot by strand", plotByStrand); - c.gridy = c.gridy+1; - opts.add(byStrand, c); - + String window_options[] = { "OK", "Cancel" }; int select = JOptionPane.showOptionDialog(null, opts, "Coverage Options", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, @@ -442,7 +433,7 @@ import net.sf.samtools.SAMRecord; redraw = true; autoWinSize = autoSet.isSelected(); includeCombined = showCombined.isSelected(); - plotByStrand = byStrand.isSelected(); + try { userWinSize = Integer.parseInt(newWinSize.getText().trim());