mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/qtc/QTCInitDialog.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: QTCInitDialog.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 20:22:06 $
2 26 Feb 07 jari 9  * $Author: braistedj $
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.qtc;
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.GridBagLayout;
2 26 Feb 07 jari 17 import java.awt.Insets;
2 26 Feb 07 jari 18 import java.awt.Toolkit;
2 26 Feb 07 jari 19 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 20 import java.awt.event.ActionListener;
2 26 Feb 07 jari 21
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.JPanel;
2 26 Feb 07 jari 26 import javax.swing.JTextField;
2 26 Feb 07 jari 27 import javax.swing.UIManager;
2 26 Feb 07 jari 28
2 26 Feb 07 jari 29 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DistanceMetricPanel;
2 26 Feb 07 jari 31 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.HCLSelectionPanel;
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.ParameterPanel;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.SampleSelectionPanel;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 35 import org.tigr.util.awt.GBA;
2 26 Feb 07 jari 36
2 26 Feb 07 jari 37 public class QTCInitDialog extends AlgorithmDialog {
2 26 Feb 07 jari 38     
2 26 Feb 07 jari 39     protected GBA gba;
2 26 Feb 07 jari 40     protected EventListener eventListener;
2 26 Feb 07 jari 41     
2 26 Feb 07 jari 42     protected JPanel inputPanel;
2 26 Feb 07 jari 43     public JLabel diameterLabel;
2 26 Feb 07 jari 44     public JTextField diameterTextField;
2 26 Feb 07 jari 45     public JLabel clusterLabel;
2 26 Feb 07 jari 46     public JTextField clusterTextField;
2 26 Feb 07 jari 47     
2 26 Feb 07 jari 48     public int result;
2 26 Feb 07 jari 49     
2 26 Feb 07 jari 50     private SampleSelectionPanel sampleSelectionPanel;
2 26 Feb 07 jari 51     private HCLSelectionPanel hclOpsPanel;
2 26 Feb 07 jari 52     
2 26 Feb 07 jari 53     protected JPanel mainPanel;
2 26 Feb 07 jari 54     
2 26 Feb 07 jari 55     private boolean okPressed = false;
2 26 Feb 07 jari 56     
2 26 Feb 07 jari 57     private DistanceMetricPanel metricPanel;
2 26 Feb 07 jari 58     
2 26 Feb 07 jari 59     public QTCInitDialog(JFrame parent, boolean modal, String globalMetricName, boolean globalAbsoluteValue) {
2 26 Feb 07 jari 60         super(parent, "QTC: QT Cluster", modal);
2 26 Feb 07 jari 61         
2 26 Feb 07 jari 62         initialize(globalMetricName, globalAbsoluteValue);
2 26 Feb 07 jari 63     }
2 26 Feb 07 jari 64     
2 26 Feb 07 jari 65     protected void initialize(String globalMetricName, boolean globalAbsoluteValue) {
2 26 Feb 07 jari 66         gba = new GBA();
2 26 Feb 07 jari 67         eventListener = new EventListener();
2 26 Feb 07 jari 68         
2 26 Feb 07 jari 69         diameterLabel = new JLabel("Maximum Cluster Diameter");    diameterLabel.setAlignmentX(JLabel.LEFT_ALIGNMENT);
2 26 Feb 07 jari 70         diameterTextField = new JTextField(5);
2 26 Feb 07 jari 71         
2 26 Feb 07 jari 72         diameterTextField.setText("0.5");
2 26 Feb 07 jari 73         clusterLabel = new JLabel("Minimum Cluster Population");
2 26 Feb 07 jari 74         
2 26 Feb 07 jari 75         clusterTextField = new JTextField(5);
2 26 Feb 07 jari 76         
2 26 Feb 07 jari 77         clusterTextField.setText("5");
2 26 Feb 07 jari 78         
2 26 Feb 07 jari 79         sampleSelectionPanel = new SampleSelectionPanel(Color.white, UIManager.getColor("Label.foreground"),true,"Sample Selection");
2 26 Feb 07 jari 80          
2 26 Feb 07 jari 81         metricPanel = new DistanceMetricPanel(globalMetricName, globalAbsoluteValue, "Pearson Correlation", "QTC", true, true);
2 26 Feb 07 jari 82  
2 26 Feb 07 jari 83         inputPanel = new JPanel();
2 26 Feb 07 jari 84         inputPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 85         inputPanel.setBackground(Color.white);
2 26 Feb 07 jari 86         gba.add(inputPanel, diameterLabel, 0, 0, 1, 1, 0, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 87         gba.add(inputPanel, clusterLabel, 0, 1, 1, 0, 0, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 88         gba.add(inputPanel, diameterTextField, 1, 0, 1, 1, 0, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 89         gba.add(inputPanel, clusterTextField, 1, 1, 1, 1, 0, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 90                       
2 26 Feb 07 jari 91         hclOpsPanel = new HCLSelectionPanel();
2 26 Feb 07 jari 92         
2 26 Feb 07 jari 93         mainPanel = new JPanel();
2 26 Feb 07 jari 94         mainPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 95         mainPanel.setBackground(Color.white);
2 26 Feb 07 jari 96         
2 26 Feb 07 jari 97         ParameterPanel parameters = new ParameterPanel();
2 26 Feb 07 jari 98         parameters.setLayout(new GridBagLayout());
2 26 Feb 07 jari 99         gba.add(parameters, inputPanel, 0, 0, 1, 1, 1, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 100        
2 26 Feb 07 jari 101         gba.add(mainPanel, sampleSelectionPanel, 0, 0, 1, 1, 1, 1, GBA.H, GBA.C, new Insets(0, 0, 0, 0), 0, 0);
2 26 Feb 07 jari 102         gba.add(mainPanel, metricPanel, 0, 1, 1, 1, 1, 1, GBA.H, GBA.C, new Insets(0, 0, 0, 0), 0, 0);
2 26 Feb 07 jari 103         gba.add(mainPanel, parameters, 0, 2, 1, 1, 1, 1, GBA.H, GBA.C, new Insets(0, 0, 0, 0), 0, 0);
2 26 Feb 07 jari 104         gba.add(mainPanel, hclOpsPanel, 0, 3, 1, 1, 1, 1, GBA.H, GBA.C, new Insets(0, 0, 0, 0), 0, 0);
2 26 Feb 07 jari 105         
2 26 Feb 07 jari 106         
2 26 Feb 07 jari 107         setActionListeners(eventListener);
2 26 Feb 07 jari 108         addContent(mainPanel);
2 26 Feb 07 jari 109         
2 26 Feb 07 jari 110         pack();
2 26 Feb 07 jari 111     }
2 26 Feb 07 jari 112     
2 26 Feb 07 jari 113     public void setVisible(boolean visible) {
2 26 Feb 07 jari 114         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 115         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 116         
2 26 Feb 07 jari 117         super.setVisible(visible);
2 26 Feb 07 jari 118         
2 26 Feb 07 jari 119         if (visible) {
2 26 Feb 07 jari 120             okButton.requestFocus();
2 26 Feb 07 jari 121         }
2 26 Feb 07 jari 122     }
2 26 Feb 07 jari 123     
2 26 Feb 07 jari 124   /*  protected void fireOkButtonEvent() {
2 26 Feb 07 jari 125    
2 26 Feb 07 jari 126         boolean useAbsolute;
2 26 Feb 07 jari 127         boolean drawTrees;
2 26 Feb 07 jari 128         double diameter;
2 26 Feb 07 jari 129         int clusterSize;
2 26 Feb 07 jari 130    
2 26 Feb 07 jari 131         useAbsolute = useAbsoluteCheckBox.isSelected();
2 26 Feb 07 jari 132         drawTrees = drawTreesCheckBox.isSelected();
2 26 Feb 07 jari 133    
2 26 Feb 07 jari 134         try {
2 26 Feb 07 jari 135             diameter = Double.parseDouble(diameterTextField.getText());
2 26 Feb 07 jari 136         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 137             diameter = 1;
2 26 Feb 07 jari 138         }
2 26 Feb 07 jari 139    
2 26 Feb 07 jari 140         try {
2 26 Feb 07 jari 141             clusterSize = Integer.parseInt(clusterTextField.getText());
2 26 Feb 07 jari 142         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 143             clusterSize = 1;
2 26 Feb 07 jari 144         }
2 26 Feb 07 jari 145    
2 26 Feb 07 jari 146         Hashtable hash = new Hashtable();
2 26 Feb 07 jari 147         hash.put(new String("useAbsolute"), new Boolean(useAbsolute));
2 26 Feb 07 jari 148         hash.put(new String("diameter"), new Double(diameter));
2 26 Feb 07 jari 149         hash.put(new String("clusterSize"), new Integer(clusterSize));
2 26 Feb 07 jari 150         hash.put(new String("drawTrees"), new Boolean(drawTrees));
2 26 Feb 07 jari 151         fireEvent(new ActionInfoEvent(this, hash));
2 26 Feb 07 jari 152     }
2 26 Feb 07 jari 153    */
2 26 Feb 07 jari 154     
2 26 Feb 07 jari 155     public boolean isOkPressed() {return this.okPressed;}
2 26 Feb 07 jari 156     
2 26 Feb 07 jari 157     /**
2 26 Feb 07 jari 158      *  Returns true if clustering genes is selectd
2 26 Feb 07 jari 159      */
2 26 Feb 07 jari 160     public boolean isClusterGenesSelected(){
2 26 Feb 07 jari 161         return this.sampleSelectionPanel.isClusterGenesSelected();
2 26 Feb 07 jari 162     }
2 26 Feb 07 jari 163     
2 26 Feb 07 jari 164     /**
2 26 Feb 07 jari 165      *  Returns true is HCL clustering is selected
2 26 Feb 07 jari 166      */
2 26 Feb 07 jari 167     public boolean isHCLSelected(){
2 26 Feb 07 jari 168         return this.hclOpsPanel.isHCLSelected();
2 26 Feb 07 jari 169     }
2 26 Feb 07 jari 170     
2 26 Feb 07 jari 171     /**
2 26 Feb 07 jari 172      * Returns the currently selected metric
2 26 Feb 07 jari 173      */
2 26 Feb 07 jari 174     public int getDistanceMetric() {
2 26 Feb 07 jari 175         return metricPanel.getMetricIndex();
2 26 Feb 07 jari 176     }
2 26 Feb 07 jari 177     
2 26 Feb 07 jari 178     /**
2 26 Feb 07 jari 179      *  Returns true if the absolute checkbox is selected, else false
2 26 Feb 07 jari 180      */
2 26 Feb 07 jari 181     public boolean isAbsoluteDistance() {
2 26 Feb 07 jari 182         return metricPanel.getAbsoluteSelection();
2 26 Feb 07 jari 183     }
2 26 Feb 07 jari 184     
2 26 Feb 07 jari 185     /**
2 26 Feb 07 jari 186      * Resets controls
2 26 Feb 07 jari 187      */
2 26 Feb 07 jari 188     private void resetControls(){
2 26 Feb 07 jari 189         this.sampleSelectionPanel.setClusterGenesSelected(true);
2 26 Feb 07 jari 190         this.hclOpsPanel.setHCLSelected(false);
2 26 Feb 07 jari 191         this.clusterTextField.setText("5");
2 26 Feb 07 jari 192         this.diameterTextField.setText("0.5");
2 26 Feb 07 jari 193         this.metricPanel.reset();
2 26 Feb 07 jari 194     }
2 26 Feb 07 jari 195     
2 26 Feb 07 jari 196     /**
2 26 Feb 07 jari 197      * Validates input
2 26 Feb 07 jari 198      */
2 26 Feb 07 jari 199     private boolean validInput(int k, float d){
2 26 Feb 07 jari 200         boolean valid = true;
2 26 Feb 07 jari 201         if( d <=0 ){
2 26 Feb 07 jari 202             JOptionPane.showMessageDialog(QTCInitDialog.this, "Diameter must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 203             this.diameterTextField.requestFocus();
2 26 Feb 07 jari 204             this.diameterTextField.selectAll();
2 26 Feb 07 jari 205             valid = false;
2 26 Feb 07 jari 206         }
2 26 Feb 07 jari 207         else if( k < 1){
2 26 Feb 07 jari 208             JOptionPane.showMessageDialog(QTCInitDialog.this, "Population of a cluster must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 209             this.clusterTextField.requestFocus();
2 26 Feb 07 jari 210             this.clusterTextField.selectAll();
2 26 Feb 07 jari 211             valid = false;
2 26 Feb 07 jari 212         }
2 26 Feb 07 jari 213         return valid;
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 static void main(String [] agrs){
2 26 Feb 07 jari 218         QTCInitDialog hgid = new QTCInitDialog(new JFrame(), true, "Euclidean Distance", false);
2 26 Feb 07 jari 219         hgid.show();
2 26 Feb 07 jari 220         System.exit(0);
2 26 Feb 07 jari 221     }
2 26 Feb 07 jari 222     
2 26 Feb 07 jari 223     
2 26 Feb 07 jari 224     protected class EventListener implements ActionListener {
2 26 Feb 07 jari 225         public void actionPerformed(ActionEvent event) {
2 26 Feb 07 jari 226             String command = event.getActionCommand();
2 26 Feb 07 jari 227             if (command.equals("ok-command")) {
2 26 Feb 07 jari 228                 int progress = 0;
2 26 Feb 07 jari 229                 int k;
2 26 Feb 07 jari 230                 float d;
2 26 Feb 07 jari 231                 try {
2 26 Feb 07 jari 232                     d = Float.parseFloat(diameterTextField.getText());
2 26 Feb 07 jari 233                     progress++;
2 26 Feb 07 jari 234                     k = Integer.parseInt(clusterTextField.getText());
2 26 Feb 07 jari 235                     progress++;
2 26 Feb 07 jari 236                     
2 26 Feb 07 jari 237                 } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 238                     if(progress == 0){
2 26 Feb 07 jari 239                         diameterTextField.requestFocus();
2 26 Feb 07 jari 240                         diameterTextField.selectAll();
2 26 Feb 07 jari 241                     } else if(progress == 1){
2 26 Feb 07 jari 242                         clusterTextField.requestFocus();
2 26 Feb 07 jari 243                         clusterTextField.selectAll();
2 26 Feb 07 jari 244                     }
2 26 Feb 07 jari 245                     JOptionPane.showMessageDialog(QTCInitDialog.this, "Number format error.", "Number Format Error", JOptionPane.ERROR_MESSAGE);                    
2 26 Feb 07 jari 246                     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 247                     okPressed = false;
2 26 Feb 07 jari 248                     return;
2 26 Feb 07 jari 249                 }
2 26 Feb 07 jari 250                 if(validInput(k,d)){
2 26 Feb 07 jari 251                     result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 252                     okPressed = true; 
2 26 Feb 07 jari 253                     dispose();
2 26 Feb 07 jari 254                    
2 26 Feb 07 jari 255                 }
2 26 Feb 07 jari 256                 else{
2 26 Feb 07 jari 257                     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 258                     okPressed = false;
2 26 Feb 07 jari 259                 }
2 26 Feb 07 jari 260             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 261                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 262                 okPressed = false;
2 26 Feb 07 jari 263                 dispose();
2 26 Feb 07 jari 264             } else if (command.equals("reset-command")) {
2 26 Feb 07 jari 265                 resetControls();
2 26 Feb 07 jari 266             } else if (command.equals("info-command")) {
2 26 Feb 07 jari 267                 HelpWindow hw = new HelpWindow(QTCInitDialog.this, "QTC Initialization Dialog");
2 26 Feb 07 jari 268                 if(hw.getWindowContent()){
2 26 Feb 07 jari 269                     hw.setSize(450,500);
2 26 Feb 07 jari 270                     hw.setLocation();
2 26 Feb 07 jari 271                     hw.show();
2 26 Feb 07 jari 272                 }
2 26 Feb 07 jari 273                 else {
2 26 Feb 07 jari 274                     hw.setVisible(false);
2 26 Feb 07 jari 275                     hw.dispose();
2 26 Feb 07 jari 276                 }
2 26 Feb 07 jari 277             }
2 26 Feb 07 jari 278         }
2 26 Feb 07 jari 279     }
2 26 Feb 07 jari 280 }