diff --git a/uk/ac/sanger/artemis/components/EntryEdit.java b/uk/ac/sanger/artemis/components/EntryEdit.java index 82dbbbea2905744f8b24eae9d3a31ea88e3e5954..be8d1615db33111696f8aad93c92dfef33379bc8 100644 --- a/uk/ac/sanger/artemis/components/EntryEdit.java +++ b/uk/ac/sanger/artemis/components/EntryEdit.java @@ -20,7 +20,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/EntryEdit.java,v 1.79 2009-06-12 13:50:35 tjc Exp $ + * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/EntryEdit.java,v 1.80 2009-09-17 15:36:20 tjc Exp $ */ package uk.ac.sanger.artemis.components; @@ -29,6 +29,7 @@ import uk.ac.sanger.artemis.*; import uk.ac.sanger.artemis.chado.ChadoTransactionManager; import uk.ac.sanger.artemis.chado.CommitFrame; import uk.ac.sanger.artemis.circular.DNADraw; +import uk.ac.sanger.artemis.components.alignment.JamView; import uk.ac.sanger.artemis.components.alignment.LookSeqPanel; import uk.ac.sanger.artemis.components.filetree.FileList; import uk.ac.sanger.artemis.components.filetree.FileManager; @@ -68,7 +69,7 @@ import java.util.Vector; * Each object of this class is used to edit an EntryGroup object. * * @author Kim Rutherford - * @version $Id: EntryEdit.java,v 1.79 2009-06-12 13:50:35 tjc Exp $ + * @version $Id: EntryEdit.java,v 1.80 2009-09-17 15:36:20 tjc Exp $ * */ public class EntryEdit extends JFrame @@ -108,6 +109,10 @@ public class EntryEdit extends JFrame /** This Object contains the current selection. */ private Selection selection = null; + /** Alignment panel */ + private JamView jamView; + private JPanel jamPanel; + /** * The EntrySourceVector reference that is created in the constructor. **/ @@ -249,11 +254,17 @@ public class EntryEdit extends JFrame main_box_panel.add(jspLookSeq); } + + // one line per entry display one_line_per_entry_display = new FeatureDisplay(getEntryGroup(), getSelection(), getGotoEventSource(), base_plot_group); - + + // read alignment panel + jamPanel = new JPanel(); + main_box_panel.add(jamPanel); + one_line_per_entry_display.setShowLabels(false); one_line_per_entry_display.setOneLinePerEntry(true); one_line_per_entry_display.setVisible(false); @@ -1087,6 +1098,31 @@ public class EntryEdit extends JFrame display_menu.add(show_lookseq_item); } + display_menu.addSeparator(); + final JMenuItem show_Jam_item = new JMenuItem("BAM/SAM Alignment"); + show_Jam_item.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent event) + { + if (!jamView.isVisible()) + { + jamView.setVisible(true); + jamView.setDisplay(feature_display.getFirstVisibleForwardBase(), + feature_display.getLastVisibleForwardBase(), null); + jamView.revalidate(); + feature_display.addDisplayAdjustmentListener(jamView); + feature_display.getSelection().addSelectionChangeListener(jamView); + } + else + { + feature_display.removeDisplayAdjustmentListener(jamView); + feature_display.getSelection().removeSelectionChangeListener(jamView); + jamView.setVisible(false); + } + } + }); + display_menu.add(show_Jam_item); + menu_bar.add(display_menu); } @@ -1184,6 +1220,47 @@ public class EntryEdit extends JFrame file_menu.add(read_features_menu); } + file_menu.addSeparator(); + + JMenuItem read_bam_file = new JMenuItem("Read BAM/SAM"); + read_bam_file.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + StickyFileChooser fileChooser = new StickyFileChooser(); + int status = fileChooser.showOpenDialog(EntryEdit.this); + if(status != StickyFileChooser.APPROVE_OPTION) + return; + + File bamFile = fileChooser.getSelectedFile(); + // check bam index file exists + File bamIndexFile = new File(bamFile.getAbsolutePath()+".bai"); + if(!bamIndexFile.exists()) + { + JOptionPane.showMessageDialog(EntryEdit.this, + "BAM index file not found:"+bamIndexFile.getAbsolutePath(), + "Missing Index File", JOptionPane.WARNING_MESSAGE); + return; + } + + jamView = new JamView(bamFile.getAbsolutePath(), null, 2000); + jamView.setShowScale(false); + jamView.setBases(getEntryGroup().getBases()); + jamView.addJamToPanel(jamPanel, true, feature_display); + jamView.getJspView().setHorizontalScrollBarPolicy( + JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + jamView.removeBorder(); + + jamView.setVisible(true); + jamView.setDisplay(feature_display.getFirstVisibleForwardBase(), + feature_display.getLastVisibleForwardBase(), null); + jamPanel.revalidate(); + feature_display.addDisplayAdjustmentListener(jamView); + feature_display.getSelection().addSelectionChangeListener(jamView); + } + }); + file_menu.add(read_bam_file); + file_menu.addSeparator(); final JMenuItem save_default = @@ -2281,7 +2358,7 @@ class SaveEntryAsSubmissionActionListener extends EntryActionListener public void actionPerformed(final ActionEvent event) { getEntryEdit().saveEntry(getEntry(), false, true, false, - DocumentEntryFactory.ANY_FORMAT); + DocumentEntryFactory.EMBL_FORMAT); } }