diff --git a/uk/ac/sanger/artemis/components/EntryEdit.java b/uk/ac/sanger/artemis/components/EntryEdit.java index 9c422c8bfd4ad17d0f11d9c020621a699434b4ba..4507e41b11a730c2d561abd9c2f961a6a47e1fb3 100644 --- a/uk/ac/sanger/artemis/components/EntryEdit.java +++ b/uk/ac/sanger/artemis/components/EntryEdit.java @@ -1873,7 +1873,7 @@ public class EntryEdit extends JFrame vcfPanel.removeAll(); vcfView = new VCFview(null, vcfPanel, vcfFiles, feature_display.getMaxVisibleBases(), 1, null, null, - feature_display); + this, feature_display); feature_display.addDisplayAdjustmentListener(vcfView); feature_display.getSelection().addSelectionChangeListener(vcfView); diff --git a/uk/ac/sanger/artemis/components/MultiComparator.java b/uk/ac/sanger/artemis/components/MultiComparator.java index 751605414e3f96373794bc47dd72670f43d8d195..b9a64b897040179a9cc5739a90d08ab8ad26dd26 100644 --- a/uk/ac/sanger/artemis/components/MultiComparator.java +++ b/uk/ac/sanger/artemis/components/MultiComparator.java @@ -1067,7 +1067,7 @@ public class MultiComparator extends JFrame VCFview vcfView = new VCFview(null, thisVCFPanel, vcfFiles, feature_display.getMaxVisibleBases(), 1, null, null, - feature_display); + null, feature_display); feature_display.addDisplayAdjustmentListener(vcfView); feature_display.getSelection().addSelectionChangeListener(vcfView); diff --git a/uk/ac/sanger/artemis/components/variant/VCFview.java b/uk/ac/sanger/artemis/components/variant/VCFview.java index 52bf4d9fa62aa12d7edde14055e8f78db9e9e0dd..c7f62a5a3d81b4506e90b5a4eb816ba01b136c8d 100644 --- a/uk/ac/sanger/artemis/components/variant/VCFview.java +++ b/uk/ac/sanger/artemis/components/variant/VCFview.java @@ -191,6 +191,7 @@ public class VCFview extends JPanel final int seqLength, final String chr, final String reference, + final EntryEdit entry_edit, final FeatureDisplay feature_display) { super(); @@ -198,6 +199,7 @@ public class VCFview extends JPanel this.nbasesInView = nbasesInView; this.seqLength = seqLength; this.chr = chr; + this.feature_display = feature_display; this.vcfPanel = vcfPanel; this.vcfFiles = vcfFiles; @@ -266,7 +268,8 @@ public class VCFview extends JPanel addMouseListener(new PopupListener()); // - createMenus(frame, jspView); + createTopPanel(frame, jspView, entry_edit); + createMenus(jspView); setDisplay(); if(feature_display == null) @@ -282,151 +285,8 @@ public class VCFview extends JPanel } } - private void createMenus(final JFrame frame, final JScrollPane jspView) - { - final JComponent topPanel; - if(feature_display != null) - topPanel = new JPanel(new FlowLayout(FlowLayout.LEADING, 0, 0)); - else - { - markNewStops.setSelected(false); - markNewStops.setEnabled(false); - topPanel = new JMenuBar(); - - if(frame != null) - frame.setJMenuBar((JMenuBar)topPanel); - - JMenu fileMenu = new JMenu("File"); - topPanel.add(fileMenu); - - JMenuItem printImage = new JMenuItem("Save As Image Files (png/jpeg)..."); - printImage.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - PrintVCFview part = new PrintVCFview(VCFview.this); - part.print(); - } - }); - fileMenu.add(printImage); - - JMenuItem printPS = new JMenuItem("Print..."); - printPS.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - PrintVCFview part = new PrintVCFview(VCFview.this); - part.validate(); - part.doPrintActions(); - } - }); - fileMenu.add(printPS); - - - JMenuItem close = new JMenuItem("Close"); - fileMenu.add(close); - close.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - VCFview.this.setVisible(false); - Component comp = VCFview.this; - - while( !(comp instanceof JFrame) ) - comp = comp.getParent(); - ((JFrame)comp).dispose(); - } - }); - - JButton zoomIn = new JButton("-"); - Insets ins = new Insets(1,1,1,1); - zoomIn.setMargin(ins); - zoomIn.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - setZoomLevel((int) (VCFview.this.nbasesInView * 1.1)); - } - }); - topPanel.add(zoomIn); - - JButton zoomOut = new JButton("+"); - zoomOut.setMargin(ins); - zoomOut.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - setZoomLevel((int) (VCFview.this.nbasesInView * .9)); - } - }); - topPanel.add(zoomOut); - } - - final JComboBox combo = new JComboBox(vcfReaders[0].getSeqNames()); - combo.setEditable(true); - JTextComponent editor = (JTextComponent) combo.getEditor().getEditorComponent(); - editor.setDocument(new AutoCompleteComboDocument(combo)); - - if(vcfReaders[0].getSeqNames().length > 1) - combo.addItem("Combine References"); - - if(chr == null) - this.chr = vcfReaders[0].getSeqNames()[0]; - - combo.setSelectedItem(this.chr); - combo.setMaximumRowCount(20); - - combo.addItemListener(new ItemListener() - { - public void itemStateChanged(ItemEvent e) - { - if(combo.getSelectedItem().equals("Combine References")) - concatSequences = true; - else - { - VCFview.this.chr = (String) combo.getSelectedItem(); - concatSequences = false; - } - repaint(); - } - }); - topPanel.add(combo); - if(topPanel instanceof JPanel) - vcfPanel.add(topPanel, BorderLayout.NORTH); - - // auto hide top panel - final JCheckBox buttonAutoHide = new JCheckBox("Hide", true); - buttonAutoHide.setToolTipText("Auto-Hide"); - topPanel.add(buttonAutoHide); - final MouseMotionListener mouseMotionListener = new MouseMotionListener() - { - public void mouseDragged(MouseEvent event) - { - handleCanvasMouseDrag(event); - } - - public void mouseMoved(MouseEvent e) - { - findVariantAtPoint(e.getPoint()); - - int thisHgt = HEIGHT; - if (thisHgt < 5) - thisHgt = 15; - - int y = (int) (e.getY() - jspView.getViewport().getViewRect().getY()); - if (y < thisHgt) - topPanel.setVisible(true); - else - { - if (buttonAutoHide.isSelected()) - topPanel.setVisible(false); - } - - } - }; - addMouseMotionListener(mouseMotionListener); - - + private void createMenus(final JScrollPane jspView) + { // popup menu popup = new JPopupMenu(); @@ -718,6 +578,167 @@ public class VCFview extends JPanel popup.add(labels); } + private void createTopPanel(final JFrame frame, final JScrollPane jspView, final EntryEdit entry_edit) + { + final JComponent topPanel; + if(feature_display != null) + topPanel = new JPanel(new FlowLayout(FlowLayout.LEADING, 0, 0)); + else + { + markNewStops.setSelected(false); + markNewStops.setEnabled(false); + topPanel = new JMenuBar(); + if(frame != null) + frame.setJMenuBar((JMenuBar)topPanel); + + JMenu fileMenu = new JMenu("File"); + topPanel.add(fileMenu); + + JMenuItem printImage = new JMenuItem("Save As Image Files (png/jpeg)..."); + printImage.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + PrintVCFview part = new PrintVCFview(VCFview.this); + part.print(); + } + }); + fileMenu.add(printImage); + + JMenuItem printPS = new JMenuItem("Print..."); + printPS.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + PrintVCFview part = new PrintVCFview(VCFview.this); + part.validate(); + part.doPrintActions(); + } + }); + fileMenu.add(printPS); + + + JMenuItem close = new JMenuItem("Close"); + fileMenu.add(close); + close.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + VCFview.this.setVisible(false); + Component comp = VCFview.this; + + while( !(comp instanceof JFrame) ) + comp = comp.getParent(); + ((JFrame)comp).dispose(); + } + }); + + JButton zoomIn = new JButton("-"); + Insets ins = new Insets(1,1,1,1); + zoomIn.setMargin(ins); + zoomIn.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + setZoomLevel((int) (VCFview.this.nbasesInView * 1.1)); + } + }); + topPanel.add(zoomIn); + + JButton zoomOut = new JButton("+"); + zoomOut.setMargin(ins); + zoomOut.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + setZoomLevel((int) (VCFview.this.nbasesInView * .9)); + } + }); + topPanel.add(zoomOut); + } + + final JComboBox combo = new JComboBox(vcfReaders[0].getSeqNames()); + combo.setEditable(true); + JTextComponent editor = (JTextComponent) combo.getEditor().getEditorComponent(); + editor.setDocument(new AutoCompleteComboDocument(combo)); + + if(vcfReaders[0].getSeqNames().length > 1) + combo.addItem("Combine References"); + + if(chr == null) + this.chr = vcfReaders[0].getSeqNames()[0]; + + combo.setSelectedItem(this.chr); + combo.setMaximumRowCount(20); + + combo.addItemListener(new ItemListener() + { + public void itemStateChanged(ItemEvent e) + { + if(combo.getSelectedItem().equals("Combine References")) + concatSequences = true; + else + { + VCFview.this.chr = (String) combo.getSelectedItem(); + concatSequences = false; + } + repaint(); + } + }); + topPanel.add(combo); + if(topPanel instanceof JPanel) + vcfPanel.add(topPanel, BorderLayout.NORTH); + + // auto hide top panel + final JCheckBox buttonAutoHide = new JCheckBox("Hide", true); + buttonAutoHide.setToolTipText("Auto-Hide"); + topPanel.add(buttonAutoHide); + final MouseMotionListener mouseMotionListener = new MouseMotionListener() + { + public void mouseDragged(MouseEvent event) + { + handleCanvasMouseDrag(event); + } + + public void mouseMoved(MouseEvent e) + { + findVariantAtPoint(e.getPoint()); + + int thisHgt = HEIGHT; + if (thisHgt < 5) + thisHgt = 15; + + int y = (int) (e.getY() - jspView.getViewport().getViewRect().getY()); + if (y < thisHgt) + topPanel.setVisible(true); + else + { + if (buttonAutoHide.isSelected()) + topPanel.setVisible(false); + } + + } + }; + addMouseMotionListener(mouseMotionListener); + + + if(feature_display != null) + { + JButton close = new JButton("Close"); + topPanel.add(close); + close.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + setVisible(false); + if(entry_edit != null) + entry_edit.setNGDivider(); + else + vcfPanel.setVisible(false); + } + }); + } + } private void addToViewMenu(final int thisBamIndex) { @@ -1825,7 +1846,8 @@ public class VCFview extends JPanel JFrame f = new JFrame(); new VCFview(f, (JPanel) f.getContentPane(), vcfFileList, - nbasesInView, 100000000, null, reference, null); + nbasesInView, 100000000, null, reference, null, null); + f.pack(); f.setVisible(true); }