mev-4.0.01/source/org/tigr/microarray/mev/script/scriptGUI/DiversityRankingInitDialog.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
2 26 Feb 07 jari 33 /**
2 26 Feb 07 jari 34  *
2 26 Feb 07 jari 35  * @author  braisted
2 26 Feb 07 jari 36  */
2 26 Feb 07 jari 37 public class DiversityRankingInitDialog extends AlgorithmDialog {
2 26 Feb 07 jari 38     
2 26 Feb 07 jari 39     /** result
2 26 Feb 07 jari 40      */    
2 26 Feb 07 jari 41     private int result;
2 26 Feb 07 jari 42     /** number of clusters input field
2 26 Feb 07 jari 43      */    
2 26 Feb 07 jari 44     private JTextField numClustersField;
2 26 Feb 07 jari 45     /** min cluster size input control
2 26 Feb 07 jari 46      */    
2 26 Feb 07 jari 47     private JTextField minClusterSizeField;
2 26 Feb 07 jari 48     /** selects centroid based diversity method
2 26 Feb 07 jari 49      */    
2 26 Feb 07 jari 50     private JRadioButton centroidDiversityButton;
2 26 Feb 07 jari 51     /** selects gene-to-gene based diversity
2 26 Feb 07 jari 52      */    
2 26 Feb 07 jari 53     private JRadioButton geneDiversityButton;
2 26 Feb 07 jari 54     
2 26 Feb 07 jari 55     
2 26 Feb 07 jari 56     /** Creates a new instance of DiversityRankingInitDialog
2 26 Feb 07 jari 57      * @param parent parent component
2 26 Feb 07 jari 58      */
2 26 Feb 07 jari 59     public DiversityRankingInitDialog(JFrame parent) {
2 26 Feb 07 jari 60         super(parent, "Diversity Ranking Cluster Selection", true);
2 26 Feb 07 jari 61         
2 26 Feb 07 jari 62         ParameterPanel paramPanel = new ParameterPanel("Selection Parameters");
2 26 Feb 07 jari 63         paramPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 64         
2 26 Feb 07 jari 65         JLabel clusterLabel = new JLabel("Desired Number of Clusters");
2 26 Feb 07 jari 66         numClustersField = new JTextField("3", 5);
2 26 Feb 07 jari 67         JLabel sizeLabel = new JLabel("Minimum Cluster Size (# genes)");
2 26 Feb 07 jari 68         minClusterSizeField = new JTextField("10");
2 26 Feb 07 jari 69         
2 26 Feb 07 jari 70         ButtonGroup bg = new ButtonGroup();
2 26 Feb 07 jari 71         centroidDiversityButton = new JRadioButton("Rank Clusters on Centroid Based Diversity", true);
2 26 Feb 07 jari 72         centroidDiversityButton.setOpaque(false);
2 26 Feb 07 jari 73         bg.add(centroidDiversityButton);
2 26 Feb 07 jari 74         centroidDiversityButton.setFocusPainted(false);
2 26 Feb 07 jari 75         
2 26 Feb 07 jari 76         geneDiversityButton = new JRadioButton("Rank Clusters on Intra-gene Based Diversity");
2 26 Feb 07 jari 77         geneDiversityButton.setOpaque(false);
2 26 Feb 07 jari 78         bg.add(geneDiversityButton);
2 26 Feb 07 jari 79         geneDiversityButton.setFocusPainted(false);
2 26 Feb 07 jari 80         
2 26 Feb 07 jari 81         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 82         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 83         
2 26 Feb 07 jari 84         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 85         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 86         
2 26 Feb 07 jari 87         paramPanel.add(centroidDiversityButton, 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 88         paramPanel.add(geneDiversityButton, 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 89         
2 26 Feb 07 jari 90         addContent(paramPanel);
2 26 Feb 07 jari 91         setActionListeners(new Listener());
2 26 Feb 07 jari 92         pack();
2 26 Feb 07 jari 93     }
2 26 Feb 07 jari 94     
2 26 Feb 07 jari 95     /**
2 26 Feb 07 jari 96      * Shows the dialog.
2 26 Feb 07 jari 97      */
2 26 Feb 07 jari 98     public int showModal() {
2 26 Feb 07 jari 99         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 100         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 101         show();
2 26 Feb 07 jari 102         return result;
2 26 Feb 07 jari 103     }
2 26 Feb 07 jari 104     
2 26 Feb 07 jari 105     /** returns the desired number of clusters.
2 26 Feb 07 jari 106      * @return  */    
2 26 Feb 07 jari 107     public int getClusterNumber() {
2 26 Feb 07 jari 108         return Integer.parseInt(this.numClustersField.getText());
2 26 Feb 07 jari 109     }
2 26 Feb 07 jari 110     
2 26 Feb 07 jari 111     /** Returns min cluster size desired
2 26 Feb 07 jari 112      */    
2 26 Feb 07 jari 113     public int getClusterSize() {
2 26 Feb 07 jari 114         return Integer.parseInt(this.minClusterSizeField.getText());
2 26 Feb 07 jari 115     }
2 26 Feb 07 jari 116     
2 26 Feb 07 jari 117     /** if true selection is centroid based, else gene-to-gene based.
2 26 Feb 07 jari 118      */    
2 26 Feb 07 jari 119     public boolean isCentroidBased() {
2 26 Feb 07 jari 120         return this.centroidDiversityButton.isSelected();
2 26 Feb 07 jari 121     }
2 26 Feb 07 jari 122     
2 26 Feb 07 jari 123     /** resets controls
2 26 Feb 07 jari 124      */    
2 26 Feb 07 jari 125     private void resetControls() {
2 26 Feb 07 jari 126         this.numClustersField.setText("3");
2 26 Feb 07 jari 127         this.minClusterSizeField.setText("10");
2 26 Feb 07 jari 128         this.centroidDiversityButton.setSelected(true);
2 26 Feb 07 jari 129     }
2 26 Feb 07 jari 130     
2 26 Feb 07 jari 131     /** validates parameters
2 26 Feb 07 jari 132      */    
2 26 Feb 07 jari 133     private boolean validateParameters() {
2 26 Feb 07 jari 134         int level = 0;
2 26 Feb 07 jari 135         int n, c;
2 26 Feb 07 jari 136         try {
2 26 Feb 07 jari 137             n = Integer.parseInt(this.numClustersField.getText());
2 26 Feb 07 jari 138             level++;
2 26 Feb 07 jari 139             c = Integer.parseInt(this.minClusterSizeField.getText());
2 26 Feb 07 jari 140             level++;
2 26 Feb 07 jari 141         } catch (Exception e) {
2 26 Feb 07 jari 142             if(level == 0) {
2 26 Feb 07 jari 143                 JOptionPane.showMessageDialog(this, "The cluster number should be an integer > 0.\n" +
2 26 Feb 07 jari 144                 "Please enter a new value.", "Parameter Type Mismatch", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 145                 this.numClustersField.selectAll();
2 26 Feb 07 jari 146                 this.numClustersField.grabFocus();
2 26 Feb 07 jari 147                 return false;
2 26 Feb 07 jari 148             } else {
2 26 Feb 07 jari 149                 JOptionPane.showMessageDialog(this, "The minimum cluster population should be an integer > 0.\n" +
2 26 Feb 07 jari 150                 "Please enter a new value.", "Parameter Type Mismatch", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 151                 this.minClusterSizeField.selectAll();
2 26 Feb 07 jari 152                 this.minClusterSizeField.grabFocus();
2 26 Feb 07 jari 153                 return false;
2 26 Feb 07 jari 154             }
2 26 Feb 07 jari 155         }
2 26 Feb 07 jari 156         
2 26 Feb 07 jari 157         //type matches, check the values
2 26 Feb 07 jari 158         
2 26 Feb 07 jari 159         if(n < 1) {
2 26 Feb 07 jari 160             JOptionPane.showMessageDialog(this, "The cluster number should be an integer > 0.\n" +
2 26 Feb 07 jari 161             "Please enter a new value greater than zero.", "Parameter Value Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 162             this.numClustersField.selectAll();
2 26 Feb 07 jari 163             this.numClustersField.grabFocus();
2 26 Feb 07 jari 164             return false;            
2 26 Feb 07 jari 165         } else if(c < 1) {
2 26 Feb 07 jari 166             JOptionPane.showMessageDialog(this, "The minimum cluster size should be an integer > 0.\n" +
2 26 Feb 07 jari 167             "Please enter a new value greater than zero.", "Parameter Value Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 168             this.numClustersField.selectAll();
2 26 Feb 07 jari 169             this.numClustersField.grabFocus();
2 26 Feb 07 jari 170             return false;
2 26 Feb 07 jari 171         }        
2 26 Feb 07 jari 172         return true;
2 26 Feb 07 jari 173     }
2 26 Feb 07 jari 174     
2 26 Feb 07 jari 175     public static void main(String [] args) {
2 26 Feb 07 jari 176         DiversityRankingInitDialog dialog = new DiversityRankingInitDialog(new JFrame());
2 26 Feb 07 jari 177         dialog.showModal();
2 26 Feb 07 jari 178     }
2 26 Feb 07 jari 179    
2 26 Feb 07 jari 180     
2 26 Feb 07 jari 181     /**
2 26 Feb 07 jari 182      * The class to listen to the dialog events.
2 26 Feb 07 jari 183      */
2 26 Feb 07 jari 184     private class Listener extends DialogListener {
2 26 Feb 07 jari 185         
2 26 Feb 07 jari 186         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 187             String command = e.getActionCommand();
2 26 Feb 07 jari 188             
2 26 Feb 07 jari 189             if (command.equals("ok-command")) {
2 26 Feb 07 jari 190                 if(validateParameters()){
2 26 Feb 07 jari 191                     dispose();
2 26 Feb 07 jari 192                     result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 193                 }
2 26 Feb 07 jari 194                 return;
2 26 Feb 07 jari 195             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 196                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 197                 dispose();
2 26 Feb 07 jari 198                 return;
2 26 Feb 07 jari 199             }
2 26 Feb 07 jari 200             else if (command.equals("reset-command")) {
2 26 Feb 07 jari 201                 resetControls();
2 26 Feb 07 jari 202             }
2 26 Feb 07 jari 203             else if (command.equals("info-command")){
2 26 Feb 07 jari 204                 HelpWindow hw = new HelpWindow(DiversityRankingInitDialog.this, "Diversity Ranking Cluster Selection");
2 26 Feb 07 jari 205                 if(hw.getWindowContent()){
2 26 Feb 07 jari 206                     hw.setSize(450,650);
2 26 Feb 07 jari 207                     hw.setLocation();
2 26 Feb 07 jari 208                     hw.show();
2 26 Feb 07 jari 209                 }
2 26 Feb 07 jari 210                 else {
2 26 Feb 07 jari 211                     hw.setVisible(false);
2 26 Feb 07 jari 212                     hw.dispose();
2 26 Feb 07 jari 213                 }
2 26 Feb 07 jari 214             }
2 26 Feb 07 jari 215         }
2 26 Feb 07 jari 216         
2 26 Feb 07 jari 217         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 218             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 219             dispose();
2 26 Feb 07 jari 220         }
2 26 Feb 07 jari 221     }
2 26 Feb 07 jari 222     
2 26 Feb 07 jari 223 }