mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/sota/SOTAInitDialog.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  * $RCSfile: SOTAInitDialog.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
2 26 Feb 07 jari 13 package org.tigr.microarray.mev.cluster.gui.impl.sota;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15 import java.awt.Color;
2 26 Feb 07 jari 16 import java.awt.Dimension;
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.ActionListener;
2 26 Feb 07 jari 23 import java.awt.event.ItemEvent;
2 26 Feb 07 jari 24 import java.awt.event.ItemListener;
2 26 Feb 07 jari 25 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 26
2 26 Feb 07 jari 27 import javax.swing.JCheckBox;
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.UIManager;
2 26 Feb 07 jari 32
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.algorithm.Algorithm;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DistanceMetricPanel;
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.SampleSelectionPanel;
2 26 Feb 07 jari 39 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 40
2 26 Feb 07 jari 41 /**
2 26 Feb 07 jari 42  *
2 26 Feb 07 jari 43  * @author  braisted
2 26 Feb 07 jari 44  */
2 26 Feb 07 jari 45 public class SOTAInitDialog extends AlgorithmDialog {
2 26 Feb 07 jari 46     
2 26 Feb 07 jari 47     public int result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 48     private float initDiv = 0.01f;
2 26 Feb 07 jari 49     
2 26 Feb 07 jari 50     private SampleSelectionPanel sampleSelectionPanel;
2 26 Feb 07 jari 51     private javax.swing.ButtonGroup divideCritButtonGroup;
2 26 Feb 07 jari 52     private javax.swing.JPanel parameters;
2 26 Feb 07 jari 53     private javax.swing.JPanel growthCritPanel;
2 26 Feb 07 jari 54     private javax.swing.JLabel maxCyclesLabel;
2 26 Feb 07 jari 55     private javax.swing.JLabel maxDivLabel;
2 26 Feb 07 jari 56     private javax.swing.JTextField maxTreeDiv;
2 26 Feb 07 jari 57     private javax.swing.JTextField stopEpochCriteria;
2 26 Feb 07 jari 58     private javax.swing.JLabel epochImpLabel;
2 26 Feb 07 jari 59     private javax.swing.JTextField maxCyclesText;
2 26 Feb 07 jari 60     private javax.swing.JCheckBox runMaxCycles;
2 26 Feb 07 jari 61     private javax.swing.JTextField maxEpPerCycleText;
2 26 Feb 07 jari 62     private javax.swing.JLabel jLabel52;
2 26 Feb 07 jari 63     private javax.swing.JCheckBox runIterative;
2 26 Feb 07 jari 64     private javax.swing.JPanel migCritPanel;
2 26 Feb 07 jari 65     private javax.swing.JLabel jLabel57;
2 26 Feb 07 jari 66     private javax.swing.JTextField migFactor_w;
2 26 Feb 07 jari 67     private javax.swing.JLabel jLabel58;
2 26 Feb 07 jari 68     private javax.swing.JLabel jLabel49;
2 26 Feb 07 jari 69     private javax.swing.JTextField migFactor_s;
2 26 Feb 07 jari 70     private javax.swing.JTextField migFactor_p;
2 26 Feb 07 jari 71     private java.awt.Choice levelChoice;
2 26 Feb 07 jari 72     private javax.swing.JLabel jLabel1;
2 26 Feb 07 jari 73     private javax.swing.JPanel cellDivPanel;
2 26 Feb 07 jari 74     private javax.swing.JRadioButton useClusterDiversity;
2 26 Feb 07 jari 75     private javax.swing.JPanel jPanel1;
2 26 Feb 07 jari 76     private javax.swing.JRadioButton useClusterVariance;
2 26 Feb 07 jari 77     private javax.swing.JLabel pValueLabel;
2 26 Feb 07 jari 78     private javax.swing.JTextField pValue;
2 26 Feb 07 jari 79     private HCLSelectionPanel hclOpsPanel;
2 26 Feb 07 jari 80     
2 26 Feb 07 jari 81     private DistanceMetricPanel metricPanel;
2 26 Feb 07 jari 82     private String globalMetricName;
2 26 Feb 07 jari 83     private boolean globalAbsoluteSetting;
2 26 Feb 07 jari 84     
2 26 Feb 07 jari 85     /** Creates new form JSOTAInitDialog */
2 26 Feb 07 jari 86     public SOTAInitDialog(java.awt.Frame parent, int factor, String globalMetricName, boolean globalAbsoluteSetting) {
2 26 Feb 07 jari 87         super(parent, "SOTA: Self Organizing Tree Algorithm", true);
2 26 Feb 07 jari 88
2 26 Feb 07 jari 89         this.globalMetricName = globalMetricName;
2 26 Feb 07 jari 90         this.globalAbsoluteSetting = globalAbsoluteSetting;
2 26 Feb 07 jari 91         
2 26 Feb 07 jari 92         initComponents();
2 26 Feb 07 jari 93         
2 26 Feb 07 jari 94         if(factor == -1){
2 26 Feb 07 jari 95             maxTreeDiv.setText("0.90");
2 26 Feb 07 jari 96             initDiv = 0.90f;
2 26 Feb 07 jari 97         }
2 26 Feb 07 jari 98         //use for future feature
2 26 Feb 07 jari 99         this.runIterative.setVisible(false);
2 26 Feb 07 jari 100         
2 26 Feb 07 jari 101         Listener listener = new Listener();
2 26 Feb 07 jari 102         this.addWindowListener(listener);
2 26 Feb 07 jari 103         setActionListeners(listener);
2 26 Feb 07 jari 104         metricPanel.addActionListener(listener);
2 26 Feb 07 jari 105         
2 26 Feb 07 jari 106         this.useClusterVariance.addItemListener(listener);
2 26 Feb 07 jari 107         setSize(580,630);
2 26 Feb 07 jari 108       //pack();
2 26 Feb 07 jari 109     }
2 26 Feb 07 jari 110     
2 26 Feb 07 jari 111     private void updateMaxTreeDiversity() {
2 26 Feb 07 jari 112         int function = metricPanel.getMetricIndex();
2 26 Feb 07 jari 113         int factor;
2 26 Feb 07 jari 114         
2 26 Feb 07 jari 115         if ((function==Algorithm.PEARSON)           ||
2 26 Feb 07 jari 116         (function==Algorithm.PEARSONUNCENTERED) ||
2 26 Feb 07 jari 117         (function==Algorithm.PEARSONSQARED)     ||
2 26 Feb 07 jari 118         (function==Algorithm.COSINE)            ||
2 26 Feb 07 jari 119         (function==Algorithm.COVARIANCE)        ||
2 26 Feb 07 jari 120         (function==Algorithm.DOTPRODUCT)        ||
2 26 Feb 07 jari 121         (function==Algorithm.SPEARMANRANK)      ||
2 26 Feb 07 jari 122         (function==Algorithm.KENDALLSTAU)) {
2 26 Feb 07 jari 123             factor = -1;
2 26 Feb 07 jari 124         } else {
2 26 Feb 07 jari 125             factor = 1;
2 26 Feb 07 jari 126         }
2 26 Feb 07 jari 127         
2 26 Feb 07 jari 128          
2 26 Feb 07 jari 129         if(factor == -1){
2 26 Feb 07 jari 130             maxTreeDiv.setText("0.90");
2 26 Feb 07 jari 131             initDiv = 0.90f;
2 26 Feb 07 jari 132         } else {
2 26 Feb 07 jari 133             maxTreeDiv.setText("0.01");            
2 26 Feb 07 jari 134             
2 26 Feb 07 jari 135         }
2 26 Feb 07 jari 136     }
2 26 Feb 07 jari 137     
2 26 Feb 07 jari 138     private void initComponents() {
2 26 Feb 07 jari 139         
2 26 Feb 07 jari 140         sampleSelectionPanel = new SampleSelectionPanel(Color.white, UIManager.getColor("Label.foreground"), true, "Sample Selection");
2 26 Feb 07 jari 141         
2 26 Feb 07 jari 142         metricPanel = new DistanceMetricPanel(globalMetricName, globalAbsoluteSetting, "Euclidean Distance", "SOTA", true, true);
2 26 Feb 07 jari 143                 
2 26 Feb 07 jari 144         maxCyclesLabel = new javax.swing.JLabel();
2 26 Feb 07 jari 145         maxDivLabel = new javax.swing.JLabel();
2 26 Feb 07 jari 146         maxTreeDiv = new javax.swing.JTextField();
2 26 Feb 07 jari 147         stopEpochCriteria = new javax.swing.JTextField();
2 26 Feb 07 jari 148         epochImpLabel = new javax.swing.JLabel();
2 26 Feb 07 jari 149         maxCyclesText = new javax.swing.JTextField();
2 26 Feb 07 jari 150         runMaxCycles = new javax.swing.JCheckBox();
2 26 Feb 07 jari 151         maxEpPerCycleText = new javax.swing.JTextField();
2 26 Feb 07 jari 152         jLabel52 = new javax.swing.JLabel();
2 26 Feb 07 jari 153         runIterative = new javax.swing.JCheckBox();
2 26 Feb 07 jari 154         migCritPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 155         jLabel57 = new javax.swing.JLabel();
2 26 Feb 07 jari 156         migFactor_w = new javax.swing.JTextField();
2 26 Feb 07 jari 157         jLabel58 = new javax.swing.JLabel();
2 26 Feb 07 jari 158         jLabel49 = new javax.swing.JLabel();
2 26 Feb 07 jari 159         migFactor_s = new javax.swing.JTextField();
2 26 Feb 07 jari 160         migFactor_p = new javax.swing.JTextField();
2 26 Feb 07 jari 161         levelChoice = new java.awt.Choice();
2 26 Feb 07 jari 162         for(int i = 5; i >= 0; i--){
2 26 Feb 07 jari 163             this.levelChoice.addItem(String.valueOf(i));
2 26 Feb 07 jari 164         }
2 26 Feb 07 jari 165         this.levelChoice.select("5");
2 26 Feb 07 jari 166         jLabel1 = new javax.swing.JLabel();
2 26 Feb 07 jari 167         cellDivPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 168         useClusterDiversity = new javax.swing.JRadioButton();
2 26 Feb 07 jari 169         jPanel1 = new javax.swing.JPanel();
2 26 Feb 07 jari 170         useClusterVariance = new javax.swing.JRadioButton();
2 26 Feb 07 jari 171         pValueLabel = new javax.swing.JLabel();
2 26 Feb 07 jari 172         pValue = new javax.swing.JTextField();
2 26 Feb 07 jari 173         hclOpsPanel = new HCLSelectionPanel();
2 26 Feb 07 jari 174         
2 26 Feb 07 jari 175         
2 26 Feb 07 jari 176         //GROWTH CRITERIA PANEL
2 26 Feb 07 jari 177         growthCritPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 178         growthCritPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 179         growthCritPanel.setBackground(Color.white);
2 26 Feb 07 jari 180         growthCritPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.LineBorder(Color.gray), "Growth Termination Criteria", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 12), Color.black));
2 26 Feb 07 jari 181         
2 26 Feb 07 jari 182         maxCyclesLabel.setText("Max. Cycles");
2 26 Feb 07 jari 183         maxCyclesLabel.setToolTipText("Maximum training cycles (final cluster number = MaxCycles +1)");
2 26 Feb 07 jari 184         
2 26 Feb 07 jari 185         maxDivLabel.setText("Max. Cell Diversity");
2 26 Feb 07 jari 186         maxDivLabel.setToolTipText("Training will stop when the most diverse cell crosses this limit. (for Euclidean diversity approaches 0, for Pearson diversity approaches 1.0)  ");
2 26 Feb 07 jari 187         
2 26 Feb 07 jari 188         maxTreeDiv.setColumns(6);
2 26 Feb 07 jari 189         maxTreeDiv.setText("0.01");
2 26 Feb 07 jari 190         
2 26 Feb 07 jari 191         stopEpochCriteria.setColumns(6);
2 26 Feb 07 jari 192         stopEpochCriteria.setText("0.0001");
2 26 Feb 07 jari 193         
2 26 Feb 07 jari 194         epochImpLabel.setText("Min. Epoch Error Improvement");
2 26 Feb 07 jari 195         epochImpLabel.setToolTipText("If improvement in relative tree error changes by less than this, current cycle ends");
2 26 Feb 07 jari 196         
2 26 Feb 07 jari 197         maxCyclesText.setColumns(6);
2 26 Feb 07 jari 198         maxCyclesText.setText("10");
2 26 Feb 07 jari 199         
2 26 Feb 07 jari 200         runMaxCycles.setText("Run Maximum  Number of Cycles (unrestricted growth)");
2 26 Feb 07 jari 201         runMaxCycles.setBackground(Color.white);
2 26 Feb 07 jari 202         runMaxCycles.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 203         runMaxCycles.setAlignmentX(JCheckBox.CENTER_ALIGNMENT);
2 26 Feb 07 jari 204         runMaxCycles.setFocusPainted(false);
2 26 Feb 07 jari 205         
2 26 Feb 07 jari 206         maxEpPerCycleText.setColumns(6);
2 26 Feb 07 jari 207         maxEpPerCycleText.setText("1000");
2 26 Feb 07 jari 208         
2 26 Feb 07 jari 209         jLabel52.setText("Max. epochs/cycle");
2 26 Feb 07 jari 210         jLabel52.setToolTipText("Maximum training epochs per cycle");
2 26 Feb 07 jari 211      //   growthCritPanel.add(runIterative);
2 26 Feb 07 jari 212         
2 26 Feb 07 jari 213         addWindowListener(new java.awt.event.WindowAdapter() {
2 26 Feb 07 jari 214             public void windowClosing(java.awt.event.WindowEvent evt) {
2 26 Feb 07 jari 215                 closeDialog(evt);
2 26 Feb 07 jari 216             }
2 26 Feb 07 jari 217         });
2 26 Feb 07 jari 218         
2 26 Feb 07 jari 219         growthCritPanel.add(maxCyclesLabel, new GridBagConstraints(0,0,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,30,5,0),0,0));
2 26 Feb 07 jari 220         growthCritPanel.add(maxCyclesText, new GridBagConstraints(1,0,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,5,5,0),0,0));
2 26 Feb 07 jari 221         growthCritPanel.add(maxDivLabel, new GridBagConstraints(2,0,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,40,5,0),0,0));
2 26 Feb 07 jari 222         growthCritPanel.add(maxTreeDiv, new GridBagConstraints(3,0,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,5,5,20),0,0));
2 26 Feb 07 jari 223         growthCritPanel.add(jLabel52, new GridBagConstraints(0,1,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,30,0,0),0,0));
2 26 Feb 07 jari 224         growthCritPanel.add(maxEpPerCycleText, new GridBagConstraints(1,1,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,5,0,0),0,0));
2 26 Feb 07 jari 225         growthCritPanel.add(epochImpLabel, new GridBagConstraints(2,1,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,40,0,0),0,0));
2 26 Feb 07 jari 226         growthCritPanel.add(stopEpochCriteria, new GridBagConstraints(3,1,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,5,0,20),0,0));
2 26 Feb 07 jari 227         growthCritPanel.add(runMaxCycles, new GridBagConstraints(0,2,4,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(5,90,0,10),0,0));
2 26 Feb 07 jari 228         
2 26 Feb 07 jari 229         migCritPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 230         migCritPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), "Cetroid Migration and Neighborhood Parameters", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 12), Color.black));
2 26 Feb 07 jari 231         migCritPanel.setBackground(Color.white);
2 26 Feb 07 jari 232         
2 26 Feb 07 jari 233         jLabel57.setText("Winning Cell Migration Weight");
2 26 Feb 07 jari 234         jLabel57.setToolTipText("Factor to apply to winning cell migration");
2 26 Feb 07 jari 235         migFactor_w.setColumns(5);
2 26 Feb 07 jari 236         migFactor_w.setText("0.01");
2 26 Feb 07 jari 237         
2 26 Feb 07 jari 238         jLabel58.setText("Parent Cell Migration Weight");
2 26 Feb 07 jari 239         jLabel58.setToolTipText("Factor to apply to parent cell migration");
2 26 Feb 07 jari 240         migFactor_p.setColumns(5);
2 26 Feb 07 jari 241         migFactor_p.setText("0.005");
2 26 Feb 07 jari 242         
2 26 Feb 07 jari 243         jLabel49.setText("Sister Cell Migration Weight");
2 26 Feb 07 jari 244         jLabel49.setToolTipText("Factor to apply to sister cell migration");
2 26 Feb 07 jari 245         migFactor_s.setColumns(5);
2 26 Feb 07 jari 246         migFactor_s.setText("0.001");
2 26 Feb 07 jari 247         
2 26 Feb 07 jari 248         JPanel pPanel = new JPanel();
2 26 Feb 07 jari 249         pPanel.setBackground(Color.white);
2 26 Feb 07 jari 250         pPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 251         pPanel.add(jLabel1, new GridBagConstraints(0,0,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 252         pPanel.add(levelChoice, new GridBagConstraints(1,0,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,15,0,20),0,0));
2 26 Feb 07 jari 253         
2 26 Feb 07 jari 254         jLabel1.setText("Neighborhood Level");
2 26 Feb 07 jari 255         jLabel1.setToolTipText("Determines extent of redistribution neighborhood");
2 26 Feb 07 jari 256         
2 26 Feb 07 jari 257         levelChoice.setSize(50, 35);
2 26 Feb 07 jari 258         
2 26 Feb 07 jari 259         migCritPanel.add(jLabel57, new GridBagConstraints(0,0,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(5,0,5,0),0,0) );
2 26 Feb 07 jari 260         migCritPanel.add(jLabel58, new GridBagConstraints(0,1,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 261         migCritPanel.add(jLabel49, new GridBagConstraints(0,2,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 262         migCritPanel.add(migFactor_w, new GridBagConstraints(1,0,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(5,25,5,20),0,0));
2 26 Feb 07 jari 263         migCritPanel.add(migFactor_p, new GridBagConstraints(1,1,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,25,5,20),0,0));
2 26 Feb 07 jari 264         migCritPanel.add(migFactor_s, new GridBagConstraints(1,2,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,25,5,20),0,0));
2 26 Feb 07 jari 265         migCritPanel.add(pPanel, new GridBagConstraints(2,0,1,3,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 266         
2 26 Feb 07 jari 267         cellDivPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 268         cellDivPanel.setBackground(Color.white);
2 26 Feb 07 jari 269         cellDivPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), "Cell Division Criteria", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 12), Color.black));
2 26 Feb 07 jari 270         
2 26 Feb 07 jari 271         useClusterDiversity.setToolTipText("Use cell resource to determin cell to divide");
2 26 Feb 07 jari 272         useClusterDiversity.setSelected(true);
2 26 Feb 07 jari 273         useClusterDiversity.setText("Use Cell Diversity  ( mean dist(gene,centroid) )");
2 26 Feb 07 jari 274         useClusterDiversity.setAlignmentX(JRadioButton.CENTER_ALIGNMENT);
2 26 Feb 07 jari 275         useClusterDiversity.setBackground(Color.white);
2 26 Feb 07 jari 276         useClusterDiversity.setFocusPainted(false);
2 26 Feb 07 jari 277         useClusterDiversity.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 278         divideCritButtonGroup = new javax.swing.ButtonGroup();
2 26 Feb 07 jari 279         divideCritButtonGroup.add(useClusterDiversity);
2 26 Feb 07 jari 280         
2 26 Feb 07 jari 281         jPanel1.setLayout(new GridBagLayout());
2 26 Feb 07 jari 282         jPanel1.setBackground(Color.white);
2 26 Feb 07 jari 283         
2 26 Feb 07 jari 284         useClusterVariance.setToolTipText("Use variance and p Value to stop cell division");
2 26 Feb 07 jari 285         useClusterVariance.setText("Use Cell Variability ( max( dist(g(i), g(j)) ) )");
2 26 Feb 07 jari 286         useClusterVariance.setBackground(Color.white);
2 26 Feb 07 jari 287         useClusterVariance.setFocusPainted(false);
2 26 Feb 07 jari 288         useClusterVariance.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 289         
2 26 Feb 07 jari 290         divideCritButtonGroup.add(useClusterVariance);
2 26 Feb 07 jari 291         
2 26 Feb 07 jari 292         pValueLabel.setText("p Value");
2 26 Feb 07 jari 293         pValueLabel.setBackground(Color.white);
2 26 Feb 07 jari 294         pValue.setText("0.05");
2 26 Feb 07 jari 295         pValue.setEnabled(false);
2 26 Feb 07 jari 296         
2 26 Feb 07 jari 297         jPanel1.add(useClusterVariance, new GridBagConstraints(0,0,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,30),0,0));
2 26 Feb 07 jari 298         jPanel1.add(pValueLabel, new GridBagConstraints(1,0,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,20,0,0),0,0));
2 26 Feb 07 jari 299         jPanel1.add(pValue, new GridBagConstraints(2,0,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,10,0,30),0,0));
2 26 Feb 07 jari 300         
2 26 Feb 07 jari 301         cellDivPanel.add(useClusterDiversity, new GridBagConstraints(0,0,3,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,90,0,0),0,0));
2 26 Feb 07 jari 302         cellDivPanel.add(jPanel1, new GridBagConstraints(0,1,3,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,10,5,10),0,0));
2 26 Feb 07 jari 303         
2 26 Feb 07 jari 304         //Main Parameter panel
2 26 Feb 07 jari 305         parameters = new javax.swing.JPanel();
2 26 Feb 07 jari 306         parameters.setLayout(new GridBagLayout());
2 26 Feb 07 jari 307         parameters.setPreferredSize(new java.awt.Dimension(520, 412));
2 26 Feb 07 jari 308         parameters.setMaximumSize(new java.awt.Dimension(32767, 690));
2 26 Feb 07 jari 309         parameters.add(sampleSelectionPanel, new GridBagConstraints(0,0,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 310         parameters.add(metricPanel, new GridBagConstraints(0,1,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0)); 
2 26 Feb 07 jari 311         parameters.add(growthCritPanel, new GridBagConstraints(0,2,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 312         parameters.add(migCritPanel, new GridBagConstraints(0,3,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 313         parameters.add(cellDivPanel, new GridBagConstraints(0,4,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 314         parameters.add(hclOpsPanel, new GridBagConstraints(0,5,1,1,1.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 315         
2 26 Feb 07 jari 316         addContent(parameters);
2 26 Feb 07 jari 317     }
2 26 Feb 07 jari 318     
2 26 Feb 07 jari 319     
2 26 Feb 07 jari 320     /** Closes the dialog */
2 26 Feb 07 jari 321     private void closeDialog(java.awt.event.WindowEvent evt) {
2 26 Feb 07 jari 322         setVisible(false);
2 26 Feb 07 jari 323         dispose();
2 26 Feb 07 jari 324     }
2 26 Feb 07 jari 325     
2 26 Feb 07 jari 326     /**
2 26 Feb 07 jari 327      * Shows the dialog.
2 26 Feb 07 jari 328      */
2 26 Feb 07 jari 329     public int showModal() {
2 26 Feb 07 jari 330         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 331         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 332         show();
2 26 Feb 07 jari 333         return result;
2 26 Feb 07 jari 334     }
2 26 Feb 07 jari 335     
2 26 Feb 07 jari 336     /**
2 26 Feb 07 jari 337      * Retrieves integer values corresponding to supplied key
2 26 Feb 07 jari 338      */
2 26 Feb 07 jari 339     public int getInt(String key) throws NumberFormatException{
2 26 Feb 07 jari 340         
2 26 Feb 07 jari 341         String inputText;
2 26 Feb 07 jari 342         int value = 0;
2 26 Feb 07 jari 343         
2 26 Feb 07 jari 344         if(key.equals("maxCycles")){
2 26 Feb 07 jari 345             inputText = this.maxCyclesText.getText();
2 26 Feb 07 jari 346             value = (Integer.parseInt(inputText));
2 26 Feb 07 jari 347         }
2 26 Feb 07 jari 348         else if(key.equals("maxEpochsPerCycle")){
2 26 Feb 07 jari 349             inputText = this.maxEpPerCycleText.getText();
2 26 Feb 07 jari 350             value = (Integer.parseInt(inputText));
2 26 Feb 07 jari 351         }
2 26 Feb 07 jari 352         else if(key.equals("neighborhood-level")){
2 26 Feb 07 jari 353             value = Integer.parseInt(levelChoice.getSelectedItem());
2 26 Feb 07 jari 354         }
2 26 Feb 07 jari 355         return value;
2 26 Feb 07 jari 356     }
2 26 Feb 07 jari 357     
2 26 Feb 07 jari 358     
2 26 Feb 07 jari 359     /**
2 26 Feb 07 jari 360      * Returns the currently selected metric
2 26 Feb 07 jari 361      */
2 26 Feb 07 jari 362     public int getDistanceMetric() {
2 26 Feb 07 jari 363         return metricPanel.getMetricIndex();
2 26 Feb 07 jari 364     }
2 26 Feb 07 jari 365     
2 26 Feb 07 jari 366     /**
2 26 Feb 07 jari 367      *  Returns true if the absolute checkbox is selected, else false
2 26 Feb 07 jari 368      */
2 26 Feb 07 jari 369     public boolean isAbsoluteDistance() {
2 26 Feb 07 jari 370         return metricPanel.getAbsoluteSelection();
2 26 Feb 07 jari 371     }
2 26 Feb 07 jari 372     
2 26 Feb 07 jari 373     
2 26 Feb 07 jari 374     /**
2 26 Feb 07 jari 375      * Retrieves float values corresponding to supplied key
2 26 Feb 07 jari 376      */
2 26 Feb 07 jari 377     public float getFloat(String key) throws NumberFormatException{
2 26 Feb 07 jari 378         
2 26 Feb 07 jari 379         String inputText;
2 26 Feb 07 jari 380         float value = 0;
2 26 Feb 07 jari 381         
2 26 Feb 07 jari 382         if(key.equals("maxTreeDiv")){
2 26 Feb 07 jari 383             inputText = maxTreeDiv.getText();
2 26 Feb 07 jari 384             value = Float.parseFloat(inputText);
2 26 Feb 07 jari 385         }
2 26 Feb 07 jari 386         else if(key.equals("epochStopCriteria")){
2 26 Feb 07 jari 387             inputText = stopEpochCriteria.getText();
2 26 Feb 07 jari 388             value = Float.parseFloat(inputText);
2 26 Feb 07 jari 389         }
2 26 Feb 07 jari 390         else if(key.equals("migFactor_w")){
2 26 Feb 07 jari 391             inputText = migFactor_w.getText();
2 26 Feb 07 jari 392             value = Float.parseFloat(inputText);
2 26 Feb 07 jari 393         }
2 26 Feb 07 jari 394         else if(key.equals("migFactor_p")){
2 26 Feb 07 jari 395             inputText = migFactor_p.getText();
2 26 Feb 07 jari 396             value = Float.parseFloat(inputText);
2 26 Feb 07 jari 397         }
2 26 Feb 07 jari 398         else if(key.equals("migFactor_s")){
2 26 Feb 07 jari 399             inputText = migFactor_s.getText();
2 26 Feb 07 jari 400             value = Float.parseFloat(inputText);
2 26 Feb 07 jari 401         }
2 26 Feb 07 jari 402         else if(key.equals("pValue")){
2 26 Feb 07 jari 403             inputText = pValue.getText();
2 26 Feb 07 jari 404             value = Float.parseFloat(inputText);
2 26 Feb 07 jari 405         }
2 26 Feb 07 jari 406         return value;
2 26 Feb 07 jari 407     }
2 26 Feb 07 jari 408     
2 26 Feb 07 jari 409     /**
2 26 Feb 07 jari 410      * Retrieves boolean values corresponding to supplied key
2 26 Feb 07 jari 411      */
2 26 Feb 07 jari 412     public boolean getBoolean(String key){
2 26 Feb 07 jari 413         boolean value = false;
2 26 Feb 07 jari 414         
2 26 Feb 07 jari 415         if(key.equals("runToMaxCycles")){
2 26 Feb 07 jari 416             value = runMaxCycles.isSelected();
2 26 Feb 07 jari 417         }
2 26 Feb 07 jari 418         else if(key.equals("useVariance")){
2 26 Feb 07 jari 419             value = useClusterVariance.isSelected();
2 26 Feb 07 jari 420         }
2 26 Feb 07 jari 421         else if(key.equals("calcClusterHCL")){
2 26 Feb 07 jari 422             value = this.hclOpsPanel.isHCLSelected();
2 26 Feb 07 jari 423         }
2 26 Feb 07 jari 424         else if(key.equals("runIterative")){
2 26 Feb 07 jari 425             value = runIterative.isSelected();
2 26 Feb 07 jari 426         }
2 26 Feb 07 jari 427         else if(key.equals("clusterGenes")){
2 26 Feb 07 jari 428             value = this.sampleSelectionPanel.isClusterGenesSelected();
2 26 Feb 07 jari 429         }
2 26 Feb 07 jari 430         return value;
2 26 Feb 07 jari 431     }
2 26 Feb 07 jari 432     
2 26 Feb 07 jari 433     private void resetControls(){
2 26 Feb 07 jari 434         this.sampleSelectionPanel.setClusterGenesSelected(true);
2 26 Feb 07 jari 435         this.maxCyclesText.setText("10");
2 26 Feb 07 jari 436         this.maxTreeDiv.setText(Float.toString(this.initDiv));
2 26 Feb 07 jari 437         this.maxEpPerCycleText.setText("1000");
2 26 Feb 07 jari 438         this.stopEpochCriteria.setText("0.0001");
2 26 Feb 07 jari 439         this.runMaxCycles.setSelected(false);
2 26 Feb 07 jari 440         this.migFactor_w.setText("0.01");
2 26 Feb 07 jari 441         this.migFactor_p.setText("0.005");
2 26 Feb 07 jari 442         this.migFactor_s.setText("0.001");
2 26 Feb 07 jari 443         this.levelChoice.select(0);
2 26 Feb 07 jari 444         this.hclOpsPanel.setHCLSelected(false);
2 26 Feb 07 jari 445         this.useClusterDiversity.setSelected(true);
2 26 Feb 07 jari 446         this.pValue.setText("0.05");
2 26 Feb 07 jari 447         metricPanel.reset();
2 26 Feb 07 jari 448         updateMaxTreeDiversity();
2 26 Feb 07 jari 449     }
2 26 Feb 07 jari 450     
2 26 Feb 07 jari 451     private boolean validateValues(){
2 26 Feb 07 jari 452         boolean result = true;
2 26 Feb 07 jari 453         int i;
2 26 Feb 07 jari 454         float f;
2 26 Feb 07 jari 455         try{
2 26 Feb 07 jari 456             i = Integer.parseInt(this.maxCyclesText.getText());
2 26 Feb 07 jari 457             if(i <= 0){
2 26 Feb 07 jari 458                 JOptionPane.showMessageDialog(this, "Input Value Error. Max cycles must be > 0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 459                 this.maxCyclesText.requestFocus();
2 26 Feb 07 jari 460                 this.maxCyclesText.selectAll();
2 26 Feb 07 jari 461                 return false;
2 26 Feb 07 jari 462             }
2 26 Feb 07 jari 463             
2 26 Feb 07 jari 464         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 465             JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 466             this.maxCyclesText.requestFocus();
2 26 Feb 07 jari 467             this.maxCyclesText.selectAll();
2 26 Feb 07 jari 468             return false;
2 26 Feb 07 jari 469         }
2 26 Feb 07 jari 470         try{
2 26 Feb 07 jari 471             i = Integer.parseInt(this.maxEpPerCycleText.getText());
2 26 Feb 07 jari 472             if(i <= 0){
2 26 Feb 07 jari 473                 JOptionPane.showMessageDialog(this, "Input Value Error. Max epochs/cycle must be > 0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 474                 this.maxEpPerCycleText.requestFocus();
2 26 Feb 07 jari 475                 this.maxEpPerCycleText.selectAll();
2 26 Feb 07 jari 476                 return false;
2 26 Feb 07 jari 477             }
2 26 Feb 07 jari 478         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 479             JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 480             this.maxEpPerCycleText.requestFocus();
2 26 Feb 07 jari 481             this.maxEpPerCycleText.selectAll();
2 26 Feb 07 jari 482             return false;
2 26 Feb 07 jari 483         }
2 26 Feb 07 jari 484         if(this.useClusterDiversity.isSelected()){
2 26 Feb 07 jari 485             try{
2 26 Feb 07 jari 486                 f = Float.parseFloat(this.maxTreeDiv.getText());
2 26 Feb 07 jari 487                 if(f <= 0){
2 26 Feb 07 jari 488                     JOptionPane.showMessageDialog(this, "Input Value Error. Max Tree Diversity must be > 0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 489                     this.maxTreeDiv.requestFocus();
2 26 Feb 07 jari 490                     this.maxTreeDiv.selectAll();
2 26 Feb 07 jari 491                     return false;
2 26 Feb 07 jari 492                 }
2 26 Feb 07 jari 493             } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 494                 JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 495                 this.maxTreeDiv.requestFocus();
2 26 Feb 07 jari 496                 this.maxTreeDiv.selectAll();
2 26 Feb 07 jari 497                 return false;
2 26 Feb 07 jari 498             }
2 26 Feb 07 jari 499         }
2 26 Feb 07 jari 500         
2 26 Feb 07 jari 501         try{
2 26 Feb 07 jari 502             f = Float.parseFloat(this.stopEpochCriteria.getText());
2 26 Feb 07 jari 503             if(f <= 0){
2 26 Feb 07 jari 504                 JOptionPane.showMessageDialog(this, "Input Value Error. Epoch Improvment Limit  must be > 0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 505                 this.stopEpochCriteria.requestFocus();
2 26 Feb 07 jari 506                 this.stopEpochCriteria.selectAll();
2 26 Feb 07 jari 507                 return false;
2 26 Feb 07 jari 508             }
2 26 Feb 07 jari 509         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 510             JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 511             this.stopEpochCriteria.requestFocus();
2 26 Feb 07 jari 512             this.stopEpochCriteria.selectAll();
2 26 Feb 07 jari 513             return false;
2 26 Feb 07 jari 514         }
2 26 Feb 07 jari 515         
2 26 Feb 07 jari 516         
2 26 Feb 07 jari 517         try{
2 26 Feb 07 jari 518             f = Float.parseFloat(this.migFactor_w.getText());
2 26 Feb 07 jari 519             if(f <= 0){
2 26 Feb 07 jari 520                 JOptionPane.showMessageDialog(this, "Input Value Error. Winning Cell Migration Weight must be > 0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 521                 this.migFactor_w.requestFocus();
2 26 Feb 07 jari 522                 this.migFactor_w.selectAll();
2 26 Feb 07 jari 523                 return false;
2 26 Feb 07 jari 524             }
2 26 Feb 07 jari 525         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 526             JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 527             this.migFactor_w.requestFocus();
2 26 Feb 07 jari 528             this.migFactor_w.selectAll();
2 26 Feb 07 jari 529             return false;
2 26 Feb 07 jari 530         }
2 26 Feb 07 jari 531         try{
2 26 Feb 07 jari 532             f = Float.parseFloat(this.migFactor_p.getText());
2 26 Feb 07 jari 533             if(f <= 0){
2 26 Feb 07 jari 534                 JOptionPane.showMessageDialog(this, "Input Value Error. Parent Cell Migration Weight must be > 0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 535                 this.migFactor_p.requestFocus();
2 26 Feb 07 jari 536                 this.migFactor_p.selectAll();
2 26 Feb 07 jari 537                 return false;
2 26 Feb 07 jari 538             }
2 26 Feb 07 jari 539         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 540             JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 541             this.migFactor_p.requestFocus();
2 26 Feb 07 jari 542             this.migFactor_p.selectAll();
2 26 Feb 07 jari 543             return false;
2 26 Feb 07 jari 544         }
2 26 Feb 07 jari 545         try{
2 26 Feb 07 jari 546             f = Float.parseFloat(this.migFactor_s.getText());
2 26 Feb 07 jari 547             if(f <= 0){
2 26 Feb 07 jari 548                 JOptionPane.showMessageDialog(this, "Input Value Error. Sister Cell Migration Weight must be > 0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 549                 this.migFactor_s.requestFocus();
2 26 Feb 07 jari 550                 this.migFactor_s.selectAll();
2 26 Feb 07 jari 551                 return false;
2 26 Feb 07 jari 552             }
2 26 Feb 07 jari 553         } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 554             JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 555             this.migFactor_s.requestFocus();
2 26 Feb 07 jari 556             this.migFactor_s.selectAll();
2 26 Feb 07 jari 557             return false;
2 26 Feb 07 jari 558         }
2 26 Feb 07 jari 559         
2 26 Feb 07 jari 560         if(this.useClusterVariance.isSelected()){
2 26 Feb 07 jari 561             try{
2 26 Feb 07 jari 562                 f = Float.parseFloat(this.pValue.getText());
2 26 Feb 07 jari 563                 if(f <= 0 || f >=1.0){
2 26 Feb 07 jari 564                     JOptionPane.showMessageDialog(this, "Input Value Error. Alpha Value must be > 0 and < 1.0.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 565                     pValue.requestFocus();
2 26 Feb 07 jari 566                     pValue.selectAll();
2 26 Feb 07 jari 567                     return false;
2 26 Feb 07 jari 568                 }
2 26 Feb 07 jari 569             } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 570                 JOptionPane.showMessageDialog(this, "Input Format Error. "+nfe.getMessage()+" is not valid.  Please try again.", "Input error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 571                 pValue.requestFocus();
2 26 Feb 07 jari 572                 pValue.selectAll();
2 26 Feb 07 jari 573                 return false;
2 26 Feb 07 jari 574             }
2 26 Feb 07 jari 575         }
2 26 Feb 07 jari 576         
2 26 Feb 07 jari 577         
2 26 Feb 07 jari 578         
2 26 Feb 07 jari 579         
2 26 Feb 07 jari 580         
2 26 Feb 07 jari 581         return result;
2 26 Feb 07 jari 582     }
2 26 Feb 07 jari 583     
2 26 Feb 07 jari 584     /**
2 26 Feb 07 jari 585      * @param args the command line arguments
2 26 Feb 07 jari 586      */
2 26 Feb 07 jari 587     public static void main(String args[]) {
2 26 Feb 07 jari 588         new SOTAInitDialog(new java.awt.Frame(), 1, "Euclidean Distance", false).show();
2 26 Feb 07 jari 589         System.exit(0);
2 26 Feb 07 jari 590     }
2 26 Feb 07 jari 591     
2 26 Feb 07 jari 592     protected void disposeDialog() {
2 26 Feb 07 jari 593     }
2 26 Feb 07 jari 594     
2 26 Feb 07 jari 595     /**
2 26 Feb 07 jari 596      * The class to listen to the dialog and check boxes items events.
2 26 Feb 07 jari 597      */
2 26 Feb 07 jari 598     private class Listener extends DialogListener implements ItemListener, ActionListener {
2 26 Feb 07 jari 599         
2 26 Feb 07 jari 600         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 601             String command = e.getActionCommand();
2 26 Feb 07 jari 602             if (command.equals("ok-command")) {
2 26 Feb 07 jari 603                 if(validateValues())
2 26 Feb 07 jari 604                     result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 605                 else
2 26 Feb 07 jari 606                     return;
2 26 Feb 07 jari 607             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 608                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 609             } else if (command.equals("reset-command")){
2 26 Feb 07 jari 610                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 611                 resetControls();
2 26 Feb 07 jari 612                 return;
2 26 Feb 07 jari 613             } else if (command.equals("info-command")){
2 26 Feb 07 jari 614                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 615                 HelpWindow help = new HelpWindow(SOTAInitDialog.this, "SOTA Initialization Dialog");
2 26 Feb 07 jari 616                 if(help.getWindowContent()){
2 26 Feb 07 jari 617                     help.setSize(500,650);
2 26 Feb 07 jari 618                     help.setLocation();
2 26 Feb 07 jari 619                     help.show();
2 26 Feb 07 jari 620                     return;
2 26 Feb 07 jari 621                 }
2 26 Feb 07 jari 622                 else{
2 26 Feb 07 jari 623                     help.dispose();
2 26 Feb 07 jari 624                     return;
2 26 Feb 07 jari 625                 }
2 26 Feb 07 jari 626             } else if (e.getSource() == metricPanel) {
2 26 Feb 07 jari 627                 updateMaxTreeDiversity();
2 26 Feb 07 jari 628                 return;
2 26 Feb 07 jari 629             }
2 26 Feb 07 jari 630             dispose();
2 26 Feb 07 jari 631         }
2 26 Feb 07 jari 632         
2 26 Feb 07 jari 633         public void itemStateChanged(ItemEvent e) {
2 26 Feb 07 jari 634             
2 26 Feb 07 jari 635             if(useClusterVariance.isSelected()){
2 26 Feb 07 jari 636                 pValue.setEnabled(true);
2 26 Feb 07 jari 637                 maxTreeDiv.setEnabled(false);
2 26 Feb 07 jari 638                 repaint();
2 26 Feb 07 jari 639             }
2 26 Feb 07 jari 640             else{
2 26 Feb 07 jari 641                 pValue.setEnabled(false);
2 26 Feb 07 jari 642                 maxTreeDiv.setEnabled(true);
2 26 Feb 07 jari 643                 repaint();
2 26 Feb 07 jari 644             }
2 26 Feb 07 jari 645         }
2 26 Feb 07 jari 646         
2 26 Feb 07 jari 647         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 648             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 649             dispose();
2 26 Feb 07 jari 650         }
2 26 Feb 07 jari 651     }
2 26 Feb 07 jari 652     
2 26 Feb 07 jari 653     
2 26 Feb 07 jari 654     
2 26 Feb 07 jari 655     
2 26 Feb 07 jari 656     
2 26 Feb 07 jari 657     
2 26 Feb 07 jari 658 }