mev-4.0.01/source/org/tigr/microarray/mev/script/scriptGUI/CentroidEntropyRankingInitDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * DiversityRankingInitDialog.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on May 30, 2004, 11:26 PM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.script.scriptGUI;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.Dimension;
2 26 Feb 07 jari 14 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 15 import java.awt.GridBagLayout;
2 26 Feb 07 jari 16 import java.awt.Insets;
2 26 Feb 07 jari 17 import java.awt.Toolkit;
2 26 Feb 07 jari 18 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 19 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 20
2 26 Feb 07 jari 21 import javax.swing.ButtonGroup;
2 26 Feb 07 jari 22 import javax.swing.JFrame;
2 26 Feb 07 jari 23 import javax.swing.JLabel;
2 26 Feb 07 jari 24 import javax.swing.JOptionPane;
2 26 Feb 07 jari 25 import javax.swing.JRadioButton;
2 26 Feb 07 jari 26 import javax.swing.JTextField;
2 26 Feb 07 jari 27
2 26 Feb 07 jari 28 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 29 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.ParameterPanel;
2 26 Feb 07 jari 31 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 32 /** Collects parameters for centroid ranking cluster selection.
2 26 Feb 07 jari 33  * @author braisted
2 26 Feb 07 jari 34  */
2 26 Feb 07 jari 35 public class CentroidEntropyRankingInitDialog extends AlgorithmDialog {
2 26 Feb 07 jari 36     
2 26 Feb 07 jari 37     /** result
2 26 Feb 07 jari 38      */    
2 26 Feb 07 jari 39     private int result;
2 26 Feb 07 jari 40     /** number of clusters input
2 26 Feb 07 jari 41      */    
2 26 Feb 07 jari 42     private JTextField numClustersField;
2 26 Feb 07 jari 43     /** minimum cluster size input
2 26 Feb 07 jari 44      */    
2 26 Feb 07 jari 45     private JTextField minClusterSizeField;
2 26 Feb 07 jari 46     /** selection for using centroid variance
2 26 Feb 07 jari 47      */    
2 26 Feb 07 jari 48     private JRadioButton centroidVarianceButton;
2 26 Feb 07 jari 49     /** selects entropy
2 26 Feb 07 jari 50      */    
2 26 Feb 07 jari 51     private JRadioButton centroidEntropyButton;
2 26 Feb 07 jari 52     
2 26 Feb 07 jari 53     
2 26 Feb 07 jari 54     /** Creates a new instance of DiversityRankingInitDialog */
2 26 Feb 07 jari 55     public CentroidEntropyRankingInitDialog(JFrame parent) {
2 26 Feb 07 jari 56         super(parent, "Centroid Variance or Entropy Ranking Cluster Selection", true);
2 26 Feb 07 jari 57         
2 26 Feb 07 jari 58         ParameterPanel paramPanel = new ParameterPanel("Selection Parameters");
2 26 Feb 07 jari 59         paramPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 60         
2 26 Feb 07 jari 61         JLabel clusterLabel = new JLabel("Desired Number of Clusters");
2 26 Feb 07 jari 62         numClustersField = new JTextField("3", 5);
2 26 Feb 07 jari 63         JLabel sizeLabel = new JLabel("Minimum Cluster Size (# genes)");
2 26 Feb 07 jari 64         minClusterSizeField = new JTextField("10");
2 26 Feb 07 jari 65         
2 26 Feb 07 jari 66         ButtonGroup bg = new ButtonGroup();
2 26 Feb 07 jari 67         centroidVarianceButton = new JRadioButton("Rank Clusters on Centroid Variance", true);
2 26 Feb 07 jari 68         centroidVarianceButton.setOpaque(false);
2 26 Feb 07 jari 69         bg.add(centroidVarianceButton);
2 26 Feb 07 jari 70         centroidVarianceButton.setFocusPainted(false);
2 26 Feb 07 jari 71         
2 26 Feb 07 jari 72         centroidEntropyButton = new JRadioButton("Rank Clusters on Centroid Entropy");
2 26 Feb 07 jari 73         centroidEntropyButton.setOpaque(false);
2 26 Feb 07 jari 74         bg.add(centroidEntropyButton);
2 26 Feb 07 jari 75         centroidEntropyButton.setFocusPainted(false);
2 26 Feb 07 jari 76         
2 26 Feb 07 jari 77         paramPanel.add(clusterLabel, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,10), 0,0));
2 26 Feb 07 jari 78         paramPanel.add(numClustersField, new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,10,0,0), 0,0));
2 26 Feb 07 jari 79         
2 26 Feb 07 jari 80         paramPanel.add(sizeLabel, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,0,0,10), 0,0));
2 26 Feb 07 jari 81         paramPanel.add(minClusterSizeField, new GridBagConstraints(1,1,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,10,0,0), 0,0));
2 26 Feb 07 jari 82         
2 26 Feb 07 jari 83         paramPanel.add(centroidVarianceButton, new GridBagConstraints(0,2,2,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(15,0,0,0), 0,0));
2 26 Feb 07 jari 84         paramPanel.add(centroidEntropyButton, new GridBagConstraints(0,3,2,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,0,10,0), 0,0));
2 26 Feb 07 jari 85         
2 26 Feb 07 jari 86         addContent(paramPanel);
2 26 Feb 07 jari 87         setActionListeners(new Listener());
2 26 Feb 07 jari 88         pack();
2 26 Feb 07 jari 89     }
2 26 Feb 07 jari 90     
2 26 Feb 07 jari 91     /**
2 26 Feb 07 jari 92      * Shows the dialog.
2 26 Feb 07 jari 93      */
2 26 Feb 07 jari 94     public int showModal() {
2 26 Feb 07 jari 95         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 96         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 97         show();
2 26 Feb 07 jari 98         return result;
2 26 Feb 07 jari 99     }
2 26 Feb 07 jari 100     
2 26 Feb 07 jari 101     /** returns the desired number of clusters from the selection
2 26 Feb 07 jari 102      */    
2 26 Feb 07 jari 103     public int getClusterNumber() {
2 26 Feb 07 jari 104         return Integer.parseInt(this.numClustersField.getText());
2 26 Feb 07 jari 105     }
2 26 Feb 07 jari 106     
2 26 Feb 07 jari 107     /** returns the minimum cluster size desired
2 26 Feb 07 jari 108      */    
2 26 Feb 07 jari 109     public int getClusterSize() {
2 26 Feb 07 jari 110         return Integer.parseInt(this.minClusterSizeField.getText());
2 26 Feb 07 jari 111     }
2 26 Feb 07 jari 112     
2 26 Feb 07 jari 113     /** returns true if variance based, else entropy based.
2 26 Feb 07 jari 114      */    
2 26 Feb 07 jari 115     public boolean isVarianceBased() {
2 26 Feb 07 jari 116         return this.centroidVarianceButton.isSelected();
2 26 Feb 07 jari 117     }
2 26 Feb 07 jari 118     
2 26 Feb 07 jari 119     /** resets controls
2 26 Feb 07 jari 120      */    
2 26 Feb 07 jari 121     private void resetControls() {
2 26 Feb 07 jari 122         this.numClustersField.setText("3");
2 26 Feb 07 jari 123         this.minClusterSizeField.setText("10");
2 26 Feb 07 jari 124         this.centroidVarianceButton.setSelected(true);
2 26 Feb 07 jari 125     }
2 26 Feb 07 jari 126     
2 26 Feb 07 jari 127     /** validates parameters
2 26 Feb 07 jari 128      */    
2 26 Feb 07 jari 129     private boolean validateParameters() {
2 26 Feb 07 jari 130         int level = 0;
2 26 Feb 07 jari 131         int n, c;
2 26 Feb 07 jari 132         try {
2 26 Feb 07 jari 133             n = Integer.parseInt(this.numClustersField.getText());
2 26 Feb 07 jari 134             level++;
2 26 Feb 07 jari 135             c = Integer.parseInt(this.minClusterSizeField.getText());
2 26 Feb 07 jari 136             level++;
2 26 Feb 07 jari 137         } catch (Exception e) {
2 26 Feb 07 jari 138             if(level == 0) {
2 26 Feb 07 jari 139                 JOptionPane.showMessageDialog(this, "The cluster number should be an integer > 0.\n" +
2 26 Feb 07 jari 140                 "Please enter a new value.", "Parameter Type Mismatch", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 141                 this.numClustersField.selectAll();
2 26 Feb 07 jari 142                 this.numClustersField.grabFocus();
2 26 Feb 07 jari 143                 return false;
2 26 Feb 07 jari 144             } else {
2 26 Feb 07 jari 145                 JOptionPane.showMessageDialog(this, "The minimum cluster population should be an integer > 0.\n" +
2 26 Feb 07 jari 146                 "Please enter a new value.", "Parameter Type Mismatch", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 147                 this.minClusterSizeField.selectAll();
2 26 Feb 07 jari 148                 this.minClusterSizeField.grabFocus();
2 26 Feb 07 jari 149                 return false;
2 26 Feb 07 jari 150             }
2 26 Feb 07 jari 151         }
2 26 Feb 07 jari 152         
2 26 Feb 07 jari 153         //type matches, check the values
2 26 Feb 07 jari 154         
2 26 Feb 07 jari 155         if(n < 1) {
2 26 Feb 07 jari 156             JOptionPane.showMessageDialog(this, "The cluster number should be an integer > 0.\n" +
2 26 Feb 07 jari 157             "Please enter a new value greater than zero.", "Parameter Value Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 158             this.numClustersField.selectAll();
2 26 Feb 07 jari 159             this.numClustersField.grabFocus();
2 26 Feb 07 jari 160             return false;            
2 26 Feb 07 jari 161         } else if(c < 1) {
2 26 Feb 07 jari 162             JOptionPane.showMessageDialog(this, "The minimum cluster size should be an integer > 0.\n" +
2 26 Feb 07 jari 163             "Please enter a new value greater than zero.", "Parameter Value Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 164             this.numClustersField.selectAll();
2 26 Feb 07 jari 165             this.numClustersField.grabFocus();
2 26 Feb 07 jari 166             return false;
2 26 Feb 07 jari 167         }        
2 26 Feb 07 jari 168         return true;
2 26 Feb 07 jari 169     }
2 26 Feb 07 jari 170     
2 26 Feb 07 jari 171     /**
2 26 Feb 07 jari 172      * @param args  */    
2 26 Feb 07 jari 173     /*public static void main(String [] args) {
2 26 Feb 07 jari 174         CentroidEntropyRankingInitDialog dialog = new CentroidEntropyRankingInitDialog(new JFrame());
2 26 Feb 07 jari 175         dialog.showModal();
2 26 Feb 07 jari 176     }
2 26 Feb 07 jari 177     */
2 26 Feb 07 jari 178     
2 26 Feb 07 jari 179     /**
2 26 Feb 07 jari 180      * The class to listen to the dialog events.
2 26 Feb 07 jari 181      */
2 26 Feb 07 jari 182     private class Listener extends DialogListener {
2 26 Feb 07 jari 183         
2 26 Feb 07 jari 184         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 185             String command = e.getActionCommand();
2 26 Feb 07 jari 186             
2 26 Feb 07 jari 187             if (command.equals("ok-command")) {
2 26 Feb 07 jari 188                 if(validateParameters()){
2 26 Feb 07 jari 189                     dispose();
2 26 Feb 07 jari 190                     result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 191                 }
2 26 Feb 07 jari 192                 return;
2 26 Feb 07 jari 193             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 194                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 195                 dispose();
2 26 Feb 07 jari 196                 return;
2 26 Feb 07 jari 197             }
2 26 Feb 07 jari 198             else if (command.equals("reset-command")) {
2 26 Feb 07 jari 199                 resetControls();
2 26 Feb 07 jari 200             }
2 26 Feb 07 jari 201             else if (command.equals("info-command")){
2 26 Feb 07 jari 202                 HelpWindow hw = new HelpWindow(CentroidEntropyRankingInitDialog.this, "Centroid Variance/Entropy Ranking Cluster Selection");
2 26 Feb 07 jari 203                 if(hw.getWindowContent()){
2 26 Feb 07 jari 204                     hw.setSize(450,650);
2 26 Feb 07 jari 205                     hw.setLocation();
2 26 Feb 07 jari 206                     hw.show();
2 26 Feb 07 jari 207                 }
2 26 Feb 07 jari 208                 else {
2 26 Feb 07 jari 209                     hw.setVisible(false);
2 26 Feb 07 jari 210                     hw.dispose();
2 26 Feb 07 jari 211                 }
2 26 Feb 07 jari 212             }
2 26 Feb 07 jari 213         }
2 26 Feb 07 jari 214         
2 26 Feb 07 jari 215         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 216             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 217             dispose();
2 26 Feb 07 jari 218         }
2 26 Feb 07 jari 219     }
2 26 Feb 07 jari 220     
2 26 Feb 07 jari 221 }