From c205c08f9a18d6354d6ec967c287949f182a4288 Mon Sep 17 00:00:00 2001
From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04>
Date: Thu, 9 Dec 2010 11:08:38 +0000
Subject: [PATCH] move all filters to VCFFilter class

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@15214 ee4ac58c-ac51-4696-9907-e4b3aa274f04
---
 .../artemis/components/variant/VCFFilter.java | 98 ++++++++++++++++++-
 .../artemis/components/variant/VCFview.java   | 88 +++--------------
 2 files changed, 107 insertions(+), 79 deletions(-)

diff --git a/uk/ac/sanger/artemis/components/variant/VCFFilter.java b/uk/ac/sanger/artemis/components/variant/VCFFilter.java
index d5d7f6ad5..72e425edd 100644
--- a/uk/ac/sanger/artemis/components/variant/VCFFilter.java
+++ b/uk/ac/sanger/artemis/components/variant/VCFFilter.java
@@ -1,11 +1,13 @@
 package uk.ac.sanger.artemis.components.variant;
 
+import java.awt.Font;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
 import javax.swing.JButton;
+import javax.swing.JCheckBox;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -24,19 +26,109 @@ public class VCFFilter extends JFrame
   private static float MAX_CI95 = 10;
   
   /**
-   * Filter VCF records by different values in the record, QUAL, DP, MQ and AF1.
+   * Filter VCF records by the variant type and/or by different values in 
+   * the record, QUAL, DP, MQ and AF1.
    * @param vcfView
    */
   public VCFFilter(final VCFview vcfView)
   {
-    super("Filter");
+    super("Variant Filter");
     GridBagConstraints c = new GridBagConstraints();
     
     JPanel panel = (JPanel)getContentPane();
     panel.setLayout(new GridBagLayout());
 
-    // min quality
+    // Filter by type
+    c.gridx = 0;
     c.gridy = 0;
+    c.anchor = GridBagConstraints.WEST;
+    JLabel typeLabel = new JLabel("TYPE:");
+    typeLabel.setFont(typeLabel.getFont().deriveFont(Font.BOLD));
+    panel.add(typeLabel, c);
+    
+    c.gridy = c.gridy + 1;
+    final JCheckBox showSyn = new JCheckBox("Synonymous", vcfView.showSynonymous);
+    panel.add(showSyn, c);
+    showSyn.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        vcfView.showSynonymous = showSyn.isSelected();
+        vcfView.repaint();
+      }
+    });
+
+    c.gridy = c.gridy + 1;
+    final JCheckBox showNonSyn = new JCheckBox("Non-synonymous", vcfView.showNonSynonymous);
+    panel.add(showNonSyn, c);
+    showNonSyn.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        vcfView.showNonSynonymous = showNonSyn.isSelected();
+        vcfView.repaint();
+      }
+    });
+    
+    c.gridy = c.gridy + 1;
+    final JCheckBox showDeletionsMenu = new JCheckBox("Deletions", vcfView.showDeletions);
+    panel.add(showDeletionsMenu, c);
+    showDeletionsMenu.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        vcfView.showDeletions = showDeletionsMenu.isSelected();
+        vcfView.repaint();
+      }
+    });
+
+    c.gridy = c.gridy + 1;
+    final JCheckBox showInsertionsMenu = new JCheckBox("Insertions", vcfView.showInsertions);
+    panel.add(showInsertionsMenu, c);
+    showInsertionsMenu.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        vcfView.showInsertions = showInsertionsMenu.isSelected();
+        vcfView.repaint();
+      }
+    });
+    
+    c.gridy = c.gridy + 1;
+    final JCheckBox showMultiAllelesMenu = new JCheckBox("Multiple alleles", vcfView.showMultiAlleles);
+    panel.add(showMultiAllelesMenu, c);
+    showMultiAllelesMenu.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        vcfView.showMultiAlleles = showMultiAllelesMenu.isSelected();
+        vcfView.repaint();
+      }
+    });
+    
+    c.gridy = c.gridy + 1;
+    final JCheckBox showNonOverlappingsMenu = new JCheckBox("Varaints not overlapping CDS", vcfView.showNonOverlappings);
+    panel.add(showNonOverlappingsMenu, c);
+    showNonOverlappingsMenu.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        vcfView.showNonOverlappings = showNonOverlappingsMenu.isSelected();
+        vcfView.repaint();
+      }
+    });
+    
+    if(vcfView.getEntryGroup() == null || vcfView.getEntryGroup().getAllFeaturesCount() == 0)
+    {
+      showSyn.setEnabled(false);
+      showNonSyn.setEnabled(false);
+      showNonOverlappingsMenu.setEnabled(false);
+    }
+    
+    // Filter by property
+    c.gridy = c.gridy+1;
+    panel.add(new JLabel(" "), c);
+    c.gridy = c.gridy+1;
+    JLabel propLabel = new JLabel("PROPERTY:");
+    propLabel.setFont(propLabel.getFont().deriveFont(Font.BOLD));
+    panel.add(propLabel, c);
+    
+    // min quality
+    c.gridy = c.gridy+1;
     c.gridx = 0;
     c.anchor = GridBagConstraints.WEST;
     panel.add(new JLabel("Minimum quality score (QUAL):"), c);
diff --git a/uk/ac/sanger/artemis/components/variant/VCFview.java b/uk/ac/sanger/artemis/components/variant/VCFview.java
index 1b58cdc28..00f94267f 100644
--- a/uk/ac/sanger/artemis/components/variant/VCFview.java
+++ b/uk/ac/sanger/artemis/components/variant/VCFview.java
@@ -133,19 +133,18 @@ public class VCFview extends JPanel
   private JPopupMenu popup;
   private int LINE_HEIGHT = 15;
   
-  private boolean showSynonymous = true;
-  private boolean showNonSynonymous = true;
-  private boolean showDeletions = true;
-  private boolean showInsertions = true;
-  private boolean showMultiAlleles = true;
+  protected boolean showSynonymous = true;
+  protected boolean showNonSynonymous = true;
+  protected boolean showDeletions = true;
+  protected boolean showInsertions = true;
+  protected boolean showMultiAlleles = true;
+  // show variants that do not overlap CDS
+  protected boolean showNonOverlappings = true;
   
   private boolean markAsNewStop = false;
   final JCheckBoxMenuItem markNewStops =
     new JCheckBoxMenuItem("Mark new stops within CDS features", true);
   
-  // show variants that do not overlap CDS
-  private boolean showNonOverlappings = true;
-  
   Hashtable<String, Integer> offsetLengths = null;
   private boolean concatSequences = false;
 
@@ -424,75 +423,7 @@ public class VCFview extends JPanel
     popup.add(addVCFMenu);
     popup.addSeparator();
     
-    JMenu showMenu = new JMenu("Show");
-    popup.add(showMenu);
-    
-    final JCheckBoxMenuItem showSyn = new JCheckBoxMenuItem(
-        "Synonymous", showSynonymous);
-    showSyn.addActionListener(new ActionListener(){
-      public void actionPerformed(ActionEvent e)
-      {
-        showSynonymous = showSyn.isSelected();
-        repaint();
-      }
-    });
-    showMenu.add(showSyn);
-    
-    final JCheckBoxMenuItem showNonSyn = new JCheckBoxMenuItem(
-        "Non-synonymous", showNonSynonymous);
-    showNonSyn.addActionListener(new ActionListener(){
-      public void actionPerformed(ActionEvent e)
-      {
-        showNonSynonymous = showNonSyn.isSelected();
-        repaint();
-      }
-    });
-    showMenu.add(showNonSyn);
-    
     
-    final JCheckBoxMenuItem showDeletionsMenu = new JCheckBoxMenuItem(
-        "Deletions", showDeletions);
-    showDeletionsMenu.addActionListener(new ActionListener(){
-      public void actionPerformed(ActionEvent e)
-      {
-        showDeletions = showDeletionsMenu.isSelected();
-        repaint();
-      }
-    });
-    showMenu.add(showDeletionsMenu);
-    
-    final JCheckBoxMenuItem showInsertionsMenu = new JCheckBoxMenuItem(
-        "Insertions", showInsertions);
-    showInsertionsMenu.addActionListener(new ActionListener(){
-      public void actionPerformed(ActionEvent e)
-      {
-        showInsertions = showInsertionsMenu.isSelected();
-        repaint();
-      }
-    });
-    showMenu.add(showInsertionsMenu);
-    
-    final JCheckBoxMenuItem showMultiAllelesMenu = new JCheckBoxMenuItem(
-        "Multiple alleles", showMultiAlleles);
-    showMultiAllelesMenu.addActionListener(new ActionListener(){
-      public void actionPerformed(ActionEvent e)
-      {
-        showMultiAlleles = showMultiAllelesMenu.isSelected();
-        repaint();
-      }
-    });
-    showMenu.add(showMultiAllelesMenu);
-    
-    final JCheckBoxMenuItem showNonOverlappingsMenu = new JCheckBoxMenuItem(
-        "Varaints not overlapping CDS", showNonOverlappings);
-    showNonOverlappingsMenu.addActionListener(new ActionListener(){
-      public void actionPerformed(ActionEvent e)
-      {
-        showNonOverlappings = showNonOverlappingsMenu.isSelected();
-        repaint();
-      }
-    });
-    showMenu.add(showNonOverlappingsMenu);
     
     markNewStops.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e)
@@ -1439,6 +1370,11 @@ public class VCFview extends JPanel
     return (float)vcfPanel.getWidth() / (float)nbasesInView;
   }
   
+  protected EntryGroup getEntryGroup()
+  {
+    return entryGroup;
+  }
+  
   /**
    * Popup menu listener
    */
-- 
GitLab