mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/tease/TEASEInitDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * Created on Aug 25, 2005
2 26 Feb 07 jari 3  *
2 26 Feb 07 jari 4  * TODO To change the template for this generated file go to
2 26 Feb 07 jari 5  * Window - Preferences - Java - Code Style - Code Templates
2 26 Feb 07 jari 6  */
2 26 Feb 07 jari 7 package org.tigr.microarray.mev.cluster.gui.impl.tease;
2 26 Feb 07 jari 8
2 26 Feb 07 jari 9 import java.awt.Color;
2 26 Feb 07 jari 10 import java.awt.Component;
2 26 Feb 07 jari 11 import java.awt.Dimension;
2 26 Feb 07 jari 12 import java.awt.Font;
2 26 Feb 07 jari 13 import java.awt.Frame;
2 26 Feb 07 jari 14 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 15 import java.awt.GridBagLayout;
2 26 Feb 07 jari 16 import java.awt.Insets;
2 26 Feb 07 jari 17 import java.awt.Toolkit;
2 26 Feb 07 jari 18 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 19 import java.awt.event.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.KeyEvent;
2 26 Feb 07 jari 23 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 24 import java.io.File;
2 26 Feb 07 jari 25 import java.util.Vector;
2 26 Feb 07 jari 26
2 26 Feb 07 jari 27 import javax.swing.BorderFactory;
2 26 Feb 07 jari 28 import javax.swing.ButtonGroup;
2 26 Feb 07 jari 29 import javax.swing.DefaultListCellRenderer;
2 26 Feb 07 jari 30 import javax.swing.DefaultListModel;
2 26 Feb 07 jari 31 import javax.swing.JButton;
2 26 Feb 07 jari 32 import javax.swing.JCheckBox;
2 26 Feb 07 jari 33 import javax.swing.JComboBox;
2 26 Feb 07 jari 34 import javax.swing.JFileChooser;
2 26 Feb 07 jari 35 import javax.swing.JFrame;
2 26 Feb 07 jari 36 import javax.swing.JLabel;
2 26 Feb 07 jari 37 import javax.swing.JList;
2 26 Feb 07 jari 38 import javax.swing.JOptionPane;
2 26 Feb 07 jari 39 import javax.swing.JPanel;
2 26 Feb 07 jari 40 import javax.swing.JRadioButton;
2 26 Feb 07 jari 41 import javax.swing.JScrollPane;
2 26 Feb 07 jari 42 import javax.swing.JTabbedPane;
2 26 Feb 07 jari 43 import javax.swing.JTextField;
2 26 Feb 07 jari 44 import javax.swing.UIManager;
2 26 Feb 07 jari 45 import javax.swing.border.BevelBorder;
2 26 Feb 07 jari 46 import javax.swing.border.EtchedBorder;
2 26 Feb 07 jari 47 import javax.swing.border.TitledBorder;
2 26 Feb 07 jari 48 import javax.swing.event.ListSelectionEvent;
2 26 Feb 07 jari 49 import javax.swing.event.ListSelectionListener;
2 26 Feb 07 jari 50
2 26 Feb 07 jari 51 import org.tigr.microarray.mev.TMEV;
2 26 Feb 07 jari 52 import org.tigr.microarray.mev.cluster.clusterUtil.Cluster;
2 26 Feb 07 jari 53 import org.tigr.microarray.mev.cluster.gui.helpers.ClusterBrowser;
2 26 Feb 07 jari 54 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 55 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 56 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DistanceMetricPanel;
2 26 Feb 07 jari 57 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.ParameterPanel;
2 26 Feb 07 jari 58 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 59 import org.tigr.microarray.mev.cluster.gui.impl.ease.EASEInitDialog;
2 26 Feb 07 jari 60 import org.tigr.microarray.mev.cluster.gui.impl.ease.EASEUpdateManager;
2 26 Feb 07 jari 61
2 26 Feb 07 jari 62
2 26 Feb 07 jari 63 /**
2 26 Feb 07 jari 64  * @author Annie Liu
2 26 Feb 07 jari 65  * @version Aug 25, 2005
2 26 Feb 07 jari 66  *
2 26 Feb 07 jari 67  * TODO To change the template for this generated type comment go to
2 26 Feb 07 jari 68  * Window - Preferences - Java - Code Style - Code Templates
2 26 Feb 07 jari 69  */
2 26 Feb 07 jari 70 public class TEASEInitDialog extends AlgorithmDialog{
2 26 Feb 07 jari 71   
2 26 Feb 07 jari 72     /**
2 26 Feb 07 jari 73    * 
2 26 Feb 07 jari 74    */
2 26 Feb 07 jari 75   private static final long serialVersionUID = 1L;
2 26 Feb 07 jari 76
2 26 Feb 07 jari 77   private int result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 78     
2 26 Feb 07 jari 79     private ConfigPanel configPanel;
2 26 Feb 07 jari 80     private ModePanel modePanel;
2 26 Feb 07 jari 81     private PopSelectionPanel popPanel;
2 26 Feb 07 jari 82     private ColorBoundaryPanel colorPanel;
2 26 Feb 07 jari 83     private ClusterBrowser browser;
2 26 Feb 07 jari 84     private EventListener listener;
2 26 Feb 07 jari 85     private EaseParameterPanel easeParamPanel;
2 26 Feb 07 jari 86     private HCLSelectionPanel hclPanel;
2 26 Feb 07 jari 87     private AlphaPanel alphaPanel;
2 26 Feb 07 jari 88     private JTabbedPane tabbedPane;
2 26 Feb 07 jari 89     private Font font;
2 26 Feb 07 jari 90     private String sep;
2 26 Feb 07 jari 91     private Frame parent;
2 26 Feb 07 jari 92   
2 26 Feb 07 jari 93     
2 26 Feb 07 jari 94     /** Creates a new instance of EaseInitDialog
2 26 Feb 07 jari 95      * @param parent Parent Frame
2 26 Feb 07 jari 96      * @param repository Cluster repository to construct <CODE>ClusterBrowser</CODE>
2 26 Feb 07 jari 97      * @param annotationLabels Annotation types
2 26 Feb 07 jari 98      */
2 26 Feb 07 jari 99     public TEASEInitDialog(Frame parent, String [] annotationLabels, String globalMetricName, 
2 26 Feb 07 jari 100         boolean globalAbsoluteDistance, boolean showDistancePanel) {
2 26 Feb 07 jari 101       
2 26 Feb 07 jari 102         super(parent, "TEASE: TEASE Annotation Analysis", true);
2 26 Feb 07 jari 103         this.parent = parent;
2 26 Feb 07 jari 104         this.font = new Font("Dialog", Font.BOLD, 12);
2 26 Feb 07 jari 105         this.listener = new EventListener();
2 26 Feb 07 jari 106         addWindowListener(this.listener);
2 26 Feb 07 jari 107         
2 26 Feb 07 jari 108         //Tabbed pane creation
2 26 Feb 07 jari 109         this.tabbedPane = new JTabbedPane();
2 26 Feb 07 jari 110         
2 26 Feb 07 jari 111         //config panel        
2 26 Feb 07 jari 112         this.configPanel = new ConfigPanel();        
2 26 Feb 07 jari 113         
2 26 Feb 07 jari 114         //create hcl panel and add to tabbed pane
2 26 Feb 07 jari 115         this.hclPanel = new HCLSelectionPanel(globalMetricName, globalAbsoluteDistance, showDistancePanel);
2 26 Feb 07 jari 116         this.hclPanel.setTreeSelectionControls(false);
2 26 Feb 07 jari 117         this.tabbedPane.add("HCL Clustering", hclPanel);
2 26 Feb 07 jari 118         
2 26 Feb 07 jari 119         //create population panel, add to popNClusterPanel, add popNClusterPanel to tabbed pane
2 26 Feb 07 jari 120         JPanel popNClusterPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 121         popNClusterPanel.setBackground(Color.white);
2 26 Feb 07 jari 122         this.popPanel = new PopSelectionPanel();
2 26 Feb 07 jari 123         this.colorPanel = new ColorBoundaryPanel();
2 26 Feb 07 jari 124         popNClusterPanel.add(this.popPanel, new GridBagConstraints(0,0,1,1,1.0,0.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 125             GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 126         popNClusterPanel.add(this.colorPanel, new GridBagConstraints(0,1,1,1,1.0,0.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 127             GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 128         this.tabbedPane.add("Population/Color", popNClusterPanel);
2 26 Feb 07 jari 129         
2 26 Feb 07 jari 130         //create ease parameter panel and add to tabbed pane
2 26 Feb 07 jari 131         this.easeParamPanel = new EaseParameterPanel(annotationLabels);
2 26 Feb 07 jari 132         this.tabbedPane.add("Annotation Parameters", easeParamPanel);
2 26 Feb 07 jari 133         
2 26 Feb 07 jari 134         //create analysis parameter panel and add to tabbed pane
2 26 Feb 07 jari 135         this.alphaPanel = new AlphaPanel();
2 26 Feb 07 jari 136         this.tabbedPane.add("Statistical Parameters", alphaPanel);
2 26 Feb 07 jari 137
2 26 Feb 07 jari 138         //create a j panel to be added to frame
2 26 Feb 07 jari 139         JPanel parameters = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 140         parameters.setBackground(Color.white);
2 26 Feb 07 jari 141         
2 26 Feb 07 jari 142         //mode panel
2 26 Feb 07 jari 143         this.modePanel = new ModePanel();
2 26 Feb 07 jari 144         
2 26 Feb 07 jari 145         parameters.add(this.configPanel, new GridBagConstraints(0,0,1,1,1.0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 146             GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));       
2 26 Feb 07 jari 147         parameters.add(this.modePanel, new GridBagConstraints(0,1,1,1,1.0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 148             GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 149         parameters.add(this.tabbedPane, new GridBagConstraints(0,2,1,1,1.0,1.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 150             GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 151         
2 26 Feb 07 jari 152         this.addContent(parameters);
2 26 Feb 07 jari 153         this.setActionListeners(this.listener);
2 26 Feb 07 jari 154         
2 26 Feb 07 jari 155         this.setSize(570,750);
2 26 Feb 07 jari 156     }
2 26 Feb 07 jari 157     
2 26 Feb 07 jari 158     /** Shows the dialog.
2 26 Feb 07 jari 159      * @return  */
2 26 Feb 07 jari 160     public int showModal() {
2 26 Feb 07 jari 161         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 162         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 163         show();
2 26 Feb 07 jari 164         return result;
2 26 Feb 07 jari 165     }
2 26 Feb 07 jari 166     
2 26 Feb 07 jari 167     /**
2 26 Feb 07 jari 168      * Resets controls to default initial settings
2 26 Feb 07 jari 169      */
2 26 Feb 07 jari 170     private void resetControls(){
2 26 Feb 07 jari 171         //reset HCL tab
2 26 Feb 07 jari 172       this.hclPanel.ALC.setSelected(true);
2 26 Feb 07 jari 173         this.hclPanel.metricPanel.reset();
2 26 Feb 07 jari 174         this.hclPanel.maxField.setText("100");
2 26 Feb 07 jari 175         this.hclPanel.minField.setText("10");
2 26 Feb 07 jari 176         
2 26 Feb 07 jari 177         //reset 
2 26 Feb 07 jari 178         this.alphaPanel.fisherBox.setSelected(true);
2 26 Feb 07 jari 179     }
2 26 Feb 07 jari 180     /**
2 26 Feb 07 jari 181      * get upper boundary for color coded dots (blue)
2 26 Feb 07 jari 182      * @return
2 26 Feb 07 jari 183      */
2 26 Feb 07 jari 184     public String getUpperBoundary() {
2 26 Feb 07 jari 185       return this.colorPanel.upperField.getText();
2 26 Feb 07 jari 186     }
2 26 Feb 07 jari 187     
2 26 Feb 07 jari 188     /**
2 26 Feb 07 jari 189      * get lower boundary for color coded dots (red)
2 26 Feb 07 jari 190      * @return
2 26 Feb 07 jari 191      */
2 26 Feb 07 jari 192     public String getLowerBoundary() {
2 26 Feb 07 jari 193       return this.colorPanel.lowerField.getText();
2 26 Feb 07 jari 194     }
2 26 Feb 07 jari 195     
2 26 Feb 07 jari 196     public String isHCLOnly() {
2 26 Feb 07 jari 197       return String.valueOf(this.modePanel.hclOnlyButton.isSelected());
2 26 Feb 07 jari 198     }
2 26 Feb 07 jari 199     
2 26 Feb 07 jari 200     /** I
2 26 Feb 07 jari 201      * ndicates if mode is cluster analysis, if not mode is annotation survey.
2 26 Feb 07 jari 202      * @return  
2 26 Feb 07 jari 203      */
2 26 Feb 07 jari 204     public boolean isClusterModeSelected(){
2 26 Feb 07 jari 205         return this.modePanel.clusterAnalysisButton.isSelected();
2 26 Feb 07 jari 206     }
2 26 Feb 07 jari 207     
2 26 Feb 07 jari 208     /** Returns the cluster selected for analysis.
2 26 Feb 07 jari 209      * @return  */
2 26 Feb 07 jari 210     public Cluster getSelectedCluster(){
2 26 Feb 07 jari 211         return this.browser.getSelectedCluster();
2 26 Feb 07 jari 212     }
2 26 Feb 07 jari 213     
2 26 Feb 07 jari 214     
2 26 Feb 07 jari 215     public boolean isPopFileModeSelected() {
2 26 Feb 07 jari 216         return popPanel.fileButton.isSelected();
2 26 Feb 07 jari 217     } 
2 26 Feb 07 jari 218     
2 26 Feb 07 jari 219     /**
2 26 Feb 07 jari 220      * Returns a method code.
2 26 Feb 07 jari 221      * @return 0 for ALC method, 1 for CLC or -1 otherwise.
2 26 Feb 07 jari 222      */
2 26 Feb 07 jari 223     public int getMethod() {
2 26 Feb 07 jari 224         if (this.hclPanel.ALC.isSelected()) {
2 26 Feb 07 jari 225             return 0;
2 26 Feb 07 jari 226         }
2 26 Feb 07 jari 227         if (this.hclPanel.CLC.isSelected()) {
2 26 Feb 07 jari 228             return 1;
2 26 Feb 07 jari 229         }
2 26 Feb 07 jari 230         return -1;
2 26 Feb 07 jari 231     }
2 26 Feb 07 jari 232     
2 26 Feb 07 jari 233     /**
2 26 Feb 07 jari 234      * Returns the currently selected metric
2 26 Feb 07 jari 235      */
2 26 Feb 07 jari 236     public int getDistanceMetric() {
2 26 Feb 07 jari 237         return this.hclPanel.metricPanel.getMetricIndex();
2 26 Feb 07 jari 238     }
2 26 Feb 07 jari 239     
2 26 Feb 07 jari 240     /**
2 26 Feb 07 jari 241      *  Returns true if the absolute checkbox is selected, else false
2 26 Feb 07 jari 242      */
2 26 Feb 07 jari 243     public boolean getAbsoluteSelection() {
2 26 Feb 07 jari 244         return this.hclPanel.metricPanel.getAbsoluteSelection();
2 26 Feb 07 jari 245     }
2 26 Feb 07 jari 246     
2 26 Feb 07 jari 247     /** Returns the population fille to load
2 26 Feb 07 jari 248      */
2 26 Feb 07 jari 249     public String getPopulationFileName() {
2 26 Feb 07 jari 250         return this.popPanel.getPopFile();
2 26 Feb 07 jari 251     }
2 26 Feb 07 jari 252     
2 26 Feb 07 jari 253     /** Returns the name of the converter file selected.
2 26 Feb 07 jari 254      * If none selected null is returned.
2 26 Feb 07 jari 255      */
2 26 Feb 07 jari 256     public String getConverterFileName(){
2 26 Feb 07 jari 257         return easeParamPanel.getConverterFileName();
2 26 Feb 07 jari 258     }
2 26 Feb 07 jari 259     
2 26 Feb 07 jari 260     /** Returns the minimum clusters size if trimming result.
2 26 Feb 07 jari 261      */
2 26 Feb 07 jari 262     public int getMinClusterSize() {
2 26 Feb 07 jari 263         String value = easeParamPanel.minClusterSizeField.getText();
2 26 Feb 07 jari 264         try {
2 26 Feb 07 jari 265             int size = Integer.parseInt(value);
2 26 Feb 07 jari 266             return size;
2 26 Feb 07 jari 267         } catch (NumberFormatException e) {
2 26 Feb 07 jari 268             return 0;
2 26 Feb 07 jari 269         }
2 26 Feb 07 jari 270     }
2 26 Feb 07 jari 271     
2 26 Feb 07 jari 272     /** Returns the base file location for EASE file system
2 26 Feb 07 jari 273      */
2 26 Feb 07 jari 274     public String getBaseFileLocation() {
2 26 Feb 07 jari 275         return configPanel.getBaseFileLocation();
2 26 Feb 07 jari 276     }
2 26 Feb 07 jari 277     
2 26 Feb 07 jari 278     /** Returns the annotation key type.
2 26 Feb 07 jari 279      */
2 26 Feb 07 jari 280     public String getAnnotationKeyType(){
2 26 Feb 07 jari 281         return easeParamPanel.getAnnotationKeyType();
2 26 Feb 07 jari 282     }
2 26 Feb 07 jari 283     
2 26 Feb 07 jari 284     
2 26 Feb 07 jari 285     /** Returns a list of file names corresponding to files mapping
2 26 Feb 07 jari 286      * indices to annotation terms (themes).
2 26 Feb 07 jari 287      */
2 26 Feb 07 jari 288     public String [] getAnnToGOFileList(){
2 26 Feb 07 jari 289         return this.easeParamPanel.getAnnToGOFileList();
2 26 Feb 07 jari 290     }
2 26 Feb 07 jari 291     
2 26 Feb 07 jari 292     /**
2 26 Feb 07 jari 293      * Return the max number of genes in EASE analysis specified by user
2 26 Feb 07 jari 294      * @return 
2 26 Feb 07 jari 295      */
2 26 Feb 07 jari 296     public String getMaxNumber() {
2 26 Feb 07 jari 297       return this.hclPanel.maxField.getText();
2 26 Feb 07 jari 298     }
2 26 Feb 07 jari 299     
2 26 Feb 07 jari 300     /**
2 26 Feb 07 jari 301      * Return the min number of genes in EASE analysis specified by user
2 26 Feb 07 jari 302      * @return 
2 26 Feb 07 jari 303      */
2 26 Feb 07 jari 304     public String getMinNumber() {
2 26 Feb 07 jari 305       return this.hclPanel.minField.getText();
2 26 Feb 07 jari 306     }
2 26 Feb 07 jari 307     
2 26 Feb 07 jari 308     public boolean isGeneTreeSelected() {
2 26 Feb 07 jari 309       return this.hclPanel.genes_box.isSelected();
2 26 Feb 07 jari 310     }
2 26 Feb 07 jari 311     
2 26 Feb 07 jari 312     public boolean isSampleTreeSelected() {
2 26 Feb 07 jari 313       return this.hclPanel.sample_box.isSelected();
2 26 Feb 07 jari 314     }
2 26 Feb 07 jari 315     
2 26 Feb 07 jari 316     /** Returns the stat to report.  If true then EaseScore, else Fisher's Exact.
2 26 Feb 07 jari 317      */
2 26 Feb 07 jari 318     public boolean isEaseScoreSelected(){
2 26 Feb 07 jari 319         return (this.alphaPanel.easeBox.isSelected());
2 26 Feb 07 jari 320     }
2 26 Feb 07 jari 321     
2 26 Feb 07 jari 322     /** Returns true if multiplicity corrections are
2 26 Feb 07 jari 323      * selected.
2 26 Feb 07 jari 324      */
2 26 Feb 07 jari 325     public boolean isCorrectPvaluesSelected(){
2 26 Feb 07 jari 326         return (this.isBonferroniSelected() || this.isStepDownBonferroniSelected() || this.isSidakSelected());
2 26 Feb 07 jari 327     }
2 26 Feb 07 jari 328     
2 26 Feb 07 jari 329     /** Returns true if Bonferroni correction is selected.
2 26 Feb 07 jari 330      */
2 26 Feb 07 jari 331     public boolean isBonferroniSelected(){
2 26 Feb 07 jari 332         return alphaPanel.bonferroniBox.isSelected();
2 26 Feb 07 jari 333     }
2 26 Feb 07 jari 334     
2 26 Feb 07 jari 335     /** Returns true if step down Bonferroni is selected.
2 26 Feb 07 jari 336      */
2 26 Feb 07 jari 337     public boolean isStepDownBonferroniSelected(){
2 26 Feb 07 jari 338         return alphaPanel.bonferroniStepBox.isSelected();
2 26 Feb 07 jari 339     }
2 26 Feb 07 jari 340     
2 26 Feb 07 jari 341     /** Returns true is Sidak method correction is selected
2 26 Feb 07 jari 342      */
2 26 Feb 07 jari 343     public boolean isSidakSelected(){
2 26 Feb 07 jari 344         return alphaPanel.sidakBox.isSelected();
2 26 Feb 07 jari 345     }
2 26 Feb 07 jari 346     
2 26 Feb 07 jari 347     /** Returns true if bootstrapping permutations
2 26 Feb 07 jari 348      * are selected.
2 26 Feb 07 jari 349      */
2 26 Feb 07 jari 350     public boolean isPermutationAnalysisSelected(){
2 26 Feb 07 jari 351         return alphaPanel.permBox.isSelected();
2 26 Feb 07 jari 352     }
2 26 Feb 07 jari 353     
2 26 Feb 07 jari 354     /** Returns the number of permutations to perform.
2 26 Feb 07 jari 355      */
2 26 Feb 07 jari 356     public int getPermutationCount(){
2 26 Feb 07 jari 357         return Integer.parseInt(alphaPanel.permField.getText());
2 26 Feb 07 jari 358     }
2 26 Feb 07 jari 359     
2 26 Feb 07 jari 360     /** Returns the trim options as two strings.
2 26 Feb 07 jari 361      * The first string indicates the type of trim
2 26 Feb 07 jari 362      * NO_TRIM, N_TRIM, PERCENT_TRIM.  The second string indicates the value to be applied.
2 26 Feb 07 jari 363      */
2 26 Feb 07 jari 364     public String [] getTrimOptions(){
2 26 Feb 07 jari 365         String [] options = new String[2];
2 26 Feb 07 jari 366         if ( alphaPanel.trimBox.isSelected() ){
2 26 Feb 07 jari 367             if ( alphaPanel.trimPercentBox.isSelected() ){
2 26 Feb 07 jari 368                 options[0] = "PERCENT_TRIM";
2 26 Feb 07 jari 369                 options[1] = alphaPanel.trimPercentField.getText();
2 26 Feb 07 jari 370             } else {
2 26 Feb 07 jari 371                 options[0] = "N_TRIM";
2 26 Feb 07 jari 372                 options[1] = alphaPanel.trimNField.getText();
2 26 Feb 07 jari 373             }
2 26 Feb 07 jari 374         } else {
2 26 Feb 07 jari 375             options[0] = "NO_TRIM";
2 26 Feb 07 jari 376             options[1] = "0";
2 26 Feb 07 jari 377         }
2 26 Feb 07 jari 378         return options;
2 26 Feb 07 jari 379     }
2 26 Feb 07 jari 380     
2 26 Feb 07 jari 381     
2 26 Feb 07 jari 382     
2 26 Feb 07 jari 383     /** Contains mode controls. (anal. or survey)
2 26 Feb 07 jari 384      */
2 26 Feb 07 jari 385     private class ModePanel extends JPanel {
2 26 Feb 07 jari 386         /**
2 26 Feb 07 jari 387      * 
2 26 Feb 07 jari 388      */
2 26 Feb 07 jari 389     private static final long serialVersionUID = 1L;
2 26 Feb 07 jari 390     private JRadioButton clusterAnalysisButton;
2 26 Feb 07 jari 391         private JRadioButton slideSurveyButton;
2 26 Feb 07 jari 392         private JRadioButton hclOnlyButton;
2 26 Feb 07 jari 393         
2 26 Feb 07 jari 394         /** Constructs a mode panel.
2 26 Feb 07 jari 395          * @param haveClusters
2 26 Feb 07 jari 396          */
2 26 Feb 07 jari 397         public ModePanel(){
2 26 Feb 07 jari 398             super(new GridBagLayout());
2 26 Feb 07 jari 399             setLayout(new GridBagLayout());
2 26 Feb 07 jari 400             setBackground(Color.white);
2 26 Feb 07 jari 401             setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), 
2 26 Feb 07 jari 402                 "Mode Selection", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION,
2 26 Feb 07 jari 403           font, Color.black));
2 26 Feb 07 jari 404             
2 26 Feb 07 jari 405             ButtonGroup bg = new ButtonGroup();
2 26 Feb 07 jari 406             clusterAnalysisButton = new JRadioButton("Cluster Analysis");
2 26 Feb 07 jari 407             clusterAnalysisButton.setFocusPainted(false);
2 26 Feb 07 jari 408             clusterAnalysisButton.setBackground(Color.white);
2 26 Feb 07 jari 409             clusterAnalysisButton.setHorizontalAlignment(JRadioButton.CENTER);
2 26 Feb 07 jari 410             clusterAnalysisButton.setSelected(true);
2 26 Feb 07 jari 411             clusterAnalysisButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 412                 public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 413                     popPanel.setEnableControls(true);
2 26 Feb 07 jari 414                     colorPanel.setEnableControls(true);
2 26 Feb 07 jari 415                     easeParamPanel.setEnableControls(true);
2 26 Feb 07 jari 416                     alphaPanel.setEnableControls(true);
2 26 Feb 07 jari 417                 }
2 26 Feb 07 jari 418             });
2 26 Feb 07 jari 419             bg.add(clusterAnalysisButton);
2 26 Feb 07 jari 420             
2 26 Feb 07 jari 421             slideSurveyButton = new JRadioButton("Annotation Survey");
2 26 Feb 07 jari 422             slideSurveyButton.setToolTipText("Surveys annotation loaded in the CURRENT viewer.");
2 26 Feb 07 jari 423             slideSurveyButton.setFocusPainted(false);
2 26 Feb 07 jari 424             slideSurveyButton.setBackground(Color.white);
2 26 Feb 07 jari 425             slideSurveyButton.setHorizontalAlignment(JRadioButton.CENTER);
2 26 Feb 07 jari 426             slideSurveyButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 427                 public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 428                     popPanel.setEnableControls(false);
2 26 Feb 07 jari 429                     colorPanel.setEnableControls(false);
2 26 Feb 07 jari 430                     easeParamPanel.setEnableControls(true);
2 26 Feb 07 jari 431                     alphaPanel.setEnableControls(true);
2 26 Feb 07 jari 432                     hclPanel.setTreeSelectionControls(false);
2 26 Feb 07 jari 433                 }
2 26 Feb 07 jari 434             });
2 26 Feb 07 jari 435             bg.add(slideSurveyButton);
2 26 Feb 07 jari 436             
2 26 Feb 07 jari 437             hclOnlyButton = new JRadioButton("HCL Only");
2 26 Feb 07 jari 438             hclOnlyButton.setToolTipText("Clustering without searching");
2 26 Feb 07 jari 439             hclOnlyButton.setFocusPainted(false);
2 26 Feb 07 jari 440             hclOnlyButton.setBackground(Color.white);
2 26 Feb 07 jari 441             hclOnlyButton.setHorizontalAlignment(JRadioButton.CENTER);
2 26 Feb 07 jari 442             hclOnlyButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 443                 public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 444                     popPanel.setEnableControls(false);
2 26 Feb 07 jari 445                     colorPanel.setEnableControls(false);
2 26 Feb 07 jari 446                     easeParamPanel.setEnableControls(false);
2 26 Feb 07 jari 447                     alphaPanel.setEnableControls(false);
2 26 Feb 07 jari 448                     hclPanel.setTreeSelectionControls(true);
2 26 Feb 07 jari 449                 }
2 26 Feb 07 jari 450             });
2 26 Feb 07 jari 451             bg.add(hclOnlyButton);
2 26 Feb 07 jari 452             
2 26 Feb 07 jari 453             add(hclOnlyButton, new GridBagConstraints(0,0,1,1,1.0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 454                 GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0));
2 26 Feb 07 jari 455             add(clusterAnalysisButton, new GridBagConstraints(1,0,1,1,1.0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 456                 GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0));
2 26 Feb 07 jari 457             add(slideSurveyButton, new GridBagConstraints(2,0,GridBagConstraints.REMAINDER,1,1.0,0,
2 26 Feb 07 jari 458                 GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0));
2 26 Feb 07 jari 459
2 26 Feb 07 jari 460         }
2 26 Feb 07 jari 461     }
2 26 Feb 07 jari 462     
2 26 Feb 07 jari 463     private class PopSelectionPanel extends ParameterPanel {
2 26 Feb 07 jari 464         
2 26 Feb 07 jari 465         JRadioButton fileButton;
2 26 Feb 07 jari 466         JRadioButton dataButton;
2 26 Feb 07 jari 467         JTextField popField;
2 26 Feb 07 jari 468         JButton browseButton;
2 26 Feb 07 jari 469         JLabel fileLabel;
2 26 Feb 07 jari 470         
2 26 Feb 07 jari 471         public PopSelectionPanel() {
2 26 Feb 07 jari 472             super("Population Selection");
2 26 Feb 07 jari 473             setLayout(new GridBagLayout());
2 26 Feb 07 jari 474             
2 26 Feb 07 jari 475             ButtonGroup bg = new ButtonGroup();
2 26 Feb 07 jari 476             fileButton = new JRadioButton("Population from File", true);
2 26 Feb 07 jari 477             fileButton.setBackground(Color.white);
2 26 Feb 07 jari 478             fileButton.setFocusPainted(false);
2 26 Feb 07 jari 479             bg.add(fileButton);
2 26 Feb 07 jari 480             
2 26 Feb 07 jari 481             fileButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 482                 public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 483                     
2 26 Feb 07 jari 484                     browseButton.setEnabled(fileButton.isSelected());
2 26 Feb 07 jari 485                     popField.setEnabled(fileButton.isSelected());
2 26 Feb 07 jari 486                     popField.setBackground(Color.white);
2 26 Feb 07 jari 487                     fileLabel.setEnabled(fileButton.isSelected());
2 26 Feb 07 jari 488                     
2 26 Feb 07 jari 489                 }
2 26 Feb 07 jari 490             });
2 26 Feb 07 jari 491             
2 26 Feb 07 jari 492             dataButton = new JRadioButton("Population from Current Viewer");
2 26 Feb 07 jari 493             dataButton.setBackground(Color.white);
2 26 Feb 07 jari 494             dataButton.setFocusPainted(false);
2 26 Feb 07 jari 495             bg.add(dataButton);
2 26 Feb 07 jari 496             dataButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 497                 public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 498                     browseButton.setEnabled(fileButton.isSelected());
2 26 Feb 07 jari 499                     popField.setEnabled(fileButton.isSelected());
2 26 Feb 07 jari 500                     popField.setBackground(Color.lightGray);
2 26 Feb 07 jari 501                     fileLabel.setEnabled(fileButton.isSelected());
2 26 Feb 07 jari 502                     
2 26 Feb 07 jari 503                 }
2 26 Feb 07 jari 504             });
2 26 Feb 07 jari 505             
2 26 Feb 07 jari 506             browseButton = new JButton("File Browser");
2 26 Feb 07 jari 507             browseButton.setFocusPainted(false);
2 26 Feb 07 jari 508             browseButton.setPreferredSize(new Dimension(150, 25));
2 26 Feb 07 jari 509             browseButton.setSize(150, 25);
2 26 Feb 07 jari 510             browseButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 511                 public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 512                     JFileChooser chooser = new JFileChooser(TMEV.getFile("Data/"));
2 26 Feb 07 jari 513                     chooser.setDialogTitle("Population File Selection");
2 26 Feb 07 jari 514                     chooser.setMultiSelectionEnabled(false);
2 26 Feb 07 jari 515                     if(chooser.showOpenDialog(parent) == JOptionPane.OK_OPTION){
2 26 Feb 07 jari 516                         updatePopField(chooser.getSelectedFile().getPath());
2 26 Feb 07 jari 517                     }
2 26 Feb 07 jari 518                 }
2 26 Feb 07 jari 519             });
2 26 Feb 07 jari 520             
2 26 Feb 07 jari 521             fileLabel = new JLabel("File: ");
2 26 Feb 07 jari 522             popField = new JTextField(25);
2 26 Feb 07 jari 523             
2 26 Feb 07 jari 524             add(fileButton, new GridBagConstraints(0,0,3,1,1,0,GridBagConstraints.WEST, 
2 26 Feb 07 jari 525                 GridBagConstraints.BOTH, new Insets(10,30,0,0), 0,0));
2 26 Feb 07 jari 526             add(fileLabel, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 527                 GridBagConstraints.BOTH, new Insets(5,30,0,0), 0,0));
2 26 Feb 07 jari 528             add(popField, new GridBagConstraints(1,1,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 529                 GridBagConstraints.BOTH, new Insets(5,10,0,0), 0,0));
2 26 Feb 07 jari 530             add(browseButton, new GridBagConstraints(2,1,1,1,0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 531                 GridBagConstraints.BOTH, new Insets(5,25,0,20), 0,0));
2 26 Feb 07 jari 532             
2 26 Feb 07 jari 533             add(dataButton, new GridBagConstraints(0,2,3,1,1,0,GridBagConstraints.WEST, 
2 26 Feb 07 jari 534                 GridBagConstraints.BOTH, new Insets(15,30,20,0), 0,0));
2 26 Feb 07 jari 535         }
2 26 Feb 07 jari 536         
2 26 Feb 07 jari 537         private void setEnableControls(boolean enable) {
2 26 Feb 07 jari 538             fileButton.setEnabled(enable);
2 26 Feb 07 jari 539             dataButton.setEnabled(enable);
2 26 Feb 07 jari 540             popField.setEnabled(enable);
2 26 Feb 07 jari 541             browseButton.setEnabled(enable);
2 26 Feb 07 jari 542             fileLabel.setEnabled(enable);
2 26 Feb 07 jari 543             setOpaque(enable);
2 26 Feb 07 jari 544             tabbedPane.setEnabledAt(1, enable);
2 26 Feb 07 jari 545         }
2 26 Feb 07 jari 546         
2 26 Feb 07 jari 547         private void updatePopField(String file) {
2 26 Feb 07 jari 548             this.popField.setText(file);
2 26 Feb 07 jari 549         }
2 26 Feb 07 jari 550         
2 26 Feb 07 jari 551         private String getPopFile() {
2 26 Feb 07 jari 552             return popField.getText();
2 26 Feb 07 jari 553         }        
2 26 Feb 07 jari 554     }
2 26 Feb 07 jari 555     
2 26 Feb 07 jari 556     /** Contains annotation parameter controls.
2 26 Feb 07 jari 557      */
2 26 Feb 07 jari 558     private class EaseParameterPanel extends JPanel {
2 26 Feb 07 jari 559         
2 26 Feb 07 jari 560         JTextField converterFileField;
2 26 Feb 07 jari 561         JList fileList;
2 26 Feb 07 jari 562         JButton browserButton;
2 26 Feb 07 jari 563         JTextField minClusterSizeField;
2 26 Feb 07 jari 564         JComboBox fieldNamesBox;
2 26 Feb 07 jari 565         
2 26 Feb 07 jari 566         JList annFileList;
2 26 Feb 07 jari 567         Vector annVector;
2 26 Feb 07 jari 568         JButton removeButton;
2 26 Feb 07 jari 569         JCheckBox useAnnBox;
2 26 Feb 07 jari 570         JLabel fileLabel;
2 26 Feb 07 jari 571         
2 26 Feb 07 jari 572         /** Constructs a new EaseParameterPanel
2 26 Feb 07 jari 573          * @param fieldNames annotation types
2 26 Feb 07 jari 574          */
2 26 Feb 07 jari 575         public EaseParameterPanel(String [] fieldNames) {
2 26 Feb 07 jari 576             //Conversion File Panel
2 26 Feb 07 jari 577             JPanel convPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 578             convPanel.setBackground(Color.white);
2 26 Feb 07 jari 579             convPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 580                 EtchedBorder.LOWERED), "Annotation Conversion File", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 581           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 582             useAnnBox = new JCheckBox("use annotation converter", false);
2 26 Feb 07 jari 583             useAnnBox.setActionCommand("use-converter-command");
2 26 Feb 07 jari 584             useAnnBox.addActionListener(listener);
2 26 Feb 07 jari 585             useAnnBox.setBackground(Color.white);
2 26 Feb 07 jari 586             useAnnBox.setFocusPainted(false);
2 26 Feb 07 jari 587             
2 26 Feb 07 jari 588             converterFileField = new JTextField(30);
2 26 Feb 07 jari 589             converterFileField.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, 
2 26 Feb 07 jari 590                 Color.lightGray, Color.gray));
2 26 Feb 07 jari 591             converterFileField.setEnabled(false);
2 26 Feb 07 jari 592             converterFileField.setBackground(Color.lightGray);
2 26 Feb 07 jari 593             
2 26 Feb 07 jari 594             browserButton = new JButton("File Browser");
2 26 Feb 07 jari 595             browserButton.setActionCommand("converter-file-browser-command");
2 26 Feb 07 jari 596             browserButton.setFocusPainted(false);
2 26 Feb 07 jari 597             browserButton.setPreferredSize(new Dimension(150, 25));
2 26 Feb 07 jari 598             browserButton.setSize(150, 25);
2 26 Feb 07 jari 599             browserButton.addActionListener(listener);
2 26 Feb 07 jari 600             browserButton.setEnabled(false);
2 26 Feb 07 jari 601             
2 26 Feb 07 jari 602             fileLabel = new JLabel("File :");
2 26 Feb 07 jari 603             fileLabel.setEnabled(false);
2 26 Feb 07 jari 604             convPanel.add(useAnnBox, new GridBagConstraints(0,0,3,1,0.0,0.0,GridBagConstraints.WEST,
2 26 Feb 07 jari 605                 GridBagConstraints.BOTH,new Insets(0,15,15,0),0,0));
2 26 Feb 07 jari 606             convPanel.add(fileLabel, new GridBagConstraints(0,1,1,1,0.0,0.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 607                 GridBagConstraints.BOTH,new Insets(0,15,15,0),0,0));
2 26 Feb 07 jari 608             convPanel.add(this.browserButton, new GridBagConstraints(0,2,3,1,0.0,0.0,GridBagConstraints.WEST,
2 26 Feb 07 jari 609                 GridBagConstraints.VERTICAL,new Insets(0,15,0,0),0,0));
2 26 Feb 07 jari 610             convPanel.add(this.converterFileField, new GridBagConstraints(1,1,2,1,0.0,0.0,
2 26 Feb 07 jari 611                 GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,15,15,0),0,0));
2 26 Feb 07 jari 612             
2 26 Feb 07 jari 613             //Annotation file panel
2 26 Feb 07 jari 614             JPanel annPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 615             annPanel.setBackground(Color.white);
2 26 Feb 07 jari 616             annPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 617                 EtchedBorder.LOWERED), "Gene Annotation / Gene Ontology Linking Files", 
2 26 Feb 07 jari 618           TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 619             
2 26 Feb 07 jari 620             annVector = new Vector();
2 26 Feb 07 jari 621             annFileList = new JList(new DefaultListModel());
2 26 Feb 07 jari 622             annFileList.setCellRenderer(new ListRenderer());
2 26 Feb 07 jari 623             annFileList.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
2 26 Feb 07 jari 624             JScrollPane annPane = new JScrollPane(annFileList);
2 26 Feb 07 jari 625             
2 26 Feb 07 jari 626             JButton  annButton = new JButton("Add Files");
2 26 Feb 07 jari 627             annButton.setActionCommand("ann-file-browser-command");
2 26 Feb 07 jari 628             annButton.addActionListener(listener);
2 26 Feb 07 jari 629             annButton.setFocusPainted(false);
2 26 Feb 07 jari 630             annButton.setPreferredSize(new Dimension(150, 25));
2 26 Feb 07 jari 631             annButton.setSize(150, 25);
2 26 Feb 07 jari 632             
2 26 Feb 07 jari 633             removeButton = new JButton("Remove Selected");
2 26 Feb 07 jari 634             removeButton.setActionCommand("remove-ann-file-command");
2 26 Feb 07 jari 635             removeButton.addActionListener(listener);
2 26 Feb 07 jari 636             removeButton.setFocusPainted(false);
2 26 Feb 07 jari 637             removeButton.setPreferredSize(new Dimension(150, 25));
2 26 Feb 07 jari 638             removeButton.setSize(150, 25);
2 26 Feb 07 jari 639             removeButton.setEnabled(false);
2 26 Feb 07 jari 640             
2 26 Feb 07 jari 641             JPanel fillPanel = new JPanel();
2 26 Feb 07 jari 642             fillPanel.setBackground(Color.white);
2 26 Feb 07 jari 643             annPanel.add(fillPanel, new GridBagConstraints(0,0,1,1,0.0,0.0, GridBagConstraints.CENTER, 
2 26 Feb 07 jari 644                 GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 645             annPanel.add(annButton, new GridBagConstraints(1,0,1,1,0.0,0.0, GridBagConstraints.EAST, 
2 26 Feb 07 jari 646                 GridBagConstraints.VERTICAL, new Insets(0,0,10,5), 0,0));
2 26 Feb 07 jari 647             annPanel.add(removeButton, new GridBagConstraints(2,0,1,1,0.0,0.0, GridBagConstraints.CENTER, 
2 26 Feb 07 jari 648                 GridBagConstraints.VERTICAL, new Insets(0,5,10,0), 0,0));
2 26 Feb 07 jari 649             annPanel.add(new JLabel("Files: "), new GridBagConstraints(0,1,1,1,0.0,0.0, 
2 26 Feb 07 jari 650                 GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 651             annPanel.add(annPane, new GridBagConstraints(1,1,2,1,0.0,1.0, GridBagConstraints.CENTER, 
2 26 Feb 07 jari 652                 GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 653             
2 26 Feb 07 jari 654             sep = System.getProperty("file.separator");
2 26 Feb 07 jari 655             File file = new File(getBaseFileLocation()+"/Data/Convert/");
2 26 Feb 07 jari 656             String tempPath = file.getPath();
2 26 Feb 07 jari 657             Vector fileVector = new Vector();
2 26 Feb 07 jari 658             fileList = new JList(fileVector);
2 26 Feb 07 jari 659             if(file.exists()){
2 26 Feb 07 jari 660                 String [] listFileNames = file.list();
2 26 Feb 07 jari 661                 for(int i = 0; i < listFileNames.length; i++){
2 26 Feb 07 jari 662                     File tempFile = new File(tempPath+sep+listFileNames[i]);
2 26 Feb 07 jari 663                     if(tempFile.isFile())
2 26 Feb 07 jari 664                         fileVector.add(listFileNames[i]);
2 26 Feb 07 jari 665                 }
2 26 Feb 07 jari 666                 if(fileVector.size() > 0){
2 26 Feb 07 jari 667                     converterFileField.setText(tempPath+sep+((String)fileVector.elementAt(0)));
2 26 Feb 07 jari 668                 }
2 26 Feb 07 jari 669             }
2 26 Feb 07 jari 670             
2 26 Feb 07 jari 671             this.fieldNamesBox = new JComboBox(fieldNames);
2 26 Feb 07 jari 672             this.fieldNamesBox.setEditable(false);
2 26 Feb 07 jari 673             
2 26 Feb 07 jari 674             minClusterSizeField = new JTextField(5);
2 26 Feb 07 jari 675             minClusterSizeField.setText("5");
2 26 Feb 07 jari 676             
2 26 Feb 07 jari 677             JPanel contentPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 678             
2 26 Feb 07 jari 679             JPanel easeFilePanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 680             
2 26 Feb 07 jari 681             this.setLayout(new GridBagLayout());
2 26 Feb 07 jari 682             
2 26 Feb 07 jari 683             JPanel annotKeyPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 684             annotKeyPanel.setBackground(Color.white);
2 26 Feb 07 jari 685             annotKeyPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 686                 EtchedBorder.LOWERED), "MeV Annotation Key  (\"Unique ID\")", 
2 26 Feb 07 jari 687           TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 688             
2 26 Feb 07 jari 689             annotKeyPanel.add(new JLabel("Annotation Key:  "), new GridBagConstraints(0,0,1,1,0.0,0.0,
2 26 Feb 07 jari 690                 GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 691             annotKeyPanel.add(this.fieldNamesBox, new GridBagConstraints(1,0,1,1,0.0,0.0,
2 26 Feb 07 jari 692                 GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 693             
2 26 Feb 07 jari 694             this.add(annotKeyPanel, new GridBagConstraints(0,0,1,1,1.0,0.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 695                 GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 696             this.add(convPanel, new GridBagConstraints(0,1,1,1,1.0,0.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 697                 GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 698             this.add(annPanel, new GridBagConstraints(0,2,1,1,1.0,1.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 699                 GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 700         }
2 26 Feb 07 jari 701         
2 26 Feb 07 jari 702         private void updateFileDirectoryField(){
2 26 Feb 07 jari 703             
2 26 Feb 07 jari 704             File file = new File((String)this.fileList.getSelectedValue());
2 26 Feb 07 jari 705             if(file == null)
2 26 Feb 07 jari 706                 return;
2 26 Feb 07 jari 707             
2 26 Feb 07 jari 708             String tempPath = file.getParent();
2 26 Feb 07 jari 709             String fileName = (String)(this.fileList.getModel().getElementAt(this.fileList.getSelectedIndex()));
2 26 Feb 07 jari 710             this.converterFileField.setText(tempPath+sep+fileName);
2 26 Feb 07 jari 711         }
2 26 Feb 07 jari 712         
2 26 Feb 07 jari 713         private void setEnableControls(boolean enable) {
2 26 Feb 07 jari 714           setOpaque(enable);
2 26 Feb 07 jari 715           tabbedPane.setEnabledAt(2, enable);
2 26 Feb 07 jari 716           converterFileField.setEnabled(enable);
2 26 Feb 07 jari 717           fileList.setEnabled(enable);
2 26 Feb 07 jari 718           browserButton.setEnabled(enable);
2 26 Feb 07 jari 719           minClusterSizeField.setEnabled(enable);
2 26 Feb 07 jari 720           fieldNamesBox.setEnabled(enable);
2 26 Feb 07 jari 721           annFileList.setEnabled(enable);
2 26 Feb 07 jari 722           removeButton.setEnabled(enable);
2 26 Feb 07 jari 723           useAnnBox.setEnabled(enable);
2 26 Feb 07 jari 724           fileLabel.setEnabled(enable);
2 26 Feb 07 jari 725         }
2 26 Feb 07 jari 726         
2 26 Feb 07 jari 727         private void updateAnnFileList(File [] files){
2 26 Feb 07 jari 728             File file;
2 26 Feb 07 jari 729             for(int i = 0; i < files.length; i++){
2 26 Feb 07 jari 730                 file = files[i];
2 26 Feb 07 jari 731                 if(!((DefaultListModel) annFileList.getModel()).contains(file)){
2 26 Feb 07 jari 732                     ((DefaultListModel) annFileList.getModel()).addElement(file);
2 26 Feb 07 jari 733                 }
2 26 Feb 07 jari 734             }
2 26 Feb 07 jari 735             annFileList.validate();
2 26 Feb 07 jari 736         }
2 26 Feb 07 jari 737         
2 26 Feb 07 jari 738         /** Returns the converter file name (or null if none)
2 26 Feb 07 jari 739          */
2 26 Feb 07 jari 740         public String getConverterFileName(){
2 26 Feb 07 jari 741             if(this.useAnnBox.isSelected())
2 26 Feb 07 jari 742                 return converterFileField.getText();
2 26 Feb 07 jari 743             return null;
2 26 Feb 07 jari 744         }
2 26 Feb 07 jari 745         
2 26 Feb 07 jari 746         /** Returns the annotation type string.
2 26 Feb 07 jari 747          */
2 26 Feb 07 jari 748         public String getAnnotationKeyType(){
2 26 Feb 07 jari 749             return (String)this.fieldNamesBox.getSelectedItem();
2 26 Feb 07 jari 750         }
2 26 Feb 07 jari 751         
2 26 Feb 07 jari 752         private class EaseListListener implements ListSelectionListener {
2 26 Feb 07 jari 753             public void valueChanged(ListSelectionEvent listSelectionEvent) {
2 26 Feb 07 jari 754                 updateFileDirectoryField();
2 26 Feb 07 jari 755             }
2 26 Feb 07 jari 756         }
2 26 Feb 07 jari 757         
2 26 Feb 07 jari 758         private void updateConverterFileField(String field){
2 26 Feb 07 jari 759             this.converterFileField.setText(field);
2 26 Feb 07 jari 760         }
2 26 Feb 07 jari 761         
2 26 Feb 07 jari 762         /** Returns the list of annotation-theme mapping files.
2 26 Feb 07 jari 763          */
2 26 Feb 07 jari 764         public String [] getAnnToGOFileList(){
2 26 Feb 07 jari 765             String [] fileNames = new String[((DefaultListModel) annFileList.getModel()).size()];
2 26 Feb 07 jari 766             for(int i = 0; i < fileNames.length; i++){
2 26 Feb 07 jari 767                 fileNames[i] = ((File)(((DefaultListModel)annFileList.getModel()).elementAt(i))).getPath();
2 26 Feb 07 jari 768             }
2 26 Feb 07 jari 769             return fileNames;
2 26 Feb 07 jari 770         }
2 26 Feb 07 jari 771         
2 26 Feb 07 jari 772         public void removeSelectedFiles(){
2 26 Feb 07 jari 773             int [] indices = annFileList.getSelectedIndices();
2 26 Feb 07 jari 774             
2 26 Feb 07 jari 775             for(int i = 0; i < indices.length; i++){
2 26 Feb 07 jari 776                 // annFileList.remove(indices[i]);
2 26 Feb 07 jari 777                 ((DefaultListModel)annFileList.getModel()).removeElementAt(indices[i]);
2 26 Feb 07 jari 778             }
2 26 Feb 07 jari 779             if(annFileList.getModel().getSize() < 1){
2 26 Feb 07 jari 780                 this.removeButton.setEnabled(false);
2 26 Feb 07 jari 781                 okButton.setEnabled(false);
2 26 Feb 07 jari 782             }
2 26 Feb 07 jari 783             annFileList.validate();
2 26 Feb 07 jari 784         }
2 26 Feb 07 jari 785         
2 26 Feb 07 jari 786         private class ListRenderer extends DefaultListCellRenderer {
2 26 Feb 07 jari 787             public Component getListCellRendererComponent(JList list, Object value, int index, 
2 26 Feb 07 jari 788                 boolean isSelected, boolean cellHasFocus) {
2 26 Feb 07 jari 789                 super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
2 26 Feb 07 jari 790                 File file = (File) value;
2 26 Feb 07 jari 791                 setText(file.getName());
2 26 Feb 07 jari 792                 return this;
2 26 Feb 07 jari 793             }
2 26 Feb 07 jari 794         }
2 26 Feb 07 jari 795     }
2 26 Feb 07 jari 796     
2 26 Feb 07 jari 797     private class HCLSelectionPanel extends JPanel {
2 26 Feb 07 jari 798        private JRadioButton ALC;
2 26 Feb 07 jari 799        private JRadioButton CLC;
2 26 Feb 07 jari 800        private JRadioButton SLC;
2 26 Feb 07 jari 801        private JTextField maxField;
2 26 Feb 07 jari 802        private JTextField minField; 
2 26 Feb 07 jari 803        private JCheckBox genes_box;
2 26 Feb 07 jari 804        private JCheckBox sample_box;
2 26 Feb 07 jari 805        private DistanceMetricPanel metricPanel;
2 26 Feb 07 jari 806        private JPanel treeSelectionPanel;
2 26 Feb 07 jari 807        /**
2 26 Feb 07 jari 808          * Constructs the dialog.
2 26 Feb 07 jari 809          */
2 26 Feb 07 jari 810         public HCLSelectionPanel(String globalMetricName, boolean globalAbsoluteDistance, 
2 26 Feb 07 jari 811             boolean showDistancePanel) {
2 26 Feb 07 jari 812             super(new GridBagLayout());
2 26 Feb 07 jari 813             setBackground(Color.white);
2 26 Feb 07 jari 814             
2 26 Feb 07 jari 815             metricPanel = new DistanceMetricPanel(globalMetricName, globalAbsoluteDistance, 
2 26 Feb 07 jari 816                 "Euclidean Distance", "HCL", true, true);
2 26 Feb 07 jari 817             metricPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 818                 EtchedBorder.LOWERED), "Distance Metric Selection", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 819           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 820             
2 26 Feb 07 jari 821             //create and set up cluster size specification panel
2 26 Feb 07 jari 822             JPanel numberPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 823             numberPanel.setBackground(Color.white);
2 26 Feb 07 jari 824             numberPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 825                 EtchedBorder.LOWERED), "Cluster size Specification", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 826           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 827             
2 26 Feb 07 jari 828             this.maxField = new JTextField("100", 6);
2 26 Feb 07 jari 829             this.maxField.setBackground(Color.white);
2 26 Feb 07 jari 830             
2 26 Feb 07 jari 831             this.minField = new JTextField("10", 6);
2 26 Feb 07 jari 832             this.minField.setBackground(Color.white);
2 26 Feb 07 jari 833             
2 26 Feb 07 jari 834             JLabel maxLabel = new JLabel("Max");
2 26 Feb 07 jari 835             maxLabel.setBackground(Color.white);
2 26 Feb 07 jari 836             
2 26 Feb 07 jari 837             JLabel minLabel = new JLabel("Min");
2 26 Feb 07 jari 838             minLabel.setBackground(Color.white);
2 26 Feb 07 jari 839             
2 26 Feb 07 jari 840             numberPanel.add(maxLabel, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 841                 GridBagConstraints.BOTH, new Insets(5,0,5,0),0,0));
2 26 Feb 07 jari 842             numberPanel.add(maxField, new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 843                 GridBagConstraints.BOTH, new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 844             numberPanel.add(minLabel, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 845                 GridBagConstraints.BOTH, new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 846             numberPanel.add(minField, new GridBagConstraints(1,1,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 847                 GridBagConstraints.BOTH, new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 848             
2 26 Feb 07 jari 849             //create and set up cluster size specification panel
2 26 Feb 07 jari 850             treeSelectionPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 851             treeSelectionPanel.setBackground(Color.white);
2 26 Feb 07 jari 852             treeSelectionPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 853                 EtchedBorder.LOWERED), "Tree Selection", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 854           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 855             genes_box = new JCheckBox("Gene Tree");
2 26 Feb 07 jari 856             genes_box.setSelected(true);
2 26 Feb 07 jari 857             genes_box.setFocusPainted(false);
2 26 Feb 07 jari 858             genes_box.setBackground(Color.white);
2 26 Feb 07 jari 859             genes_box.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 860             genes_box.addItemListener(listener);
2 26 Feb 07 jari 861             
2 26 Feb 07 jari 862             sample_box = new JCheckBox("Sample Tree");
2 26 Feb 07 jari 863             sample_box.setSelected(false);
2 26 Feb 07 jari 864             sample_box.setFocusPainted(false);
2 26 Feb 07 jari 865             sample_box.setBackground(Color.white);
2 26 Feb 07 jari 866             sample_box.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 867             sample_box.addItemListener(listener);
2 26 Feb 07 jari 868             
2 26 Feb 07 jari 869             treeSelectionPanel.add(genes_box, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 870                 GridBagConstraints.BOTH, new Insets(5,0,5,20), 0,0));
2 26 Feb 07 jari 871             treeSelectionPanel.add(sample_box, new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 872                 GridBagConstraints.BOTH, new Insets(5,20,5,0), 0,0));
2 26 Feb 07 jari 873             
2 26 Feb 07 jari 874             //create and set up parameter panel
2 26 Feb 07 jari 875             ParameterPanel linkageMethodPanel = new ParameterPanel("Linkage Method Selection");
2 26 Feb 07 jari 876             linkageMethodPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 877             linkageMethodPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 878                 EtchedBorder.LOWERED), "Linkage Method Selection", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 879           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 880             
2 26 Feb 07 jari 881             ALC = new JRadioButton("Average linkage clustering");
2 26 Feb 07 jari 882             ALC.setBackground(Color.white);
2 26 Feb 07 jari 883             ALC.setFocusPainted(false);
2 26 Feb 07 jari 884             ALC.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 885             ALC.setMnemonic(KeyEvent.VK_A);
2 26 Feb 07 jari 886             ALC.setSelected(true);
2 26 Feb 07 jari 887             
2 26 Feb 07 jari 888             CLC = new JRadioButton("Complete linkage clustering");
2 26 Feb 07 jari 889             CLC.setBackground(Color.white);
2 26 Feb 07 jari 890             CLC.setFocusPainted(false);
2 26 Feb 07 jari 891             CLC.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 892             CLC.setMnemonic(KeyEvent.VK_C);
2 26 Feb 07 jari 893             
2 26 Feb 07 jari 894             SLC = new JRadioButton("Single linkage clustering");
2 26 Feb 07 jari 895             SLC.setBackground(Color.white);
2 26 Feb 07 jari 896             SLC.setFocusPainted(false);
2 26 Feb 07 jari 897             SLC.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 898             SLC.setMnemonic(KeyEvent.VK_S);
2 26 Feb 07 jari 899             
2 26 Feb 07 jari 900             linkageMethodPanel.add(ALC, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 901                 GridBagConstraints.BOTH, new Insets(5,0,5,0), 0,0));
2 26 Feb 07 jari 902             linkageMethodPanel.add(CLC, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 903                 GridBagConstraints.BOTH, new Insets(0,0,5,0), 0,0));
2 26 Feb 07 jari 904             linkageMethodPanel.add(SLC, new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 905                 GridBagConstraints.BOTH, new Insets(0,0,5,0), 0,0));
2 26 Feb 07 jari 906             
2 26 Feb 07 jari 907             // Group the radio buttons.
2 26 Feb 07 jari 908             ButtonGroup group = new ButtonGroup();
2 26 Feb 07 jari 909             group.add(ALC);
2 26 Feb 07 jari 910             group.add(CLC);
2 26 Feb 07 jari 911             group.add(SLC);
2 26 Feb 07 jari 912             
2 26 Feb 07 jari 913             if(showDistancePanel) {
2 26 Feb 07 jari 914                 this.add(treeSelectionPanel, new GridBagConstraints(0,0,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 915                     GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 916                 this.add(metricPanel, new GridBagConstraints(0,1,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 917                     GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 918                 this.add(linkageMethodPanel, new GridBagConstraints(0,2,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 919                     GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 920                 this.add(numberPanel, new GridBagConstraints(0,3,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 921                     GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 922             } else {
2 26 Feb 07 jari 923                 this.add(treeSelectionPanel, new GridBagConstraints(0,0,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 924                     GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 925                 this.add(linkageMethodPanel, new GridBagConstraints(0,1,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 926                     GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 927                 this.add(numberPanel, new GridBagConstraints(0,2,1,1,1,0,GridBagConstraints.CENTER, 
2 26 Feb 07 jari 928                     GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 929             }
2 26 Feb 07 jari 930             setActionListeners(listener); 
2 26 Feb 07 jari 931         }
2 26 Feb 07 jari 932         
2 26 Feb 07 jari 933         public void setTreeSelectionControls(boolean show) {
2 26 Feb 07 jari 934           treeSelectionPanel.setEnabled(show);
2 26 Feb 07 jari 935           genes_box.setEnabled(show);
2 26 Feb 07 jari 936           sample_box.setEnabled(show);
2 26 Feb 07 jari 937         }
2 26 Feb 07 jari 938         
2 26 Feb 07 jari 939 //        /**
2 26 Feb 07 jari 940 //         * Shows the dialog.
2 26 Feb 07 jari 941 //         */
2 26 Feb 07 jari 942 //        public int showModal() {
2 26 Feb 07 jari 943 //            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 944 //            setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 945 //            show();
2 26 Feb 07 jari 946 //            return result;
2 26 Feb 07 jari 947 //        }
2 26 Feb 07 jari 948         
2 26 Feb 07 jari 949
2 26 Feb 07 jari 950     }
2 26 Feb 07 jari 951     
2 26 Feb 07 jari 952     /** Contains statistical parameter controls.
2 26 Feb 07 jari 953      */
2 26 Feb 07 jari 954     private class AlphaPanel extends JPanel{
2 26 Feb 07 jari 955         
2 26 Feb 07 jari 956         //Stats
2 26 Feb 07 jari 957         private JCheckBox fisherBox;
2 26 Feb 07 jari 958         private JCheckBox easeBox;
2 26 Feb 07 jari 959         //mult. corrections
2 26 Feb 07 jari 960         private JCheckBox bonferroniBox;
2 26 Feb 07 jari 961         private JCheckBox sidakBox;
2 26 Feb 07 jari 962         private JCheckBox bonferroniStepBox;
2 26 Feb 07 jari 963         private JCheckBox permBox;
2 26 Feb 07 jari 964         private JTextField permField;
2 26 Feb 07 jari 965         private JLabel permLabel;
2 26 Feb 07 jari 966         //Trim params
2 26 Feb 07 jari 967         private JCheckBox trimBox;
2 26 Feb 07 jari 968         private JCheckBox trimNBox;
2 26 Feb 07 jari 969         private JLabel trimNLabel;
2 26 Feb 07 jari 970         private JTextField trimNField;
2 26 Feb 07 jari 971         private JCheckBox trimPercentBox;
2 26 Feb 07 jari 972         private JLabel trimPercentLabel;
2 26 Feb 07 jari 973         private JTextField trimPercentField;
2 26 Feb 07 jari 974         
2 26 Feb 07 jari 975         
2 26 Feb 07 jari 976         /** Constucts a new AlphaPanel.
2 26 Feb 07 jari 977          */
2 26 Feb 07 jari 978         public AlphaPanel(){
2 26 Feb 07 jari 979             super(new GridBagLayout());
2 26 Feb 07 jari 980             setBackground(Color.white);
2 26 Feb 07 jari 981             
2 26 Feb 07 jari 982             //STAT PANEL
2 26 Feb 07 jari 983             JPanel statPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 984             statPanel.setBackground(Color.white);
2 26 Feb 07 jari 985             statPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 986                 EtchedBorder.LOWERED), "Reported Statistic", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 987           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 988             
2 26 Feb 07 jari 989             ButtonGroup bg = new ButtonGroup();
2 26 Feb 07 jari 990             fisherBox = new JCheckBox("Fisher Exact Probability", true);
2 26 Feb 07 jari 991             fisherBox.setBackground(Color.white);
2 26 Feb 07 jari 992             fisherBox.setFocusPainted(false);
2 26 Feb 07 jari 993             bg.add(fisherBox);
2 26 Feb 07 jari 994             
2 26 Feb 07 jari 995             easeBox = new JCheckBox("EASE Score", false);
2 26 Feb 07 jari 996             easeBox.setBackground(Color.white);
2 26 Feb 07 jari 997             easeBox.setFocusPainted(false);
2 26 Feb 07 jari 998             bg.add(easeBox);
2 26 Feb 07 jari 999             
2 26 Feb 07 jari 1000             statPanel.add(fisherBox, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1001                 GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 1002             statPanel.add(easeBox, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1003                 GridBagConstraints.BOTH, new Insets(0,0,10,0),0,0));
2 26 Feb 07 jari 1004             
2 26 Feb 07 jari 1005             
2 26 Feb 07 jari 1006             //P-value Correction Panel
2 26 Feb 07 jari 1007             JPanel correctionPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 1008             correctionPanel.setBackground(Color.white);
2 26 Feb 07 jari 1009             correctionPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 1010                 EtchedBorder.LOWERED), "Multiplicity Corrections", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 1011           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 1012             
2 26 Feb 07 jari 1013             bonferroniBox = new JCheckBox("Bonferroni Correction", false);
2 26 Feb 07 jari 1014             bonferroniBox.setBackground(Color.white);
2 26 Feb 07 jari 1015             bonferroniBox.setFocusPainted(false);
2 26 Feb 07 jari 1016             
2 26 Feb 07 jari 1017             bonferroniStepBox = new JCheckBox("Bonferroni Step Down Correction", false);
2 26 Feb 07 jari 1018             bonferroniStepBox.setBackground(Color.white);
2 26 Feb 07 jari 1019             bonferroniStepBox.setFocusPainted(false);
2 26 Feb 07 jari 1020             
2 26 Feb 07 jari 1021             sidakBox = new JCheckBox("Sidak Method", false);
2 26 Feb 07 jari 1022             sidakBox.setBackground(Color.white);
2 26 Feb 07 jari 1023             sidakBox.setFocusPainted(false);
2 26 Feb 07 jari 1024             
2 26 Feb 07 jari 1025             permBox = new JCheckBox("Resampling Probability Analysis", false);
2 26 Feb 07 jari 1026             permBox.setActionCommand("permutation-analysis-command");
2 26 Feb 07 jari 1027             permBox.setBackground(Color.white);
2 26 Feb 07 jari 1028             permBox.setFocusPainted(false);
2 26 Feb 07 jari 1029             permBox.addActionListener(listener);
2 26 Feb 07 jari 1030             //permBox.setEnabled(false);
2 26 Feb 07 jari 1031             
2 26 Feb 07 jari 1032             permField = new JTextField("1000", 10);
2 26 Feb 07 jari 1033             permField.setBackground(Color.white);
2 26 Feb 07 jari 1034             permField.setEnabled(false);
2 26 Feb 07 jari 1035             
2 26 Feb 07 jari 1036             permLabel = new JLabel("Number of Permutations");
2 26 Feb 07 jari 1037             permLabel.setBackground(Color.white);
2 26 Feb 07 jari 1038             permLabel.setEnabled(false);
2 26 Feb 07 jari 1039             
2 26 Feb 07 jari 1040             correctionPanel.add(bonferroniBox, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.WEST,
2 26 Feb 07 jari 1041                 GridBagConstraints.BOTH, new Insets(10,0,0,0),0,0));
2 26 Feb 07 jari 1042             correctionPanel.add(sidakBox, new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1043                 GridBagConstraints.BOTH, new Insets(10,0,0,0),0,0));
2 26 Feb 07 jari 1044             correctionPanel.add(bonferroniStepBox, new GridBagConstraints(0,1,2,1,0,0,GridBagConstraints.WEST,
2 26 Feb 07 jari 1045                 GridBagConstraints.BOTH, new Insets(0,0,10,0),0,0));
2 26 Feb 07 jari 1046             correctionPanel.add(permBox, new GridBagConstraints(0,2,2,1,0,0,GridBagConstraints.WEST,
2 26 Feb 07 jari 1047                 GridBagConstraints.BOTH, new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 1048             correctionPanel.add(permLabel, new GridBagConstraints(0,3,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1049                 GridBagConstraints.BOTH, new Insets(0,0,15,0),0,0));
2 26 Feb 07 jari 1050             correctionPanel.add(permField, new GridBagConstraints(1,3,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1051                 GridBagConstraints.VERTICAL, new Insets(0,0,15,0),0,0));
2 26 Feb 07 jari 1052             
2 26 Feb 07 jari 1053             //Trim Panel
2 26 Feb 07 jari 1054             JPanel trimPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 1055             trimPanel.setBackground(Color.white);
2 26 Feb 07 jari 1056             trimPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(
2 26 Feb 07 jari 1057                 EtchedBorder.LOWERED), "Trim Parameters", TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 1058           TitledBorder.DEFAULT_POSITION, font, Color.black));
2 26 Feb 07 jari 1059             
2 26 Feb 07 jari 1060             trimBox = new JCheckBox("Trim Resulting Groups", false);
2 26 Feb 07 jari 1061             trimBox.setActionCommand("trim-result-command");
2 26 Feb 07 jari 1062             trimBox.addActionListener(listener);
2 26 Feb 07 jari 1063             trimBox.setBackground(Color.white);
2 26 Feb 07 jari 1064             trimBox.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
2 26 Feb 07 jari 1065             trimBox.setFocusPainted(false);
2 26 Feb 07 jari 1066             
2 26 Feb 07 jari 1067             bg = new ButtonGroup();
2 26 Feb 07 jari 1068             
2 26 Feb 07 jari 1069             trimNBox = new JCheckBox("Select Minimum Hit Number", true);
2 26 Feb 07 jari 1070             trimNBox.setActionCommand("trim-result-command");
2 26 Feb 07 jari 1071             trimNBox.addActionListener(listener);
2 26 Feb 07 jari 1072             trimNBox.setEnabled(false);
2 26 Feb 07 jari 1073             trimNBox.setBackground(Color.white);
2 26 Feb 07 jari 1074             trimNBox.setFocusPainted(false);
2 26 Feb 07 jari 1075             bg.add(trimNBox);
2 26 Feb 07 jari 1076             
2 26 Feb 07 jari 1077             trimNLabel = new JLabel("Min. Hits");
2 26 Feb 07 jari 1078             trimNLabel.setBackground(Color.white);
2 26 Feb 07 jari 1079             trimNLabel.setEnabled(false);
2 26 Feb 07 jari 1080             
2 26 Feb 07 jari 1081             trimNField = new JTextField("5", 10);
2 26 Feb 07 jari 1082             trimNField.setEnabled(false);
2 26 Feb 07 jari 1083             
2 26 Feb 07 jari 1084             trimPercentBox = new JCheckBox("Select Minimum Hit Percentage", false);
2 26 Feb 07 jari 1085             trimPercentBox.setActionCommand("trim-result-command");
2 26 Feb 07 jari 1086             trimPercentBox.addActionListener(listener);
2 26 Feb 07 jari 1087             trimPercentBox.setEnabled(false);
2 26 Feb 07 jari 1088             trimPercentBox.setBackground(Color.white);
2 26 Feb 07 jari 1089             trimPercentBox.setFocusPainted(false);
2 26 Feb 07 jari 1090             bg.add(trimPercentBox);
2 26 Feb 07 jari 1091             
2 26 Feb 07 jari 1092             trimPercentLabel = new JLabel("Percent Hits");
2 26 Feb 07 jari 1093             trimPercentLabel.setBackground(Color.white);
2 26 Feb 07 jari 1094             trimPercentLabel.setEnabled(false);
2 26 Feb 07 jari 1095             
2 26 Feb 07 jari 1096             trimPercentField = new JTextField("5", 10);
2 26 Feb 07 jari 1097             trimPercentField.setEnabled(false);
2 26 Feb 07 jari 1098             
2 26 Feb 07 jari 1099             trimPanel.add(trimBox, new GridBagConstraints(0,0,3,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1100                 GridBagConstraints.BOTH, new Insets(0,0,20,0),0,0));
2 26 Feb 07 jari 1101             
2 26 Feb 07 jari 1102             trimPanel.add(trimNBox, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1103                 GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 1104             trimPanel.add(trimNLabel, new GridBagConstraints(1,1,1,1,0,0,GridBagConstraints.EAST,
2 26 Feb 07 jari 1105                 GridBagConstraints.BOTH, new Insets(0,20,0,15),0,0));
2 26 Feb 07 jari 1106             trimPanel.add(trimNField, new GridBagConstraints(2,1,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1107                 GridBagConstraints.NONE, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 1108             
2 26 Feb 07 jari 1109             trimPanel.add(trimPercentBox, new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1110                 GridBagConstraints.BOTH, new Insets(10,0,0,0),0,0));
2 26 Feb 07 jari 1111             trimPanel.add(trimPercentLabel, new GridBagConstraints(1,2,1,1,0,0,GridBagConstraints.EAST,
2 26 Feb 07 jari 1112                 GridBagConstraints.BOTH, new Insets(10,20,0,15),0,0));
2 26 Feb 07 jari 1113             trimPanel.add(trimPercentField, new GridBagConstraints(2,2,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1114                 GridBagConstraints.NONE, new Insets(10,0,0,0),0,0));
2 26 Feb 07 jari 1115             
2 26 Feb 07 jari 1116             //Add panels to main panel
2 26 Feb 07 jari 1117             add(statPanel, new GridBagConstraints(0,0,1,1,1.0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1118                 GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 1119             add(correctionPanel, new GridBagConstraints(0,1,1,1,1.0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1120                 GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 1121             add(trimPanel, new GridBagConstraints(0,2,1,1,1.0,1.0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1122                 GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 1123         }
2 26 Feb 07 jari 1124         
2 26 Feb 07 jari 1125         
2 26 Feb 07 jari 1126         private void setEnableControls(boolean enable) {
2 26 Feb 07 jari 1127           setOpaque(enable);
2 26 Feb 07 jari 1128           tabbedPane.setEnabledAt(3,enable);
2 26 Feb 07 jari 1129         }
2 26 Feb 07 jari 1130         /** Indicates if permutations are selected.
2 26 Feb 07 jari 1131          */
2 26 Feb 07 jari 1132         public boolean performPermutations(){
2 26 Feb 07 jari 1133             return permBox.isSelected();
2 26 Feb 07 jari 1134         }
2 26 Feb 07 jari 1135         
2 26 Feb 07 jari 1136         public void setEnablePermutations(){
2 26 Feb 07 jari 1137             permLabel.setEnabled(permBox.isSelected());
2 26 Feb 07 jari 1138             permField.setEnabled(permBox.isSelected());
2 26 Feb 07 jari 1139         }
2 26 Feb 07 jari 1140         
2 26 Feb 07 jari 1141         public void validateTrimOptions(){
2 26 Feb 07 jari 1142             if(this.trimBox.isSelected()){
2 26 Feb 07 jari 1143                 trimNBox.setEnabled(true);
2 26 Feb 07 jari 1144                 trimPercentBox.setEnabled(true);
2 26 Feb 07 jari 1145                 
2 26 Feb 07 jari 1146                 trimNLabel.setEnabled(trimNBox.isSelected());
2 26 Feb 07 jari 1147                 trimNField.setEnabled(trimNBox.isSelected());
2 26 Feb 07 jari 1148                 trimPercentLabel.setEnabled(!trimNBox.isSelected());
2 26 Feb 07 jari 1149                 trimPercentField.setEnabled(!trimNBox.isSelected());
2 26 Feb 07 jari 1150             } else {
2 26 Feb 07 jari 1151                 trimNBox.setEnabled(false);
2 26 Feb 07 jari 1152                 trimPercentBox.setEnabled(false);
2 26 Feb 07 jari 1153                 
2 26 Feb 07 jari 1154                 trimNLabel.setEnabled(false);
2 26 Feb 07 jari 1155                 trimNField.setEnabled(false);
2 26 Feb 07 jari 1156                 trimPercentLabel.setEnabled(false);
2 26 Feb 07 jari 1157                 trimPercentField.setEnabled(false);
2 26 Feb 07 jari 1158             }
2 26 Feb 07 jari 1159         }
2 26 Feb 07 jari 1160     }
2 26 Feb 07 jari 1161     
2 26 Feb 07 jari 1162     private class ConfigPanel extends ParameterPanel {
2 26 Feb 07 jari 1163
2 26 Feb 07 jari 1164         JTextField defaultFileBaseLocation;
2 26 Feb 07 jari 1165         
2 26 Feb 07 jari 1166         public ConfigPanel() {
2 26 Feb 07 jari 1167             super("File Updates and Configuration");
2 26 Feb 07 jari 1168             setLayout(new GridBagLayout());
2 26 Feb 07 jari 1169             
2 26 Feb 07 jari 1170             JButton updateFilesButton = new JButton("Update EASE File System");
2 26 Feb 07 jari 1171             updateFilesButton.setActionCommand("update-files-command");
2 26 Feb 07 jari 1172             updateFilesButton.setFocusPainted(false);
2 26 Feb 07 jari 1173             updateFilesButton.addActionListener(listener);
2 26 Feb 07 jari 1174             updateFilesButton.setToolTipText("<html>Downloads EASE annotation files<br>for a selected species and array type.</html>");
2 26 Feb 07 jari 1175             JButton browseFileBaseButton = new JButton("Select EASE File System");
2 26 Feb 07 jari 1176             browseFileBaseButton.setActionCommand("select-file-base-command");
2 26 Feb 07 jari 1177             browseFileBaseButton.setFocusPainted(false);
2 26 Feb 07 jari 1178             browseFileBaseButton.addActionListener(listener);
2 26 Feb 07 jari 1179             browseFileBaseButton.setToolTipText("<html>Helps select the EASE annotation file system<br>that corresponds the current species and array type.</html>");
2 26 Feb 07 jari 1180             defaultFileBaseLocation = new JTextField(TMEV.getFile("data/ease").getAbsolutePath(), 25);
2 26 Feb 07 jari 1181             defaultFileBaseLocation.setEditable(true);
2 26 Feb 07 jari 1182             
2 26 Feb 07 jari 1183             add(browseFileBaseButton, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,0,5,0), 0, 0));
2 26 Feb 07 jari 1184             add(defaultFileBaseLocation,  new GridBagConstraints(1,0,1,1,1,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,5,5,0), 0, 0));            
2 26 Feb 07 jari 1185             add(updateFilesButton, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,5,0), 0, 0));                               
2 26 Feb 07 jari 1186         }
2 26 Feb 07 jari 1187         
2 26 Feb 07 jari 1188         public void selectFileSystem() {
2 26 Feb 07 jari 1189             String startDir = defaultFileBaseLocation.getText();
2 26 Feb 07 jari 1190             File file = new File(startDir);
2 26 Feb 07 jari 1191             if(!file.exists()) {                
2 26 Feb 07 jari 1192                 file = TMEV.getFile("data/ease");
2 26 Feb 07 jari 1193                 if(file == null) {
2 26 Feb 07 jari 1194                     file = new File(System.getProperty("user.dir"));
2 26 Feb 07 jari 1195                 }
2 26 Feb 07 jari 1196             }
2 26 Feb 07 jari 1197             JFileChooser chooser = new JFileChooser(file);
2 26 Feb 07 jari 1198             chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
2 26 Feb 07 jari 1199             if(chooser.showOpenDialog(TEASEInitDialog.this) == JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 1200                 defaultFileBaseLocation.setText(chooser.getSelectedFile().getAbsolutePath());
2 26 Feb 07 jari 1201             }
2 26 Feb 07 jari 1202         }
2 26 Feb 07 jari 1203         
2 26 Feb 07 jari 1204         public String getBaseFileLocation() {
2 26 Feb 07 jari 1205             return defaultFileBaseLocation.getText();
2 26 Feb 07 jari 1206         }
2 26 Feb 07 jari 1207     }
2 26 Feb 07 jari 1208     
2 26 Feb 07 jari 1209     private class ColorBoundaryPanel extends ParameterPanel {
2 26 Feb 07 jari 1210       private JTextField upperField;
2 26 Feb 07 jari 1211       private JTextField lowerField;
2 26 Feb 07 jari 1212       private JLabel upperLabel;
2 26 Feb 07 jari 1213       private JLabel lowerLabel;
2 26 Feb 07 jari 1214       
2 26 Feb 07 jari 1215       public ColorBoundaryPanel() {
2 26 Feb 07 jari 1216         super("Assign Color Gradient");
2 26 Feb 07 jari 1217         setLayout(new GridBagLayout());
2 26 Feb 07 jari 1218         
2 26 Feb 07 jari 1219         this.upperLabel = new JLabel("Upper bound score (Blue -> not significant)");
2 26 Feb 07 jari 1220         this.lowerLabel = new JLabel("Lower bound score (Red -> significant)");
2 26 Feb 07 jari 1221         this.upperField = new JTextField("1.0E-1", 8);
2 26 Feb 07 jari 1222         this.lowerField = new JTextField("1.0E-5", 8);
2 26 Feb 07 jari 1223         
2 26 Feb 07 jari 1224             add(this.upperLabel, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1225                 GridBagConstraints.BOTH, new Insets(5,0,5,0),0,0));
2 26 Feb 07 jari 1226             add(this.upperField, new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1227                 GridBagConstraints.BOTH, new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 1228             add(this.lowerLabel, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1229                 GridBagConstraints.BOTH, new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 1230             add(this.lowerField, new GridBagConstraints(1,1,1,1,0,0,GridBagConstraints.CENTER,
2 26 Feb 07 jari 1231                 GridBagConstraints.BOTH, new Insets(0,0,5,0),0,0));
2 26 Feb 07 jari 1232       }
2 26 Feb 07 jari 1233       
2 26 Feb 07 jari 1234       public void setEnableControls(boolean enable) {
2 26 Feb 07 jari 1235         this.upperLabel.setEnabled(enable);
2 26 Feb 07 jari 1236         this.lowerLabel.setEnabled(enable);
2 26 Feb 07 jari 1237         this.upperField.setEnabled(enable);
2 26 Feb 07 jari 1238         this.lowerField.setEnabled(enable);
2 26 Feb 07 jari 1239         setOpaque(enable);
2 26 Feb 07 jari 1240       }
2 26 Feb 07 jari 1241     }
2 26 Feb 07 jari 1242     
2 26 Feb 07 jari 1243     /**
2 26 Feb 07 jari 1244      * The class to listen to the dialog and check boxes items events.
2 26 Feb 07 jari 1245      */
2 26 Feb 07 jari 1246     private class EventListener extends DialogListener implements ItemListener {
2 26 Feb 07 jari 1247         
2 26 Feb 07 jari 1248         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 1249             String command = e.getActionCommand();
2 26 Feb 07 jari 1250             if (command.equals("use-converter-command")) {
2 26 Feb 07 jari 1251                 if(easeParamPanel.useAnnBox.isSelected()){
2 26 Feb 07 jari 1252                     easeParamPanel.browserButton.setEnabled(true);
2 26 Feb 07 jari 1253                     easeParamPanel.converterFileField.setEnabled(true);
2 26 Feb 07 jari 1254                     easeParamPanel.converterFileField.setBackground(Color.white);
2 26 Feb 07 jari 1255                     easeParamPanel.fileLabel.setEnabled(true);
2 26 Feb 07 jari 1256                 } else {
2 26 Feb 07 jari 1257                     easeParamPanel.browserButton.setEnabled(false);
2 26 Feb 07 jari 1258                     easeParamPanel.converterFileField.setEnabled(false);
2 26 Feb 07 jari 1259                     easeParamPanel.converterFileField.setBackground(Color.lightGray);
2 26 Feb 07 jari 1260                     easeParamPanel.fileLabel.setEnabled(false);
2 26 Feb 07 jari 1261                 }
2 26 Feb 07 jari 1262             } else if (command.equals("converter-file-browser-command")){
2 26 Feb 07 jari 1263                 File convertFile = new File(getBaseFileLocation()+"/Data/Convert");
2 26 Feb 07 jari 1264                 JFileChooser chooser = new JFileChooser(convertFile);
2 26 Feb 07 jari 1265                 chooser.setDialogTitle("Annotation Converter Selection");
2 26 Feb 07 jari 1266                 chooser.setMultiSelectionEnabled(false);
2 26 Feb 07 jari 1267                 if(chooser.showOpenDialog(parent) == JOptionPane.OK_OPTION){
2 26 Feb 07 jari 1268                     easeParamPanel.updateConverterFileField(chooser.getSelectedFile().getPath());
2 26 Feb 07 jari 1269                 }
2 26 Feb 07 jari 1270                 return;
2 26 Feb 07 jari 1271             } else if (command.equals("ann-file-browser-command")){
2 26 Feb 07 jari 1272                 
2 26 Feb 07 jari 1273                 File classFile = new File(getBaseFileLocation()+"/Data/Class/");
2 26 Feb 07 jari 1274                 JFileChooser chooser = new JFileChooser(classFile);
2 26 Feb 07 jari 1275                 chooser.setDialogTitle("Annotation --> GO Term, File(s) Selection");
2 26 Feb 07 jari 1276                 chooser.setMultiSelectionEnabled(true);
2 26 Feb 07 jari 1277                 if(chooser.showOpenDialog(parent) == JOptionPane.OK_OPTION){
2 26 Feb 07 jari 1278                     easeParamPanel.updateAnnFileList(chooser.getSelectedFiles());
2 26 Feb 07 jari 1279                     easeParamPanel.removeButton.setEnabled(true);
2 26 Feb 07 jari 1280                     okButton.setEnabled(true);
2 26 Feb 07 jari 1281                 }
2 26 Feb 07 jari 1282             } else if (command.equals("remove-ann-file-command")){
2 26 Feb 07 jari 1283                 easeParamPanel.removeSelectedFiles();
2 26 Feb 07 jari 1284             } else if (command.equals("permutation-analysis-command")){
2 26 Feb 07 jari 1285                 alphaPanel.setEnablePermutations();
2 26 Feb 07 jari 1286             } else if (command.equals("trim-result-command")){
2 26 Feb 07 jari 1287                 alphaPanel.validateTrimOptions();
2 26 Feb 07 jari 1288             } else if (command.equals("select-file-base-command")) {
2 26 Feb 07 jari 1289                 configPanel.selectFileSystem();
2 26 Feb 07 jari 1290             } else if (command.equals("update-files-command")) {
2 26 Feb 07 jari 1291                 EASEUpdateManager manager = new EASEUpdateManager((JFrame)parent);
2 26 Feb 07 jari 1292                 manager.updateFiles();
2 26 Feb 07 jari 1293             } else if (command.equals("ok-command")) {
2 26 Feb 07 jari 1294                 result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 1295                 if(isClusterModeSelected() && popPanel.fileButton.isSelected()) {
2 26 Feb 07 jari 1296                     String fileName = popPanel.popField.getText();
2 26 Feb 07 jari 1297                     if(fileName == null || fileName.equals("") || fileName.equals(" ")) {
2 26 Feb 07 jari 1298                         JOptionPane.showMessageDialog(parent, "You have selected to use a population file but have not "+
2 26 Feb 07 jari 1299                         "entered a file name.  \nPlease enter a file or use the file browser to select a file.", "EASE Initialization: Missing Parameter", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 1300                         tabbedPane.setSelectedIndex(0);
2 26 Feb 07 jari 1301                         popPanel.popField.grabFocus();
2 26 Feb 07 jari 1302                         popPanel.popField.selectAll();
2 26 Feb 07 jari 1303                         popPanel.popField.setCaretPosition(0);
2 26 Feb 07 jari 1304                         return;
2 26 Feb 07 jari 1305                     }
2 26 Feb 07 jari 1306                 }
2 26 Feb 07 jari 1307                 
2 26 Feb 07 jari 1308                 if(getAnnToGOFileList().length == 0  && !modePanel.hclOnlyButton.isSelected()) {
2 26 Feb 07 jari 1309                     JOptionPane.showMessageDialog(parent, "You have not selected any gene annotation/gene ontology linking files. \n"+
2 26 Feb 07 jari 1310                     "Please enter files or use the browser to select files.", "EASE Initialization: Missing Parameter", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 1311                     tabbedPane.setSelectedIndex(1);
2 26 Feb 07 jari 1312                     easeParamPanel.browserButton.grabFocus();
2 26 Feb 07 jari 1313                     return;
2 26 Feb 07 jari 1314                 }
2 26 Feb 07 jari 1315                 
2 26 Feb 07 jari 1316                 if(easeParamPanel.useAnnBox.isSelected()) {
2 26 Feb 07 jari 1317                     String fileName = easeParamPanel.getConverterFileName();
2 26 Feb 07 jari 1318                     if( fileName == null || fileName.equals("") || fileName.equals(" ") ) {
2 26 Feb 07 jari 1319                         JOptionPane.showMessageDialog(parent, "You have selected to use an annotation conversion file but have not made a file selection.\n" +
2 26 Feb 07 jari 1320                         "Please enter a file name or browse to select a file.", "EASE Initialization: Missing Parameter", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 1321                         tabbedPane.setSelectedIndex(1);
2 26 Feb 07 jari 1322                         easeParamPanel.browserButton.grabFocus();
2 26 Feb 07 jari 1323                         return;
2 26 Feb 07 jari 1324                     }
2 26 Feb 07 jari 1325                 }                
2 26 Feb 07 jari 1326                 dispose();
2 26 Feb 07 jari 1327             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 1328                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 1329                 dispose();
2 26 Feb 07 jari 1330             } else if (command.equals("reset-command")){
2 26 Feb 07 jari 1331                 resetControls();
2 26 Feb 07 jari 1332                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 1333                 return;
2 26 Feb 07 jari 1334             } else if (command.equals("info-command")){
2 26 Feb 07 jari 1335                 HelpWindow hw = new HelpWindow(TEASEInitDialog.this, "EASE Initialization Dialog");
2 26 Feb 07 jari 1336                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 1337                 if(hw.getWindowContent()){
2 26 Feb 07 jari 1338                     hw.setSize(600,600);
2 26 Feb 07 jari 1339                     hw.setLocation();
2 26 Feb 07 jari 1340                     hw.show();
2 26 Feb 07 jari 1341                 }
2 26 Feb 07 jari 1342                 else {
2 26 Feb 07 jari 1343                     hw.setVisible(false);
2 26 Feb 07 jari 1344                     hw.dispose();
2 26 Feb 07 jari 1345                 }
2 26 Feb 07 jari 1346             }
2 26 Feb 07 jari 1347         }
2 26 Feb 07 jari 1348         
2 26 Feb 07 jari 1349         public void itemStateChanged(ItemEvent e) {
2 26 Feb 07 jari 1350             //okButton.setEnabled(genes_box.isSelected() || cluster_box.isSelected());
2 26 Feb 07 jari 1351         }
2 26 Feb 07 jari 1352         
2 26 Feb 07 jari 1353         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 1354             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 1355             dispose();
2 26 Feb 07 jari 1356         }
2 26 Feb 07 jari 1357     }
2 26 Feb 07 jari 1358     
2 26 Feb 07 jari 1359     public static void main(String [] args) {
2 26 Feb 07 jari 1360         String [] labels = new String [3];
2 26 Feb 07 jari 1361         labels[0] = "TC#";
2 26 Feb 07 jari 1362         labels[1] = "GB#";
2 26 Feb 07 jari 1363         labels[2] = "Role";
2 26 Feb 07 jari 1364
2 26 Feb 07 jari 1365         EASEInitDialog eid = new EASEInitDialog(new JFrame(), labels);
2 26 Feb 07 jari 1366         eid.showModal();
2 26 Feb 07 jari 1367     }
2 26 Feb 07 jari 1368 }