mev-4.0.01/source/org/tigr/microarray/mev/VarianceFilterDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * VarianceFilterDialog.java
2 26 Feb 07 jari 3  *
2 26 Feb 07 jari 4  * Created on January 17, 2005, 9:38 PM
2 26 Feb 07 jari 5  */
2 26 Feb 07 jari 6
2 26 Feb 07 jari 7
2 26 Feb 07 jari 8  
2 26 Feb 07 jari 9 package org.tigr.microarray.mev;
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 import java.awt.Dimension;
2 26 Feb 07 jari 12 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 13 import java.awt.GridBagLayout;
2 26 Feb 07 jari 14 import java.awt.Insets;
2 26 Feb 07 jari 15 import java.awt.Toolkit;
2 26 Feb 07 jari 16 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 17 import java.awt.event.ActionListener;
2 26 Feb 07 jari 18 import java.awt.event.KeyEvent;
2 26 Feb 07 jari 19 import java.awt.event.KeyListener;
2 26 Feb 07 jari 20 import java.awt.event.WindowAdapter;
2 26 Feb 07 jari 21 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 22 import java.util.Properties;
2 26 Feb 07 jari 23
2 26 Feb 07 jari 24 import javax.swing.ButtonGroup;
2 26 Feb 07 jari 25 import javax.swing.JCheckBox;
2 26 Feb 07 jari 26 import javax.swing.JFrame;
2 26 Feb 07 jari 27 import javax.swing.JLabel;
2 26 Feb 07 jari 28 import javax.swing.JOptionPane;
2 26 Feb 07 jari 29 import javax.swing.JRadioButton;
2 26 Feb 07 jari 30 import javax.swing.JTextField;
2 26 Feb 07 jari 31
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.ParameterPanel;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 35
2 26 Feb 07 jari 36 /**
2 26 Feb 07 jari 37  *
2 26 Feb 07 jari 38  * @author  braisted
2 26 Feb 07 jari 39  */
2 26 Feb 07 jari 40 public class VarianceFilterDialog extends AlgorithmDialog {
2 26 Feb 07 jari 41
2 26 Feb 07 jari 42     private int result;
2 26 Feb 07 jari 43     private JCheckBox enableFilterBox;
2 26 Feb 07 jari 44     private JTextField valueField;
2 26 Feb 07 jari 45     private JRadioButton percentButton, numberButton, sdValueButton;
2 26 Feb 07 jari 46     private JLabel valueLabel;
2 26 Feb 07 jari 47     
2 26 Feb 07 jari 48    /** Creates a new instance of VarianceFilterDialog */
2 26 Feb 07 jari 49     public VarianceFilterDialog(JFrame parent) {
2 26 Feb 07 jari 50     
2 26 Feb 07 jari 51   super(parent, "Variance Filter", true);  
2 26 Feb 07 jari 52         
2 26 Feb 07 jari 53   Listener listener = new Listener();
2 26 Feb 07 jari 54
2 26 Feb 07 jari 55         ParameterPanel panel = new ParameterPanel("Filter Settings");
2 26 Feb 07 jari 56         panel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 57         
2 26 Feb 07 jari 58         enableFilterBox = new JCheckBox("Enable Variance Filter", true);
2 26 Feb 07 jari 59         enableFilterBox.setOpaque(false);
2 26 Feb 07 jari 60         enableFilterBox.setFocusPainted(false);
2 26 Feb 07 jari 61         enableFilterBox.setActionCommand("enable-box-command");        
2 26 Feb 07 jari 62         enableFilterBox.addActionListener(listener);
2 26 Feb 07 jari 63         
2 26 Feb 07 jari 64         ButtonGroup group = new ButtonGroup();
2 26 Feb 07 jari 65         
2 26 Feb 07 jari 66         percentButton = new JRadioButton("Percentage of Highest SD Genes (1-100)", true);
2 26 Feb 07 jari 67         percentButton.setFocusPainted(false);
2 26 Feb 07 jari 68         percentButton.setOpaque(false);
2 26 Feb 07 jari 69         group.add(percentButton);
2 26 Feb 07 jari 70         
2 26 Feb 07 jari 71         numberButton = new JRadioButton("Number of Desired High SD Genes");
2 26 Feb 07 jari 72         numberButton.setFocusPainted(false);
2 26 Feb 07 jari 73         numberButton.setOpaque(false);
2 26 Feb 07 jari 74         group.add(numberButton);
2 26 Feb 07 jari 75
2 26 Feb 07 jari 76         sdValueButton = new JRadioButton("SD Cutoff Value", true);
2 26 Feb 07 jari 77         sdValueButton.setFocusPainted(false);
2 26 Feb 07 jari 78         sdValueButton.setOpaque(false);
2 26 Feb 07 jari 79         group.add(sdValueButton);
2 26 Feb 07 jari 80
2 26 Feb 07 jari 81         valueLabel = new JLabel("Value: ");
2 26 Feb 07 jari 82         valueField = new JTextField("50",10);
2 26 Feb 07 jari 83         valueField.selectAll();
2 26 Feb 07 jari 84
2 26 Feb 07 jari 85         panel.add(enableFilterBox, new GridBagConstraints(0,0,2,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH, new Insets(10,0,20,0),0,0));
2 26 Feb 07 jari 86         panel.add(percentButton, new GridBagConstraints(0,1,2,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 87         panel.add(numberButton, new GridBagConstraints(0,2,2,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 88         panel.add(sdValueButton, new GridBagConstraints(0,3,2,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 89         panel.add(valueLabel, new GridBagConstraints(0,4,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH, new Insets(20,0,30,0),0,0));
2 26 Feb 07 jari 90         panel.add(valueField, new GridBagConstraints(1,4,1,1,0,0,GridBagConstraints.WEST,GridBagConstraints.VERTICAL, new Insets(20,10,30,0),0,0));
2 26 Feb 07 jari 91         
2 26 Feb 07 jari 92         addContent(panel);
2 26 Feb 07 jari 93         setActionListeners(listener);
2 26 Feb 07 jari 94         addWindowListener(listener);
2 26 Feb 07 jari 95   pack();
2 26 Feb 07 jari 96   setResizable(false);     
2 26 Feb 07 jari 97     }
2 26 Feb 07 jari 98     
2 26 Feb 07 jari 99     public int showModal() {
2 26 Feb 07 jari 100   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 101   setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 102   show();
2 26 Feb 07 jari 103   return result;
2 26 Feb 07 jari 104     }
2 26 Feb 07 jari 105     
2 26 Feb 07 jari 106     private void enableControls(boolean enable) {
2 26 Feb 07 jari 107         this.percentButton.setEnabled(enable);
2 26 Feb 07 jari 108         this.numberButton.setEnabled(enable);
2 26 Feb 07 jari 109         this.sdValueButton.setEnabled(enable);
2 26 Feb 07 jari 110         this.valueField.setEnabled(enable);
2 26 Feb 07 jari 111         this.valueLabel.setEnabled(enable);
2 26 Feb 07 jari 112     }
2 26 Feb 07 jari 113     
2 26 Feb 07 jari 114     private void resetControls() {
2 26 Feb 07 jari 115         enableFilterBox.setSelected(true);
2 26 Feb 07 jari 116         percentButton.setSelected(true);
2 26 Feb 07 jari 117         valueField.setText("50");
2 26 Feb 07 jari 118         valueField.selectAll();
2 26 Feb 07 jari 119         enableControls(true);
2 26 Feb 07 jari 120     }
2 26 Feb 07 jari 121     
2 26 Feb 07 jari 122     public Properties getProperties() {
2 26 Feb 07 jari 123         Properties props = new Properties();
2 26 Feb 07 jari 124         
2 26 Feb 07 jari 125         if(enableFilterBox.isSelected()) {
2 26 Feb 07 jari 126             props.setProperty("Filter Enabled", "true");
2 26 Feb 07 jari 127             if(percentButton.isSelected())
2 26 Feb 07 jari 128                 props.setProperty("Filter Mode", "percent mode");
2 26 Feb 07 jari 129             else if(numberButton.isSelected())
2 26 Feb 07 jari 130                 props.setProperty("Filter Mode", "number of genes mode");
2 26 Feb 07 jari 131             else
2 26 Feb 07 jari 132                 props.setProperty("Filter Mode", "sd value mode");
2 26 Feb 07 jari 133             
2 26 Feb 07 jari 134             props.setProperty("Value", valueField.getText());
2 26 Feb 07 jari 135         } else {  
2 26 Feb 07 jari 136             props.setProperty("Filter Enabled", "false");
2 26 Feb 07 jari 137         }
2 26 Feb 07 jari 138         return props;
2 26 Feb 07 jari 139         
2 26 Feb 07 jari 140     }
2 26 Feb 07 jari 141     
2 26 Feb 07 jari 142     private boolean validateValues() {
2 26 Feb 07 jari 143         boolean valid = true;
2 26 Feb 07 jari 144         if(percentButton.isSelected()) {
2 26 Feb 07 jari 145             
2 26 Feb 07 jari 146             try {
2 26 Feb 07 jari 147                 Float.parseFloat(valueField.getText());
2 26 Feb 07 jari 148                 
2 26 Feb 07 jari 149             } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 150                 valid = false;
2 26 Feb 07 jari 151                 JOptionPane.showMessageDialog(this, "Improper input format.", "Input Format Error", JOptionPane.ERROR_MESSAGE);                
2 26 Feb 07 jari 152             }            
2 26 Feb 07 jari 153             if(valid) {
2 26 Feb 07 jari 154                 float value = Float.parseFloat(valueField.getText());
2 26 Feb 07 jari 155                 if(value <= 0 || value > 100) {
2 26 Feb 07 jari 156                     valid = false;
2 26 Feb 07 jari 157                     JOptionPane.showMessageDialog(this, "Improper value range. (valid range is 0 < x <= 100)", "Input Format Error", JOptionPane.ERROR_MESSAGE);                                    
2 26 Feb 07 jari 158                 }
2 26 Feb 07 jari 159             }            
2 26 Feb 07 jari 160         } else if(numberButton.isSelected()) {
2 26 Feb 07 jari 161             try {
2 26 Feb 07 jari 162                 Integer.parseInt(valueField.getText());
2 26 Feb 07 jari 163             } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 164                 valid = false;
2 26 Feb 07 jari 165                 JOptionPane.showMessageDialog(this, "Improper input format. Value should be an integer.", "Input Format Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 166             }
2 26 Feb 07 jari 167             if(valid) {
2 26 Feb 07 jari 168                 int value = Integer.parseInt(valueField.getText());
2 26 Feb 07 jari 169                 if(value <= 0) {
2 26 Feb 07 jari 170                     valid = false;
2 26 Feb 07 jari 171                     JOptionPane.showMessageDialog(this, "Improper value range. (valid range is x > 0)", "Input Format Error", JOptionPane.ERROR_MESSAGE);                                    
2 26 Feb 07 jari 172                 }
2 26 Feb 07 jari 173             }            
2 26 Feb 07 jari 174         } else {
2 26 Feb 07 jari 175             try {
2 26 Feb 07 jari 176                 Float.parseFloat(valueField.getText());
2 26 Feb 07 jari 177             } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 178                 valid = false;
2 26 Feb 07 jari 179                 JOptionPane.showMessageDialog(this, "Improper input format.", "Input Format Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 180             }
2 26 Feb 07 jari 181             if(valid) {
2 26 Feb 07 jari 182                 float value = Float.parseFloat(valueField.getText());
2 26 Feb 07 jari 183                 if(value < 0) {
2 26 Feb 07 jari 184                     valid = false;
2 26 Feb 07 jari 185                     JOptionPane.showMessageDialog(this, "Improper value range. (valid range is x >= 0)", "Input Format Error", JOptionPane.ERROR_MESSAGE);                                    
2 26 Feb 07 jari 186                 }
2 26 Feb 07 jari 187             }                        
2 26 Feb 07 jari 188         }
2 26 Feb 07 jari 189         return valid;
2 26 Feb 07 jari 190     }
2 26 Feb 07 jari 191     
2 26 Feb 07 jari 192     private class Listener extends WindowAdapter implements ActionListener, KeyListener {
2 26 Feb 07 jari 193   public void actionPerformed(ActionEvent event) {
2 26 Feb 07 jari 194       String command = event.getActionCommand();
2 26 Feb 07 jari 195       if (command.equals("ok-command")) {
2 26 Feb 07 jari 196                 if(!validateValues())
2 26 Feb 07 jari 197                     return;
2 26 Feb 07 jari 198     onOk();
2 26 Feb 07 jari 199       } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 200     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 201     dispose();
2 26 Feb 07 jari 202       } else if (command.equals("reset-command")) {               
2 26 Feb 07 jari 203                 resetControls();
2 26 Feb 07 jari 204             } else if (command.equals("enable-box-command")) {
2 26 Feb 07 jari 205                 enableControls(enableFilterBox.isSelected());
2 26 Feb 07 jari 206             } else if (command.equals("info-command")){
2 26 Feb 07 jari 207                 HelpWindow hw = new HelpWindow(VarianceFilterDialog.this, "Variance Filter Dialog");
2 26 Feb 07 jari 208                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 209                 if(hw.getWindowContent()){
2 26 Feb 07 jari 210                     hw.setSize(550,600);
2 26 Feb 07 jari 211                     hw.setLocation();
2 26 Feb 07 jari 212                     hw.show();
2 26 Feb 07 jari 213                     return;
2 26 Feb 07 jari 214                 }
2 26 Feb 07 jari 215                 else {
2 26 Feb 07 jari 216                     hw.setVisible(false);
2 26 Feb 07 jari 217                     hw.dispose();
2 26 Feb 07 jari 218                     return;
2 26 Feb 07 jari 219                 }
2 26 Feb 07 jari 220             }
2 26 Feb 07 jari 221   }
2 26 Feb 07 jari 222   
2 26 Feb 07 jari 223   public void keyPressed(KeyEvent event) {
2 26 Feb 07 jari 224       if (event.getKeyCode() == KeyEvent.VK_ENTER) {
2 26 Feb 07 jari 225     onOk();
2 26 Feb 07 jari 226       }
2 26 Feb 07 jari 227   }
2 26 Feb 07 jari 228   
2 26 Feb 07 jari 229   public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 230       result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 231       dispose();
2 26 Feb 07 jari 232   }
2 26 Feb 07 jari 233   
2 26 Feb 07 jari 234   public void keyReleased(KeyEvent event) {;}
2 26 Feb 07 jari 235   public void keyTyped(KeyEvent event) {;}
2 26 Feb 07 jari 236   
2 26 Feb 07 jari 237   private void onOk() {
2 26 Feb 07 jari 238       try {
2 26 Feb 07 jari 239   
2 26 Feb 07 jari 240     result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 241       } catch (Exception exception) {
2 26 Feb 07 jari 242     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 243       }
2 26 Feb 07 jari 244       dispose();
2 26 Feb 07 jari 245   }
2 26 Feb 07 jari 246     }
2 26 Feb 07 jari 247     
2 26 Feb 07 jari 248     public static void main(String [] args) {
2 26 Feb 07 jari 249         VarianceFilterDialog d = new VarianceFilterDialog(new JFrame());
2 26 Feb 07 jari 250         d.showModal();
2 26 Feb 07 jari 251     }
2 26 Feb 07 jari 252 }
2 26 Feb 07 jari 253