mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/gsh/GSHInitDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, 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  * $RCSfile: GSHInitDialog.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.4 $
2 26 Feb 07 jari 8  * $Date: 2006/02/23 20:59:51 $
2 26 Feb 07 jari 9  * $Author: caliente $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.gui.impl.gsh;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.Color;
2 26 Feb 07 jari 15 import java.awt.Dimension;
2 26 Feb 07 jari 16 import java.awt.Frame;
2 26 Feb 07 jari 17 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 18 import java.awt.GridBagLayout;
2 26 Feb 07 jari 19 import java.awt.Insets;
2 26 Feb 07 jari 20 import java.awt.Toolkit;
2 26 Feb 07 jari 21 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 22 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 23
2 26 Feb 07 jari 24 import javax.swing.JLabel;
2 26 Feb 07 jari 25 import javax.swing.JOptionPane;
2 26 Feb 07 jari 26 import javax.swing.JPanel;
2 26 Feb 07 jari 27 import javax.swing.JTextField;
2 26 Feb 07 jari 28 import javax.swing.UIManager;
2 26 Feb 07 jari 29
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 31 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.HCLSelectionPanel;
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.SampleSelectionPanel;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 36
2 26 Feb 07 jari 37
2 26 Feb 07 jari 38
2 26 Feb 07 jari 39 public class GSHInitDialog extends AlgorithmDialog {
2 26 Feb 07 jari 40     
2 26 Feb 07 jari 41     private int result;
2 26 Feb 07 jari 42     private JTextField textField1;
2 26 Feb 07 jari 43     private JTextField textField2;
2 26 Feb 07 jari 44     private JTextField textField3;
2 26 Feb 07 jari 45     
2 26 Feb 07 jari 46     private SampleSelectionPanel sampleSelectionPanel;
2 26 Feb 07 jari 47     private HCLSelectionPanel hclOpsPanel;
2 26 Feb 07 jari 48     
2 26 Feb 07 jari 49     public GSHInitDialog(Frame parent, int clusters, int fm, int st) {
2 26 Feb 07 jari 50         super(parent, "GSH: Gene Shaving", true);
2 26 Feb 07 jari 51         
2 26 Feb 07 jari 52         Listener listener = new Listener();
2 26 Feb 07 jari 53         addWindowListener(listener);
2 26 Feb 07 jari 54         
2 26 Feb 07 jari 55         //sample selction panel
2 26 Feb 07 jari 56         sampleSelectionPanel = new SampleSelectionPanel(Color.white, UIManager.getColor("Label.foreground"),true,"Sample Selection");
2 26 Feb 07 jari 57            
2 26 Feb 07 jari 58         //parameter panel
2 26 Feb 07 jari 59         ParameterPanel parameters = new ParameterPanel();
2 26 Feb 07 jari 60         parameters.setLayout(new GridBagLayout());
2 26 Feb 07 jari 61         
2 26 Feb 07 jari 62         //add parameter controls
2 26 Feb 07 jari 63         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 64         
2 26 Feb 07 jari 65         gbc.insets = new Insets(0,0,10,0);
2 26 Feb 07 jari 66         gbc.gridwidth = 1;
2 26 Feb 07 jari 67         gbc.anchor = GridBagConstraints.WEST;
2 26 Feb 07 jari 68         gbc.gridy = 0;
2 26 Feb 07 jari 69         parameters.add(new JLabel("Number of clusters"), gbc);
2 26 Feb 07 jari 70         gbc.gridy = 1;
2 26 Feb 07 jari 71         parameters.add(new JLabel("Number of permuted matrices"), gbc);
2 26 Feb 07 jari 72         gbc.gridy = 2;
2 26 Feb 07 jari 73         parameters.add(new JLabel("Number of permutations/matrix"), gbc);
2 26 Feb 07 jari 74         
2 26 Feb 07 jari 75         gbc.gridwidth = 2;
2 26 Feb 07 jari 76         textField1 = new JTextField(String.valueOf(clusters), 5);
2 26 Feb 07 jari 77         textField2 = new JTextField(String.valueOf(fm), 5);
2 26 Feb 07 jari 78         textField3 = new JTextField(String.valueOf(st), 5);
2 26 Feb 07 jari 79         gbc.insets = new Insets(0, 10, 10, 0);
2 26 Feb 07 jari 80         gbc.gridx = 1;
2 26 Feb 07 jari 81         gbc.gridy = 0;
2 26 Feb 07 jari 82         parameters.add(textField1, gbc);
2 26 Feb 07 jari 83         gbc.gridy = 1;
2 26 Feb 07 jari 84         parameters.add(textField2, gbc);
2 26 Feb 07 jari 85         gbc.gridy = 2;
2 26 Feb 07 jari 86         parameters.add(textField3, gbc);
2 26 Feb 07 jari 87         
2 26 Feb 07 jari 88         //HCL selection panel
2 26 Feb 07 jari 89         hclOpsPanel = new HCLSelectionPanel();
2 26 Feb 07 jari 90         
2 26 Feb 07 jari 91         JPanel contentPanel = new JPanel();
2 26 Feb 07 jari 92         contentPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 93         contentPanel.setBackground(Color.white);
2 26 Feb 07 jari 94         contentPanel.add(this.sampleSelectionPanel, new GridBagConstraints(0,0,1,1,1.0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 95          contentPanel.add(parameters, new GridBagConstraints(0,1,1,1,0.0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 96         contentPanel.add(this.hclOpsPanel, new GridBagConstraints(0,2,1,1,0.0,0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 97         
2 26 Feb 07 jari 98         addContent(contentPanel);
2 26 Feb 07 jari 99         setActionListeners(listener);
2 26 Feb 07 jari 100         pack();
2 26 Feb 07 jari 101     }
2 26 Feb 07 jari 102     
2 26 Feb 07 jari 103     /**
2 26 Feb 07 jari 104      * Shows the dialog.
2 26 Feb 07 jari 105      */
2 26 Feb 07 jari 106     public int showModal() {
2 26 Feb 07 jari 107         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 108         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 109         show();
2 26 Feb 07 jari 110         return result;
2 26 Feb 07 jari 111     }
2 26 Feb 07 jari 112     
2 26 Feb 07 jari 113     /**
2 26 Feb 07 jari 114      * Returns count of clusters.
2 26 Feb 07 jari 115      */
2 26 Feb 07 jari 116     public int getClusters() {
2 26 Feb 07 jari 117         return Integer.parseInt(textField1.getText());
2 26 Feb 07 jari 118     }
2 26 Feb 07 jari 119     
2 26 Feb 07 jari 120     /**
2 26 Feb 07 jari 121      * Returns true if clustering genes is selected
2 26 Feb 07 jari 122      */
2 26 Feb 07 jari 123     public boolean isClusterGenesSelected(){
2 26 Feb 07 jari 124         return this.sampleSelectionPanel.isClusterGenesSelected();
2 26 Feb 07 jari 125     }
2 26 Feb 07 jari 126     
2 26 Feb 07 jari 127     
2 26 Feb 07 jari 128     public int getFM() {
2 26 Feb 07 jari 129         return Integer.parseInt(textField2.getText());
2 26 Feb 07 jari 130     }
2 26 Feb 07 jari 131     
2 26 Feb 07 jari 132     public int getST() {
2 26 Feb 07 jari 133         return Integer.parseInt(textField2.getText());
2 26 Feb 07 jari 134     }
2 26 Feb 07 jari 135     
2 26 Feb 07 jari 136     /**
2 26 Feb 07 jari 137      * Returns true if the hierarchical checkbox is selected.
2 26 Feb 07 jari 138      */
2 26 Feb 07 jari 139     public boolean isHierarchicalTree() {
2 26 Feb 07 jari 140         return this.hclOpsPanel.isHCLSelected();
2 26 Feb 07 jari 141     }
2 26 Feb 07 jari 142     
2 26 Feb 07 jari 143     
2 26 Feb 07 jari 144     /**
2 26 Feb 07 jari 145      * Resets controls
2 26 Feb 07 jari 146      */
2 26 Feb 07 jari 147     private void resetControls(){
2 26 Feb 07 jari 148         this.sampleSelectionPanel.setClusterGenesSelected(true);
2 26 Feb 07 jari 149         this.hclOpsPanel.setHCLSelected(false);
2 26 Feb 07 jari 150         this.textField1.setText("10");
2 26 Feb 07 jari 151         this.textField2.setText("20");
2 26 Feb 07 jari 152         this.textField3.setText("5");
2 26 Feb 07 jari 153     }
2 26 Feb 07 jari 154     
2 26 Feb 07 jari 155     /**
2 26 Feb 07 jari 156      * Validates input values
2 26 Feb 07 jari 157      */
2 26 Feb 07 jari 158     private boolean validInput(int k, int p, int s){
2 26 Feb 07 jari 159         boolean valid = true;
2 26 Feb 07 jari 160         if(k < 1 ){
2 26 Feb 07 jari 161             JOptionPane.showMessageDialog(GSHInitDialog.this, "Number of clusters must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 162             this.textField1.requestFocus();
2 26 Feb 07 jari 163             this.textField1.selectAll();
2 26 Feb 07 jari 164             valid = false;
2 26 Feb 07 jari 165         }
2 26 Feb 07 jari 166         else if(p <= 0 ){
2 26 Feb 07 jari 167             JOptionPane.showMessageDialog(GSHInitDialog.this, "Number of permuted matricies must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 168             this.textField2.requestFocus();
2 26 Feb 07 jari 169             this.textField2.selectAll();
2 26 Feb 07 jari 170             valid = false;
2 26 Feb 07 jari 171         }
2 26 Feb 07 jari 172         else if(s < 0 ){
2 26 Feb 07 jari 173             JOptionPane.showMessageDialog(GSHInitDialog.this, "Number permutations must be >= 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 174             this.textField3.requestFocus();
2 26 Feb 07 jari 175             this.textField3.selectAll();
2 26 Feb 07 jari 176             valid = false;
2 26 Feb 07 jari 177         }
2 26 Feb 07 jari 178         return valid;
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             if (command.equals("ok-command")) {
2 26 Feb 07 jari 189                 int progress = 0;
2 26 Feb 07 jari 190                 int k, p, s;
2 26 Feb 07 jari 191                 try {
2 26 Feb 07 jari 192                     k = Integer.parseInt(textField1.getText());
2 26 Feb 07 jari 193                     progress++;
2 26 Feb 07 jari 194                     p = Integer.parseInt(textField2.getText());
2 26 Feb 07 jari 195                     progress++;
2 26 Feb 07 jari 196                     s = Integer.parseInt(textField3.getText());
2 26 Feb 07 jari 197                     progress++;
2 26 Feb 07 jari 198                     result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 199                 } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 200                     if(progress == 0){
2 26 Feb 07 jari 201                         textField1.requestFocus();
2 26 Feb 07 jari 202                         textField1.selectAll();
2 26 Feb 07 jari 203                     } else if(progress == 1){
2 26 Feb 07 jari 204                         textField2.requestFocus();
2 26 Feb 07 jari 205                         textField2.selectAll();
2 26 Feb 07 jari 206                     } else if(progress == 2){
2 26 Feb 07 jari 207                         textField3.requestFocus();
2 26 Feb 07 jari 208                         textField3.selectAll();
2 26 Feb 07 jari 209                     }
2 26 Feb 07 jari 210                     JOptionPane.showMessageDialog(GSHInitDialog.this, "Number format error.", "Number Format Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 211                     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 212                     return;
2 26 Feb 07 jari 213                 }
2 26 Feb 07 jari 214                 if(validInput(k,p,s))
2 26 Feb 07 jari 215                     dispose();
2 26 Feb 07 jari 216                 else{
2 26 Feb 07 jari 217                     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 218                 }
2 26 Feb 07 jari 219             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 220                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 221                 dispose();
2 26 Feb 07 jari 222             } else if (command.equals("reset-command")) {
2 26 Feb 07 jari 223                 resetControls();
2 26 Feb 07 jari 224             } else if (command.equals("info-command")) {
2 26 Feb 07 jari 225                 HelpWindow hw = new HelpWindow(GSHInitDialog.this, "GSH Initialization Dialog");
2 26 Feb 07 jari 226                 if(hw.getWindowContent()){
2 26 Feb 07 jari 227                     hw.setSize(450,500);
2 26 Feb 07 jari 228                     hw.setLocation();
2 26 Feb 07 jari 229                     hw.show();
2 26 Feb 07 jari 230                 }
2 26 Feb 07 jari 231                 else {
2 26 Feb 07 jari 232                     hw.setVisible(false);
2 26 Feb 07 jari 233                     hw.dispose();
2 26 Feb 07 jari 234                 }
2 26 Feb 07 jari 235             }
2 26 Feb 07 jari 236             
2 26 Feb 07 jari 237         }
2 26 Feb 07 jari 238         
2 26 Feb 07 jari 239         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 240             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 241             dispose();
2 26 Feb 07 jari 242         }
2 26 Feb 07 jari 243     }
2 26 Feb 07 jari 244     
2 26 Feb 07 jari 245     public static void main(String[] args) {
2 26 Feb 07 jari 246         GSHInitDialog dlg = new GSHInitDialog(new Frame(), 0 ,0,0);
2 26 Feb 07 jari 247         dlg.showModal();
2 26 Feb 07 jari 248         System.exit(0);
2 26 Feb 07 jari 249     }
2 26 Feb 07 jari 250 }