mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/hcl/HCLInitDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: HCLInitDialog.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.4 $
2 26 Feb 07 jari 8  * $Date: 2006/02/23 20:59:51 $
2 26 Feb 07 jari 9  * $Author: caliente $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.gui.impl.hcl;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.Color;
2 26 Feb 07 jari 15 import java.awt.Dimension;
2 26 Feb 07 jari 16 import java.awt.Frame;
2 26 Feb 07 jari 17 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 18 import java.awt.GridBagLayout;
2 26 Feb 07 jari 19 import java.awt.Insets;
2 26 Feb 07 jari 20 import java.awt.Toolkit;
2 26 Feb 07 jari 21 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 22 import java.awt.event.ItemEvent;
2 26 Feb 07 jari 23 import java.awt.event.ItemListener;
2 26 Feb 07 jari 24 import java.awt.event.KeyEvent;
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.ButtonGroup;
2 26 Feb 07 jari 28 import javax.swing.JCheckBox;
2 26 Feb 07 jari 29 import javax.swing.JOptionPane;
2 26 Feb 07 jari 30 import javax.swing.JPanel;
2 26 Feb 07 jari 31 import javax.swing.JRadioButton;
2 26 Feb 07 jari 32 import javax.swing.UIManager;
2 26 Feb 07 jari 33
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.ParameterPanel;
2 26 Feb 07 jari 38 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 39
2 26 Feb 07 jari 40 public class HCLInitDialog extends AlgorithmDialog {//JDialog {
2 26 Feb 07 jari 41     
2 26 Feb 07 jari 42     private int result;
2 26 Feb 07 jari 43     
2 26 Feb 07 jari 44     private JCheckBox genes_box;
2 26 Feb 07 jari 45     private JCheckBox cluster_box;
2 26 Feb 07 jari 46     private JRadioButton ALC;
2 26 Feb 07 jari 47     private JRadioButton CLC;
2 26 Feb 07 jari 48     private JRadioButton SLC;
2 26 Feb 07 jari 49     private DistanceMetricPanel metricPanel;
2 26 Feb 07 jari 50     private String globalMetricName;
2 26 Feb 07 jari 51     private boolean globalAbsoluteDistance;
2 26 Feb 07 jari 52     
2 26 Feb 07 jari 53     public HCLInitDialog(Frame parent) {
2 26 Feb 07 jari 54         this(parent, " ", false, false);
2 26 Feb 07 jari 55     }
2 26 Feb 07 jari 56     
2 26 Feb 07 jari 57     /**
2 26 Feb 07 jari 58      * Constructs the dialog.
2 26 Feb 07 jari 59      */
2 26 Feb 07 jari 60     public HCLInitDialog(Frame parent, String globalMetricName, boolean globalAbsoluteDistance, boolean showDistancePanel) {
2 26 Feb 07 jari 61         super(parent, "HCL: Hierarchical Clustering", true);
2 26 Feb 07 jari 62         setResizable(false);
2 26 Feb 07 jari 63         
2 26 Feb 07 jari 64         this.globalMetricName = globalMetricName;
2 26 Feb 07 jari 65         this.globalAbsoluteDistance = globalAbsoluteDistance;
2 26 Feb 07 jari 66         
2 26 Feb 07 jari 67         Listener listener = new Listener();
2 26 Feb 07 jari 68         addWindowListener(listener);
2 26 Feb 07 jari 69         
2 26 Feb 07 jari 70         ParameterPanel sampleSelectionPanel = new ParameterPanel("Tree Selection");
2 26 Feb 07 jari 71         sampleSelectionPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 72         
2 26 Feb 07 jari 73         genes_box = new JCheckBox("Gene Tree");
2 26 Feb 07 jari 74         genes_box.setSelected(true);
2 26 Feb 07 jari 75         genes_box.setFocusPainted(false);
2 26 Feb 07 jari 76         genes_box.setBackground(Color.white);
2 26 Feb 07 jari 77         genes_box.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 78         genes_box.addItemListener(listener);
2 26 Feb 07 jari 79         
2 26 Feb 07 jari 80         cluster_box = new JCheckBox("Sample Tree");
2 26 Feb 07 jari 81         cluster_box.setSelected(true);
2 26 Feb 07 jari 82         cluster_box.setFocusPainted(false);
2 26 Feb 07 jari 83         cluster_box.setBackground(Color.white);
2 26 Feb 07 jari 84         cluster_box.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 85         cluster_box.addItemListener(listener);
2 26 Feb 07 jari 86         
2 26 Feb 07 jari 87         sampleSelectionPanel.add(genes_box, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,0,5,20), 0,0));
2 26 Feb 07 jari 88         sampleSelectionPanel.add(cluster_box, new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,20,5,0), 0,0));        
2 26 Feb 07 jari 89         
2 26 Feb 07 jari 90         metricPanel = new DistanceMetricPanel(globalMetricName, globalAbsoluteDistance, "Euclidean Distance", "HCL", true, true);
2 26 Feb 07 jari 91         
2 26 Feb 07 jari 92         ParameterPanel linkageMethodPanel = new ParameterPanel("Linkage Method Selection");
2 26 Feb 07 jari 93         linkageMethodPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 94         
2 26 Feb 07 jari 95         ALC = new JRadioButton("Average linkage clustering");
2 26 Feb 07 jari 96         ALC.setBackground(Color.white);
2 26 Feb 07 jari 97         ALC.setFocusPainted(false);
2 26 Feb 07 jari 98         ALC.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 99         ALC.setMnemonic(KeyEvent.VK_A);
2 26 Feb 07 jari 100         ALC.setSelected(true);
2 26 Feb 07 jari 101         
2 26 Feb 07 jari 102         CLC = new JRadioButton("Complete linkage clustering");
2 26 Feb 07 jari 103         CLC.setBackground(Color.white);
2 26 Feb 07 jari 104         CLC.setFocusPainted(false);
2 26 Feb 07 jari 105         CLC.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 106         CLC.setMnemonic(KeyEvent.VK_C);
2 26 Feb 07 jari 107         
2 26 Feb 07 jari 108         SLC = new JRadioButton("Single linkage clustering");
2 26 Feb 07 jari 109         SLC.setBackground(Color.white);
2 26 Feb 07 jari 110         SLC.setFocusPainted(false);
2 26 Feb 07 jari 111         SLC.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 112         SLC.setMnemonic(KeyEvent.VK_S);
2 26 Feb 07 jari 113         
2 26 Feb 07 jari 114         linkageMethodPanel.add(ALC, 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 115         linkageMethodPanel.add(CLC, 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 116         linkageMethodPanel.add(SLC, new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,5,0), 0,0));
2 26 Feb 07 jari 117         
2 26 Feb 07 jari 118         // Group the radio buttons.
2 26 Feb 07 jari 119         ButtonGroup group = new ButtonGroup();
2 26 Feb 07 jari 120         group.add(ALC);
2 26 Feb 07 jari 121         group.add(CLC);
2 26 Feb 07 jari 122         group.add(SLC);
2 26 Feb 07 jari 123         
2 26 Feb 07 jari 124         
2 26 Feb 07 jari 125 //        JPanel parameters = new JPanel(new GridLayout(0, 2, 10, 10));
2 26 Feb 07 jari 126   //          ParameterPanel parameters = new ParameterPanel();
2 26 Feb 07 jari 127 //        parameters.setLayout(new GridLayout(0, 2, 10, 10));
2 26 Feb 07 jari 128   //      parameters.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
2 26 Feb 07 jari 129     //    parameters.setBackground(Color.white);
2 26 Feb 07 jari 130  //       parameters.setForeground(Color.black);
2 26 Feb 07 jari 131    //     parameters.add(ALC);
2 26 Feb 07 jari 132      //   parameters.add(genes_box);
2 26 Feb 07 jari 133    //     parameters.add(CLC);
2 26 Feb 07 jari 134     //    parameters.add(cluster_box);
2 26 Feb 07 jari 135       //  parameters.add(SLC);
2 26 Feb 07 jari 136         
2 26 Feb 07 jari 137         
2 26 Feb 07 jari 138     //    ParameterPanel parameterPanel = new ParameterPanel();
2 26 Feb 07 jari 139       //  parameterPanel.add(parameters);
2 26 Feb 07 jari 140         
2 26 Feb 07 jari 141         JPanel parameterPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 142         parameterPanel.setBackground(Color.white);
2 26 Feb 07 jari 143         
2 26 Feb 07 jari 144         parameterPanel.add(sampleSelectionPanel, new GridBagConstraints(0,0,1,1,1,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 145         if(showDistancePanel) {
2 26 Feb 07 jari 146             parameterPanel.add(metricPanel, new GridBagConstraints(0,1,1,1,1,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 147             parameterPanel.add(linkageMethodPanel, new GridBagConstraints(0,2,1,1,1,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 148         } else {
2 26 Feb 07 jari 149             parameterPanel.add(linkageMethodPanel, new GridBagConstraints(0,1,1,1,1,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));
2 26 Feb 07 jari 150         }
2 26 Feb 07 jari 151         addContent(parameterPanel);
2 26 Feb 07 jari 152         setActionListeners(listener);
2 26 Feb 07 jari 153         
2 26 Feb 07 jari 154         //this.getContentPane().add(panel1, BorderLayout.CENTER);
2 26 Feb 07 jari 155         this.pack();
2 26 Feb 07 jari 156     }
2 26 Feb 07 jari 157     
2 26 Feb 07 jari 158     /**
2 26 Feb 07 jari 159      * Shows the dialog.
2 26 Feb 07 jari 160      */
2 26 Feb 07 jari 161     public int showModal() {
2 26 Feb 07 jari 162         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 163         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 164         show();
2 26 Feb 07 jari 165         return result;
2 26 Feb 07 jari 166     }
2 26 Feb 07 jari 167     
2 26 Feb 07 jari 168     /**
2 26 Feb 07 jari 169      * Resets controls to default initial settings
2 26 Feb 07 jari 170      */
2 26 Feb 07 jari 171     private void resetControls(){
2 26 Feb 07 jari 172         ALC.setSelected(true);
2 26 Feb 07 jari 173         genes_box.setSelected(true);
2 26 Feb 07 jari 174         cluster_box.setSelected(true);
2 26 Feb 07 jari 175         metricPanel.reset();
2 26 Feb 07 jari 176     }
2 26 Feb 07 jari 177     
2 26 Feb 07 jari 178     /**
2 26 Feb 07 jari 179      * Returns true, if genes check box is selected.
2 26 Feb 07 jari 180      */
2 26 Feb 07 jari 181     public boolean isClusterGenes() {
2 26 Feb 07 jari 182         return genes_box.isSelected();
2 26 Feb 07 jari 183     }
2 26 Feb 07 jari 184     
2 26 Feb 07 jari 185     /**
2 26 Feb 07 jari 186      * Returns true, if cluster check box is selected.
2 26 Feb 07 jari 187      */
2 26 Feb 07 jari 188     public boolean isClusterExperiments() {
2 26 Feb 07 jari 189         return cluster_box.isSelected();
2 26 Feb 07 jari 190     }
2 26 Feb 07 jari 191     
2 26 Feb 07 jari 192     /**
2 26 Feb 07 jari 193      * Returns a method code.
2 26 Feb 07 jari 194      * @return 0 for ALC method, 1 for CLC or -1 otherwise.
2 26 Feb 07 jari 195      */
2 26 Feb 07 jari 196     public int getMethod() {
2 26 Feb 07 jari 197         if (ALC.isSelected()) {
2 26 Feb 07 jari 198             return 0;
2 26 Feb 07 jari 199         }
2 26 Feb 07 jari 200         if (CLC.isSelected()) {
2 26 Feb 07 jari 201             return 1;
2 26 Feb 07 jari 202         }
2 26 Feb 07 jari 203         return -1;
2 26 Feb 07 jari 204     }
2 26 Feb 07 jari 205     
2 26 Feb 07 jari 206     /**
2 26 Feb 07 jari 207      * Returns the currently selected metric
2 26 Feb 07 jari 208      */
2 26 Feb 07 jari 209     public int getDistanceMetric() {
2 26 Feb 07 jari 210         return metricPanel.getMetricIndex();
2 26 Feb 07 jari 211     }
2 26 Feb 07 jari 212     
2 26 Feb 07 jari 213     /**
2 26 Feb 07 jari 214      *  Returns true if the absolute checkbox is selected, else false
2 26 Feb 07 jari 215      */
2 26 Feb 07 jari 216     public boolean getAbsoluteSelection() {
2 26 Feb 07 jari 217         return metricPanel.getAbsoluteSelection();
2 26 Feb 07 jari 218     }
2 26 Feb 07 jari 219     
2 26 Feb 07 jari 220     /**
2 26 Feb 07 jari 221      * The class to listen to the dialog and check boxes items events.
2 26 Feb 07 jari 222      */
2 26 Feb 07 jari 223     private class Listener extends DialogListener implements ItemListener {
2 26 Feb 07 jari 224         
2 26 Feb 07 jari 225         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 226             String command = e.getActionCommand();
2 26 Feb 07 jari 227             if (command.equals("ok-command")) {
2 26 Feb 07 jari 228                 result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 229                 dispose();
2 26 Feb 07 jari 230             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 231                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 232                 dispose();
2 26 Feb 07 jari 233             }
2 26 Feb 07 jari 234             else if (command.equals("reset-command")){
2 26 Feb 07 jari 235                 resetControls();
2 26 Feb 07 jari 236                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 237                 return;
2 26 Feb 07 jari 238             }
2 26 Feb 07 jari 239             else if (command.equals("info-command")){
2 26 Feb 07 jari 240                 HelpWindow hw = new HelpWindow(HCLInitDialog.this, "HCL Initialization Dialog");
2 26 Feb 07 jari 241                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 242                 if(hw.getWindowContent()){
2 26 Feb 07 jari 243                     hw.setSize(450,600);
2 26 Feb 07 jari 244                     hw.setLocation();
2 26 Feb 07 jari 245                     hw.show();
2 26 Feb 07 jari 246                     return;
2 26 Feb 07 jari 247                 }
2 26 Feb 07 jari 248                 else {
2 26 Feb 07 jari 249                     hw.setVisible(false);
2 26 Feb 07 jari 250                     hw.dispose();
2 26 Feb 07 jari 251                     return;
2 26 Feb 07 jari 252                 }
2 26 Feb 07 jari 253             }
2 26 Feb 07 jari 254             dispose();
2 26 Feb 07 jari 255         }
2 26 Feb 07 jari 256         
2 26 Feb 07 jari 257         public void itemStateChanged(ItemEvent e) {
2 26 Feb 07 jari 258             okButton.setEnabled(genes_box.isSelected() || cluster_box.isSelected());
2 26 Feb 07 jari 259         }
2 26 Feb 07 jari 260         
2 26 Feb 07 jari 261         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 262             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 263             dispose();
2 26 Feb 07 jari 264         }
2 26 Feb 07 jari 265     }
2 26 Feb 07 jari 266     
2 26 Feb 07 jari 267    public static void main(String[] args) {
2 26 Feb 07 jari 268         javax.swing.JFrame frame = new javax.swing.JFrame("Test");
2 26 Feb 07 jari 269         while (true) {
2 26 Feb 07 jari 270             HCLInitDialog dialog = new HCLInitDialog(frame, "Euclidean Distance", false, true);
2 26 Feb 07 jari 271             if (dialog.showModal() != JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 272                 System.exit(0);
2 26 Feb 07 jari 273             }
2 26 Feb 07 jari 274             System.out.println("===============================");
2 26 Feb 07 jari 275             System.out.println(dialog.isClusterGenes());
2 26 Feb 07 jari 276             System.out.println(dialog.isClusterExperiments());
2 26 Feb 07 jari 277             System.out.println(dialog.getMethod());
2 26 Feb 07 jari 278         }
2 26 Feb 07 jari 279     }
2 26 Feb 07 jari 280     
2 26 Feb 07 jari 281     protected void disposeDialog() {
2 26 Feb 07 jari 282     }
2 26 Feb 07 jari 283     
2 26 Feb 07 jari 284 }