mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/knnc/KNNCFirstDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2005, 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  * KNNCFirstDialog.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on September 22, 2003, 3:27 PM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.cluster.gui.impl.knnc;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.Color;
2 26 Feb 07 jari 14 import java.awt.Dimension;
2 26 Feb 07 jari 15 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 16 import java.awt.GridBagLayout;
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.ActionListener;
2 26 Feb 07 jari 20 import java.awt.event.ItemEvent;
2 26 Feb 07 jari 21 import java.awt.event.ItemListener;
2 26 Feb 07 jari 22 import java.awt.event.WindowAdapter;
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.JPanel;
2 26 Feb 07 jari 30 import javax.swing.JRadioButton;
2 26 Feb 07 jari 31 import javax.swing.JTextField;
2 26 Feb 07 jari 32 import javax.swing.border.TitledBorder;
2 26 Feb 07 jari 33
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.Experiment;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 37 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.HCLSelectionPanel;
2 26 Feb 07 jari 38 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 39
2 26 Feb 07 jari 40 /**
2 26 Feb 07 jari 41  *
2 26 Feb 07 jari 42  * @author  nbhagaba
2 26 Feb 07 jari 43  */
2 26 Feb 07 jari 44 public class KNNCFirstDialog extends AlgorithmDialog {
2 26 Feb 07 jari 45     
2 26 Feb 07 jari 46     boolean okPressed = false;
2 26 Feb 07 jari 47     JRadioButton genesButton, expsButton, createNewTrgSetButton, useExistTrgSetButton;
2 26 Feb 07 jari 48     JCheckBox useVarianceFilterBox, useCorrelFilterBox;
2 26 Feb 07 jari 49     JTextField numGenesField, pValueField, numClassesField, numNeighborsField, numPermsField;
2 26 Feb 07 jari 50     JLabel varLabel, corrLabel, numPermsLabel;
2 26 Feb 07 jari 51     
2 26 Feb 07 jari 52     HCLSelectionPanel hclOpsPanel;
2 26 Feb 07 jari 53     
2 26 Feb 07 jari 54     IFramework framework;
2 26 Feb 07 jari 55     Experiment experiment;
2 26 Feb 07 jari 56     
2 26 Feb 07 jari 57     KNNClassificationEditor knnEditor;
2 26 Feb 07 jari 58     
2 26 Feb 07 jari 59     int numExps, numGenes;
2 26 Feb 07 jari 60     
2 26 Feb 07 jari 61     /** Creates a new instance of KNNCFirstDialog */
2 26 Feb 07 jari 62     public KNNCFirstDialog(JFrame parentFrame, boolean modality, IFramework framework_1) {
2 26 Feb 07 jari 63         super(parentFrame, "KNN Classification", modality);
2 26 Feb 07 jari 64         okButton.setText("Next >");
2 26 Feb 07 jari 65         setBounds(0, 0, 550, 600);
2 26 Feb 07 jari 66         setBackground(Color.white);
2 26 Feb 07 jari 67         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
2 26 Feb 07 jari 68         
2 26 Feb 07 jari 69         this.framework = framework_1;
2 26 Feb 07 jari 70         this.experiment = framework.getData().getExperiment();
2 26 Feb 07 jari 71         //this.knnEditor = new KNNClassificationEditor(framework, true, 5);
2 26 Feb 07 jari 72         
2 26 Feb 07 jari 73         numExps = experiment.getNumberOfSamples();
2 26 Feb 07 jari 74         numGenes = experiment.getNumberOfGenes();
2 26 Feb 07 jari 75         
2 26 Feb 07 jari 76         GridBagLayout gridbag = new GridBagLayout();
2 26 Feb 07 jari 77         GridBagConstraints constraints = new GridBagConstraints();
2 26 Feb 07 jari 78         
2 26 Feb 07 jari 79         JPanel mainPanel = new JPanel();
2 26 Feb 07 jari 80         mainPanel.setLayout(gridbag);
2 26 Feb 07 jari 81         
2 26 Feb 07 jari 82         /*
2 26 Feb 07 jari 83         JPanel classifyPanel = new JPanel();
2 26 Feb 07 jari 84         GridBagLayout classGrid = new GridBagLayout();
2 26 Feb 07 jari 85         classifyPanel.setLayout(classGrid);
2 26 Feb 07 jari 86          */
2 26 Feb 07 jari 87         
2 26 Feb 07 jari 88         useVarianceFilterBox = new JCheckBox("Use variance filter (if unchecked, use all genes)", false);
2 26 Feb 07 jari 89         useCorrelFilterBox = new JCheckBox("Use correlation filter", false);
2 26 Feb 07 jari 90         
2 26 Feb 07 jari 91         JPanel genesOrExpsPanel = new JPanel();
2 26 Feb 07 jari 92         genesOrExpsPanel.setBackground(Color.white);
2 26 Feb 07 jari 93         genesOrExpsPanel.setBorder(new TitledBorder("Classify genes or samples"));
2 26 Feb 07 jari 94         GridBagLayout grid1 = new GridBagLayout();
2 26 Feb 07 jari 95         genesOrExpsPanel.setLayout(grid1);
2 26 Feb 07 jari 96         
2 26 Feb 07 jari 97         genesButton = new JRadioButton("Classify genes", true);
2 26 Feb 07 jari 98         genesButton.setBackground(Color.white);
2 26 Feb 07 jari 99         genesButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 100             public void actionPerformed(ActionEvent evt) {
2 26 Feb 07 jari 101                 useVarianceFilterBox.setText("Use variance filter (if unchecked, use all genes)");
2 26 Feb 07 jari 102                 //useCorrelFilterBox.setText("Use correlation filter (if unchecked, use all genes)");
2 26 Feb 07 jari 103                 varLabel.setText("          Use only the following number of highest-variance genes: ");
2 26 Feb 07 jari 104             }
2 26 Feb 07 jari 105         });
2 26 Feb 07 jari 106         expsButton = new JRadioButton("Classify samples", false);
2 26 Feb 07 jari 107         expsButton.setBackground(Color.white);
2 26 Feb 07 jari 108         expsButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 109             public void actionPerformed(ActionEvent evt) {
2 26 Feb 07 jari 110                 useVarianceFilterBox.setText("Use variance filter (if unchecked, use all expts)");
2 26 Feb 07 jari 111                 varLabel.setText("          Use only the following number of highest-variance expts: ");
2 26 Feb 07 jari 112                 //useCorrelFilterBox.setText("Use correlation filter (if unchecked, use all expts)");
2 26 Feb 07 jari 113             }
2 26 Feb 07 jari 114         });
2 26 Feb 07 jari 115         ButtonGroup genesOrExpsGroup = new ButtonGroup();
2 26 Feb 07 jari 116         genesOrExpsGroup.add(genesButton);
2 26 Feb 07 jari 117         genesOrExpsGroup.add(expsButton);
2 26 Feb 07 jari 118         
2 26 Feb 07 jari 119         buildConstraints(constraints, 0, 0, 1, 1, 50, 100);
2 26 Feb 07 jari 120         grid1.setConstraints(genesButton, constraints);
2 26 Feb 07 jari 121         genesOrExpsPanel.add(genesButton);
2 26 Feb 07 jari 122         
2 26 Feb 07 jari 123         buildConstraints(constraints, 1, 0, 1, 1, 50, 0);
2 26 Feb 07 jari 124         grid1.setConstraints(expsButton, constraints);
2 26 Feb 07 jari 125         genesOrExpsPanel.add(expsButton);
2 26 Feb 07 jari 126         
2 26 Feb 07 jari 127         buildConstraints(constraints, 0, 0, 1, 1, 100, 10);
2 26 Feb 07 jari 128         constraints.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 129         gridbag.setConstraints(genesOrExpsPanel, constraints);
2 26 Feb 07 jari 130         mainPanel.add(genesOrExpsPanel);
2 26 Feb 07 jari 131         
2 26 Feb 07 jari 132         
2 26 Feb 07 jari 133         constraints.fill = GridBagConstraints.NONE;
2 26 Feb 07 jari 134         
2 26 Feb 07 jari 135         JPanel variancePanel = new JPanel();
2 26 Feb 07 jari 136         variancePanel.setBackground(Color.white);
2 26 Feb 07 jari 137         variancePanel.setBorder(new TitledBorder("Variance filter"));
2 26 Feb 07 jari 138         GridBagLayout grid3 = new GridBagLayout();
2 26 Feb 07 jari 139         variancePanel.setLayout(grid3);
2 26 Feb 07 jari 140         
2 26 Feb 07 jari 141         //useVarianceFilterBox = new JCheckBox("Use variance filter (if unchecked, use all vectors)", false);
2 26 Feb 07 jari 142         useVarianceFilterBox.setBackground(Color.white);
2 26 Feb 07 jari 143         varLabel = new JLabel("          Use only the following number of highest-variance genes: ");
2 26 Feb 07 jari 144         varLabel.setEnabled(false);
2 26 Feb 07 jari 145         numGenesField = new JTextField("1000",7);
2 26 Feb 07 jari 146         numGenesField.setEnabled(false);
2 26 Feb 07 jari 147         numGenesField.setBackground(Color.gray);
2 26 Feb 07 jari 148         
2 26 Feb 07 jari 149         useVarianceFilterBox.addItemListener(new ItemListener() {
2 26 Feb 07 jari 150             public void itemStateChanged(ItemEvent evt) {
2 26 Feb 07 jari 151                 if (evt.getStateChange() == ItemEvent.DESELECTED) {
2 26 Feb 07 jari 152                     varLabel.setEnabled(false);
2 26 Feb 07 jari 153                     numGenesField.setEnabled(false);
2 26 Feb 07 jari 154                     numGenesField.setBackground(Color.gray);
2 26 Feb 07 jari 155                 } else {
2 26 Feb 07 jari 156                     varLabel.setEnabled(true);
2 26 Feb 07 jari 157                     numGenesField.setEnabled(true);
2 26 Feb 07 jari 158                     numGenesField.setBackground(Color.white);
2 26 Feb 07 jari 159                 }
2 26 Feb 07 jari 160             }
2 26 Feb 07 jari 161         });
2 26 Feb 07 jari 162         
2 26 Feb 07 jari 163         constraints.anchor = GridBagConstraints.WEST;
2 26 Feb 07 jari 164         buildConstraints(constraints, 0, 0, 1, 1, 100, 50);
2 26 Feb 07 jari 165         grid3.setConstraints(useVarianceFilterBox, constraints);
2 26 Feb 07 jari 166         variancePanel.add(useVarianceFilterBox);
2 26 Feb 07 jari 167         
2 26 Feb 07 jari 168         //JLabel varLabel = new JLabel("Use only the following number of highest-variance vectors: ");
2 26 Feb 07 jari 169         buildConstraints(constraints, 0, 1, 1, 1, 70, 50);
2 26 Feb 07 jari 170         grid3.setConstraints(varLabel, constraints);
2 26 Feb 07 jari 171         variancePanel.add(varLabel);
2 26 Feb 07 jari 172         
2 26 Feb 07 jari 173         //numGenesField = new JTextField(7);
2 26 Feb 07 jari 174         buildConstraints(constraints, 1, 1, 1, 1, 30, 0);
2 26 Feb 07 jari 175         grid3.setConstraints(numGenesField, constraints);
2 26 Feb 07 jari 176         variancePanel.add(numGenesField);
2 26 Feb 07 jari 177         
2 26 Feb 07 jari 178         //constraints.anchor = GridBagConstraints.CENTER;
2 26 Feb 07 jari 179         
2 26 Feb 07 jari 180         buildConstraints(constraints, 0, 1, 1, 1, 100, 20);
2 26 Feb 07 jari 181         constraints.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 182         gridbag.setConstraints(variancePanel, constraints);
2 26 Feb 07 jari 183         mainPanel.add(variancePanel);
2 26 Feb 07 jari 184         
2 26 Feb 07 jari 185         constraints.fill = GridBagConstraints.NONE;
2 26 Feb 07 jari 186         
2 26 Feb 07 jari 187         
2 26 Feb 07 jari 188         JPanel correlPanel = new JPanel();
2 26 Feb 07 jari 189         correlPanel.setBackground(Color.white);
2 26 Feb 07 jari 190         correlPanel.setBorder(new TitledBorder("Correlation filter"));
2 26 Feb 07 jari 191         GridBagLayout grid2 = new GridBagLayout();
2 26 Feb 07 jari 192         correlPanel.setLayout(grid2);
2 26 Feb 07 jari 193         
2 26 Feb 07 jari 194         //useCorrelFilterBox = new JCheckBox("Use correlation filter", false);
2 26 Feb 07 jari 195         useCorrelFilterBox.setBackground(Color.white);
2 26 Feb 07 jari 196         corrLabel = new JLabel("          Cutoff p-value for correlation: ");
2 26 Feb 07 jari 197         corrLabel.setEnabled(false);
2 26 Feb 07 jari 198         numPermsLabel = new JLabel("          Number of permutations for correlation test: ");
2 26 Feb 07 jari 199         numPermsLabel.setEnabled(false);
2 26 Feb 07 jari 200         pValueField = new JTextField("0.01",7);
2 26 Feb 07 jari 201         pValueField.setEnabled(false);
2 26 Feb 07 jari 202         pValueField.setBackground(Color.gray);
2 26 Feb 07 jari 203         numPermsField = new JTextField("1000",7);
2 26 Feb 07 jari 204         numPermsField.setEnabled(false);
2 26 Feb 07 jari 205         numPermsField.setBackground(Color.gray);
2 26 Feb 07 jari 206         
2 26 Feb 07 jari 207         useCorrelFilterBox.addItemListener(new ItemListener() {
2 26 Feb 07 jari 208             public void itemStateChanged(ItemEvent evt) {
2 26 Feb 07 jari 209                 if (evt.getStateChange() == ItemEvent.DESELECTED) {
2 26 Feb 07 jari 210                     corrLabel.setEnabled(false);
2 26 Feb 07 jari 211                     numPermsLabel.setEnabled(false);
2 26 Feb 07 jari 212                     pValueField.setEnabled(false);
2 26 Feb 07 jari 213                     pValueField.setBackground(Color.gray);
2 26 Feb 07 jari 214                     numPermsField.setEnabled(false);
2 26 Feb 07 jari 215                     numPermsField.setBackground(Color.gray);
2 26 Feb 07 jari 216                 } else {
2 26 Feb 07 jari 217                     corrLabel.setEnabled(true);
2 26 Feb 07 jari 218                     numPermsLabel.setEnabled(true);
2 26 Feb 07 jari 219                     pValueField.setEnabled(true);
2 26 Feb 07 jari 220                     pValueField.setBackground(Color.white);
2 26 Feb 07 jari 221                     numPermsField.setEnabled(true);
2 26 Feb 07 jari 222                     numPermsField.setBackground(Color.white);
2 26 Feb 07 jari 223                 }
2 26 Feb 07 jari 224             }
2 26 Feb 07 jari 225         });
2 26 Feb 07 jari 226         
2 26 Feb 07 jari 227         buildConstraints(constraints, 0, 0, 1, 1, 100, 34);
2 26 Feb 07 jari 228         grid2.setConstraints(useCorrelFilterBox, constraints);
2 26 Feb 07 jari 229         correlPanel.add(useCorrelFilterBox);
2 26 Feb 07 jari 230         
2 26 Feb 07 jari 231         //corrLabel = new JLabel("Cutoff p-value for correlation: ");
2 26 Feb 07 jari 232         buildConstraints(constraints, 0, 1, 1, 1, 70, 33);
2 26 Feb 07 jari 233         grid2.setConstraints(corrLabel, constraints);
2 26 Feb 07 jari 234         correlPanel.add(corrLabel);
2 26 Feb 07 jari 235         
2 26 Feb 07 jari 236         //pValueField = new JTextField(7);
2 26 Feb 07 jari 237         buildConstraints(constraints, 1, 1, 1, 1, 30, 0);
2 26 Feb 07 jari 238         grid2.setConstraints(pValueField, constraints);
2 26 Feb 07 jari 239         correlPanel.add(pValueField);
2 26 Feb 07 jari 240         
2 26 Feb 07 jari 241         buildConstraints(constraints, 0, 2, 1, 1, 70, 33);
2 26 Feb 07 jari 242         grid2.setConstraints(numPermsLabel, constraints);
2 26 Feb 07 jari 243         correlPanel.add(numPermsLabel);
2 26 Feb 07 jari 244         
2 26 Feb 07 jari 245         //pValueField = new JTextField(7);
2 26 Feb 07 jari 246         buildConstraints(constraints, 1, 2, 1, 1, 30, 0);
2 26 Feb 07 jari 247         grid2.setConstraints(numPermsField, constraints);
2 26 Feb 07 jari 248         correlPanel.add(numPermsField);
2 26 Feb 07 jari 249         
2 26 Feb 07 jari 250         buildConstraints(constraints, 0, 2, 1, 1, 100, 20);
2 26 Feb 07 jari 251         constraints.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 252         gridbag.setConstraints(correlPanel, constraints);
2 26 Feb 07 jari 253         mainPanel.add(correlPanel);
2 26 Feb 07 jari 254         
2 26 Feb 07 jari 255         constraints.fill = GridBagConstraints.NONE;
2 26 Feb 07 jari 256         
2 26 Feb 07 jari 257         
2 26 Feb 07 jari 258         JPanel knnParamPanel = new JPanel();
2 26 Feb 07 jari 259         knnParamPanel.setBackground(Color.white);
2 26 Feb 07 jari 260         knnParamPanel.setBorder(new TitledBorder("KNN classification parameters"));
2 26 Feb 07 jari 261         GridBagLayout grid4 = new GridBagLayout();
2 26 Feb 07 jari 262         knnParamPanel.setLayout(grid4);
2 26 Feb 07 jari 263         
2 26 Feb 07 jari 264         JLabel numClassesLabel = new JLabel("          Number of classes");
2 26 Feb 07 jari 265         buildConstraints(constraints, 0, 0, 1, 1, 50, 50);
2 26 Feb 07 jari 266         grid4.setConstraints(numClassesLabel, constraints);
2 26 Feb 07 jari 267         knnParamPanel.add(numClassesLabel);
2 26 Feb 07 jari 268         
2 26 Feb 07 jari 269         numClassesField = new JTextField("5", 7);
2 26 Feb 07 jari 270         buildConstraints(constraints, 1, 0, 1, 1, 50, 0);
2 26 Feb 07 jari 271         grid4.setConstraints(numClassesField, constraints);
2 26 Feb 07 jari 272         knnParamPanel.add(numClassesField);
2 26 Feb 07 jari 273         
2 26 Feb 07 jari 274         JLabel numNeighborsLabel = new JLabel("          Number of neighbors");
2 26 Feb 07 jari 275         buildConstraints(constraints, 0, 1, 1, 1, 50, 50);
2 26 Feb 07 jari 276         grid4.setConstraints(numNeighborsLabel, constraints);
2 26 Feb 07 jari 277         knnParamPanel.add(numNeighborsLabel);
2 26 Feb 07 jari 278         
2 26 Feb 07 jari 279         numNeighborsField = new JTextField("3", 7);
2 26 Feb 07 jari 280         buildConstraints(constraints, 1, 1, 1, 1, 50, 0);
2 26 Feb 07 jari 281         grid4.setConstraints(numNeighborsField, constraints);
2 26 Feb 07 jari 282         knnParamPanel.add(numNeighborsField);
2 26 Feb 07 jari 283         
2 26 Feb 07 jari 284         buildConstraints(constraints, 0, 3, 1, 1, 100, 20);
2 26 Feb 07 jari 285         constraints.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 286         gridbag.setConstraints(knnParamPanel, constraints);
2 26 Feb 07 jari 287         mainPanel.add(knnParamPanel);
2 26 Feb 07 jari 288         
2 26 Feb 07 jari 289         constraints.fill = GridBagConstraints.NONE;
2 26 Feb 07 jari 290         
2 26 Feb 07 jari 291         JPanel makeTrainingSetPanel = new JPanel();
2 26 Feb 07 jari 292         makeTrainingSetPanel.setBackground(Color.white);
2 26 Feb 07 jari 293         makeTrainingSetPanel.setBorder(new TitledBorder("Create / import training set"));
2 26 Feb 07 jari 294         GridBagLayout grid5 = new GridBagLayout();
2 26 Feb 07 jari 295         makeTrainingSetPanel.setLayout(grid5);
2 26 Feb 07 jari 296         
2 26 Feb 07 jari 297         createNewTrgSetButton = new JRadioButton("Create new training set from data", true);
2 26 Feb 07 jari 298         createNewTrgSetButton.setBackground(Color.white);
2 26 Feb 07 jari 299         useExistTrgSetButton = new JRadioButton("Use previously created training set from file", false);
2 26 Feb 07 jari 300         useExistTrgSetButton.setBackground(Color.white);
2 26 Feb 07 jari 301         
2 26 Feb 07 jari 302         ButtonGroup newOrExisting = new ButtonGroup();
2 26 Feb 07 jari 303         newOrExisting.add(createNewTrgSetButton);
2 26 Feb 07 jari 304         newOrExisting.add(useExistTrgSetButton);
2 26 Feb 07 jari 305         
2 26 Feb 07 jari 306         buildConstraints(constraints, 0, 0, 1, 1, 100, 50);
2 26 Feb 07 jari 307         constraints.anchor = GridBagConstraints.CENTER;
2 26 Feb 07 jari 308         grid5.setConstraints(createNewTrgSetButton, constraints);
2 26 Feb 07 jari 309         makeTrainingSetPanel.add(createNewTrgSetButton);
2 26 Feb 07 jari 310         
2 26 Feb 07 jari 311         buildConstraints(constraints, 0, 1, 1, 1, 0, 50);
2 26 Feb 07 jari 312         grid5.setConstraints(useExistTrgSetButton, constraints);
2 26 Feb 07 jari 313         makeTrainingSetPanel.add(useExistTrgSetButton);
2 26 Feb 07 jari 314         
2 26 Feb 07 jari 315         buildConstraints(constraints, 0, 4, 1, 1, 100, 20);
2 26 Feb 07 jari 316         constraints.anchor = GridBagConstraints.WEST;
2 26 Feb 07 jari 317         constraints.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 318         gridbag.setConstraints(makeTrainingSetPanel, constraints);
2 26 Feb 07 jari 319         mainPanel.add(makeTrainingSetPanel);
2 26 Feb 07 jari 320         
2 26 Feb 07 jari 321         constraints.fill = GridBagConstraints.NONE;
2 26 Feb 07 jari 322         
2 26 Feb 07 jari 323         hclOpsPanel = new HCLSelectionPanel();
2 26 Feb 07 jari 324         buildConstraints(constraints, 0, 5, 1, 1, 100, 10);
2 26 Feb 07 jari 325         constraints.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 326         gridbag.setConstraints(hclOpsPanel, constraints);
2 26 Feb 07 jari 327         mainPanel.add(hclOpsPanel);
2 26 Feb 07 jari 328         
2 26 Feb 07 jari 329         constraints.fill = GridBagConstraints.NONE;
2 26 Feb 07 jari 330         
2 26 Feb 07 jari 331         addContent(mainPanel);
2 26 Feb 07 jari 332         EventListener listener = new EventListener();
2 26 Feb 07 jari 333         setActionListeners(listener);
2 26 Feb 07 jari 334         this.addWindowListener(listener);
2 26 Feb 07 jari 335     }
2 26 Feb 07 jari 336     
2 26 Feb 07 jari 337     public void setVisible(boolean visible) {
2 26 Feb 07 jari 338         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 339         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 340         
2 26 Feb 07 jari 341         super.setVisible(visible);
2 26 Feb 07 jari 342     }
2 26 Feb 07 jari 343     
2 26 Feb 07 jari 344     void buildConstraints(GridBagConstraints gbc, int gx, int gy,
2 26 Feb 07 jari 345     int gw, int gh, int wx, int wy) {
2 26 Feb 07 jari 346         
2 26 Feb 07 jari 347         gbc.gridx = gx;
2 26 Feb 07 jari 348         gbc.gridy = gy;
2 26 Feb 07 jari 349         gbc.gridwidth = gw;
2 26 Feb 07 jari 350         gbc.gridheight = gh;
2 26 Feb 07 jari 351         gbc.weightx = wx;
2 26 Feb 07 jari 352         gbc.weighty = wy;
2 26 Feb 07 jari 353     }
2 26 Feb 07 jari 354     
2 26 Feb 07 jari 355     public boolean isOkPressed() {
2 26 Feb 07 jari 356         return okPressed;
2 26 Feb 07 jari 357     }
2 26 Feb 07 jari 358     
2 26 Feb 07 jari 359     public boolean drawTrees() {
2 26 Feb 07 jari 360         return this.hclOpsPanel.isHCLSelected();
2 26 Feb 07 jari 361     }
2 26 Feb 07 jari 362     
2 26 Feb 07 jari 363     public boolean classifyGenes() {
2 26 Feb 07 jari 364         return genesButton.isSelected();
2 26 Feb 07 jari 365     }
2 26 Feb 07 jari 366     
2 26 Feb 07 jari 367     public int getNumClasses() {
2 26 Feb 07 jari 368         String s = numClassesField.getText();
2 26 Feb 07 jari 369         return Integer.parseInt(s);
2 26 Feb 07 jari 370     }
2 26 Feb 07 jari 371     
2 26 Feb 07 jari 372     public boolean createNewTrgSet() {
2 26 Feb 07 jari 373         return createNewTrgSetButton.isSelected();
2 26 Feb 07 jari 374     }
2 26 Feb 07 jari 375     
2 26 Feb 07 jari 376     public boolean useVarianceFilter() {
2 26 Feb 07 jari 377         return useVarianceFilterBox.isSelected();
2 26 Feb 07 jari 378     }
2 26 Feb 07 jari 379     
2 26 Feb 07 jari 380     public int getNumVectors() {
2 26 Feb 07 jari 381         return Integer.parseInt(numGenesField.getText());
2 26 Feb 07 jari 382     }
2 26 Feb 07 jari 383     
2 26 Feb 07 jari 384     public boolean useCorrelFilter() {
2 26 Feb 07 jari 385         return useCorrelFilterBox.isSelected();
2 26 Feb 07 jari 386     }
2 26 Feb 07 jari 387     
2 26 Feb 07 jari 388     public double getCorrPValue() {
2 26 Feb 07 jari 389         return Double.parseDouble(pValueField.getText());
2 26 Feb 07 jari 390     }
2 26 Feb 07 jari 391     
2 26 Feb 07 jari 392     public int getNumPerms() {
2 26 Feb 07 jari 393         return Integer.parseInt(numPermsField.getText());
2 26 Feb 07 jari 394     }
2 26 Feb 07 jari 395     
2 26 Feb 07 jari 396     public int getNumNeighbors() {
2 26 Feb 07 jari 397         return Integer.parseInt(numNeighborsField.getText());
2 26 Feb 07 jari 398     }
2 26 Feb 07 jari 399     
2 26 Feb 07 jari 400     public class EventListener extends WindowAdapter implements ActionListener{
2 26 Feb 07 jari 401         
2 26 Feb 07 jari 402         public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 403             String command = ae.getActionCommand();
2 26 Feb 07 jari 404             if(command.equals("ok-command")){
2 26 Feb 07 jari 405                 try {
2 26 Feb 07 jari 406                     if (useVarianceFilterBox.isSelected()) {
2 26 Feb 07 jari 407                         int val = (new Integer(numGenesField.getText())).intValue();
2 26 Feb 07 jari 408                         if (genesButton.isSelected()) {
2 26 Feb 07 jari 409                             if (val <= 0 || val > numGenes) {
2 26 Feb 07 jari 410                                 JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Number of highest-variance genes must be > 0 and <= " + numGenes, "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 411                                 return;
2 26 Feb 07 jari 412                             }
2 26 Feb 07 jari 413                         } else {
2 26 Feb 07 jari 414                             if (val <= 0 || val > numExps) {
2 26 Feb 07 jari 415                                 JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Number of highest-variance expts must be > 0 and <= " + numExps, "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 416                                 return;
2 26 Feb 07 jari 417                             }
2 26 Feb 07 jari 418                         }
2 26 Feb 07 jari 419                     }
2 26 Feb 07 jari 420                     
2 26 Feb 07 jari 421                     if (useCorrelFilterBox.isSelected()) {
2 26 Feb 07 jari 422                         double val2 = (new Double(pValueField.getText())).doubleValue();
2 26 Feb 07 jari 423                         if (val2 < 0 || val2 > 1) {
2 26 Feb 07 jari 424                             JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Correlation p-value must be between 0 and 1", "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 425                             return;
2 26 Feb 07 jari 426                         }
2 26 Feb 07 jari 427                         double validateNumPerms = (new Double(numPermsField.getText())).doubleValue();
2 26 Feb 07 jari 428                         if (validateNumPerms <= 0) {
2 26 Feb 07 jari 429                             JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Number of permutations must be > 0", "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 430                             return;
2 26 Feb 07 jari 431                         }
2 26 Feb 07 jari 432                     }
2 26 Feb 07 jari 433                     
2 26 Feb 07 jari 434                     int val3 = (new Integer(numClassesField.getText())).intValue();
2 26 Feb 07 jari 435                     if ( (val3 <= 0 || val3 >= numGenes) && (genesButton.isSelected()) ) {
2 26 Feb 07 jari 436                         JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Number of classes must be > 0 and < " + numGenes, "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 437                         return;
2 26 Feb 07 jari 438                     }
2 26 Feb 07 jari 439                     if ( (val3 <= 0 || val3 >= numExps) && (expsButton.isSelected()) ) {
2 26 Feb 07 jari 440                         JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Number of classes must be > 0 and < " + numExps, "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 441                         return;
2 26 Feb 07 jari 442                     }
2 26 Feb 07 jari 443                     int val4 = (new Integer(numNeighborsField.getText())).intValue();
2 26 Feb 07 jari 444                     if (genesButton.isSelected()) {
2 26 Feb 07 jari 445                         if (val4 <= 0 || val4 > numGenes) {
2 26 Feb 07 jari 446                             JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Number of neighbors must be > 0 and <= " + numGenes, "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 447                             return;
2 26 Feb 07 jari 448                         }
2 26 Feb 07 jari 449                     } else {
2 26 Feb 07 jari 450                         if (val4 <= 0 || val4 > numExps) {
2 26 Feb 07 jari 451                             JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Number of neighbors must be > 0 and <= " + numExps, "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 452                             return;
2 26 Feb 07 jari 453                         }
2 26 Feb 07 jari 454                     }
2 26 Feb 07 jari 455                     okPressed = true;
2 26 Feb 07 jari 456                     dispose();
2 26 Feb 07 jari 457                 } catch (Exception e) {
2 26 Feb 07 jari 458                     JOptionPane.showMessageDialog(KNNCFirstDialog.this, "Invalid format for at least one parameter", "Error!", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 459                 }
2 26 Feb 07 jari 460                 //okPressed = true;
2 26 Feb 07 jari 461                 //dispose();
2 26 Feb 07 jari 462             } else if (command.equals("reset-command")) {
2 26 Feb 07 jari 463                 okPressed = false;
2 26 Feb 07 jari 464                 genesButton.setSelected(true);
2 26 Feb 07 jari 465                 expsButton.setSelected(false);
2 26 Feb 07 jari 466                 useVarianceFilterBox.setSelected(false);
2 26 Feb 07 jari 467                 useCorrelFilterBox.setSelected(false);
2 26 Feb 07 jari 468                 useVarianceFilterBox.setText("Use variance filter (if unchecked, use all genes)");
2 26 Feb 07 jari 469                 //useCorrelFilterBox.setText("Use correlation filter (if unchecked, use all genes)");
2 26 Feb 07 jari 470                 varLabel.setText("          Use only the following number of highest-variance genes: ");
2 26 Feb 07 jari 471                 numGenesField.setText("1000");
2 26 Feb 07 jari 472                 pValueField.setText("0.01");
2 26 Feb 07 jari 473                 numPermsField.setText("1000");
2 26 Feb 07 jari 474                 numClassesField.setText("5");
2 26 Feb 07 jari 475                 numNeighborsField.setText("3");
2 26 Feb 07 jari 476                 //trgSetFromCurrent.setSelected(true);
2 26 Feb 07 jari 477                 //createNewTrgSetButton.setSelected(true);
2 26 Feb 07 jari 478                 //annotSelectBox.setSelectedIndex(0);
2 26 Feb 07 jari 479                 hclOpsPanel.setHCLSelected(false);
2 26 Feb 07 jari 480             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 481                 okPressed = false;
2 26 Feb 07 jari 482                 dispose();
2 26 Feb 07 jari 483             } else if (command.equals("info-command")){
2 26 Feb 07 jari 484                 HelpWindow hw = new HelpWindow(KNNCFirstDialog.this, "KNNC Parameter Selections");
2 26 Feb 07 jari 485                 okPressed = false;
2 26 Feb 07 jari 486                 if(hw.getWindowContent()){
2 26 Feb 07 jari 487                     hw.setSize(450,600);
2 26 Feb 07 jari 488                     hw.setLocation();
2 26 Feb 07 jari 489                     hw.show();
2 26 Feb 07 jari 490                     return;
2 26 Feb 07 jari 491                 }
2 26 Feb 07 jari 492                 else {
2 26 Feb 07 jari 493                     hw.setVisible(false);
2 26 Feb 07 jari 494                     hw.dispose();
2 26 Feb 07 jari 495                     return;
2 26 Feb 07 jari 496                 }
2 26 Feb 07 jari 497                 
2 26 Feb 07 jari 498             }
2 26 Feb 07 jari 499             
2 26 Feb 07 jari 500         }
2 26 Feb 07 jari 501     }  
2 26 Feb 07 jari 502 }