mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/rn/RelNetSelectionDlg.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: RelNetSelectionDlg.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 20:39:04 $
2 26 Feb 07 jari 9  * $Author: braistedj $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.gui.impl.rn;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.Container;
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.GridLayout;
2 26 Feb 07 jari 20 import java.awt.Insets;
2 26 Feb 07 jari 21 import java.awt.Toolkit;
2 26 Feb 07 jari 22 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 23 import java.awt.event.ActionListener;
2 26 Feb 07 jari 24 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 25
2 26 Feb 07 jari 26 import javax.swing.JButton;
2 26 Feb 07 jari 27 import javax.swing.JComboBox;
2 26 Feb 07 jari 28 import javax.swing.JDialog;
2 26 Feb 07 jari 29 import javax.swing.JLabel;
2 26 Feb 07 jari 30 import javax.swing.JOptionPane;
2 26 Feb 07 jari 31 import javax.swing.JPanel;
2 26 Feb 07 jari 32 import javax.swing.JTextField;
2 26 Feb 07 jari 33 import javax.swing.border.BevelBorder;
2 26 Feb 07 jari 34
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 36
2 26 Feb 07 jari 37 public class RelNetSelectionDlg extends JDialog {
2 26 Feb 07 jari 38
2 26 Feb 07 jari 39     public static final int DEGREE_TYPE = 0;
2 26 Feb 07 jari 40     public static final int GENEID_TYPE = 1;
2 26 Feb 07 jari 41     public static final String CONDITION_GREATER_THAN = "Greater than";
2 26 Feb 07 jari 42     public static final String CONDITION_EQUAL_TO     = "Equal to";
2 26 Feb 07 jari 43     public static final String CONDITION_LESS_THAN    = "Less than";
2 26 Feb 07 jari 44     public static final String CONDITION_LIKE         = "Like";
2 26 Feb 07 jari 45     public static final String CONDITION_BETWEEN      = "Between";
2 26 Feb 07 jari 46
2 26 Feb 07 jari 47     private int result;
2 26 Feb 07 jari 48
2 26 Feb 07 jari 49     private int type;
2 26 Feb 07 jari 50     private JComboBox conditionCombo;
2 26 Feb 07 jari 51     private JPanel degreePanel;
2 26 Feb 07 jari 52     private JComboBox  degreeCombo_1;
2 26 Feb 07 jari 53     private JComboBox  degreeCombo_2;
2 26 Feb 07 jari 54     private JTextField geneidField;
2 26 Feb 07 jari 55
2 26 Feb 07 jari 56     /**
2 26 Feb 07 jari 57      * Construct the dialog with specified type.
2 26 Feb 07 jari 58      */
2 26 Feb 07 jari 59     public RelNetSelectionDlg(Frame frame, int type) {
2 26 Feb 07 jari 60         super(frame, "Select Nodes", true);
2 26 Feb 07 jari 61         this.type = type;
2 26 Feb 07 jari 62
2 26 Feb 07 jari 63         Listener listener = new Listener();
2 26 Feb 07 jari 64
2 26 Feb 07 jari 65         this.degreeCombo_1 = createDegreeCombo_1();
2 26 Feb 07 jari 66         this.degreeCombo_2 = createDegreeCombo_2();
2 26 Feb 07 jari 67
2 26 Feb 07 jari 68         JPanel selectionPanel = createSelectionPanel(listener, type);
2 26 Feb 07 jari 69         JPanel btnsPanel = createBtnsPanel(listener);
2 26 Feb 07 jari 70
2 26 Feb 07 jari 71         Container content = getContentPane();
2 26 Feb 07 jari 72         content.setLayout(new GridBagLayout());
2 26 Feb 07 jari 73         content.add(selectionPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0
2 26 Feb 07 jari 74                                                            ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
2 26 Feb 07 jari 75         content.add(btnsPanel, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0
2 26 Feb 07 jari 76                                                       ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(4, 8, 4, 8), 0, 0));
2 26 Feb 07 jari 77         addWindowListener(listener);
2 26 Feb 07 jari 78         pack();
2 26 Feb 07 jari 79     }
2 26 Feb 07 jari 80
2 26 Feb 07 jari 81     /**
2 26 Feb 07 jari 82      * Creates the main panel.
2 26 Feb 07 jari 83      */
2 26 Feb 07 jari 84     private JPanel createSelectionPanel(ActionListener listener, int type) {
2 26 Feb 07 jari 85         JPanel panel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 86         panel.setBorder(new BevelBorder(BevelBorder.RAISED));
2 26 Feb 07 jari 87
2 26 Feb 07 jari 88         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 89         gbc.insets = new Insets(5, 5, 5, 5);
2 26 Feb 07 jari 90
2 26 Feb 07 jari 91         // labels...
2 26 Feb 07 jari 92         gbc.anchor = GridBagConstraints.WEST;
2 26 Feb 07 jari 93         gbc.gridx  = 0;
2 26 Feb 07 jari 94         gbc.gridy  = 0;
2 26 Feb 07 jari 95         panel.add(new JLabel("Condition:"), gbc);
2 26 Feb 07 jari 96         gbc.gridx  = 0;
2 26 Feb 07 jari 97         gbc.gridy  = 1;
2 26 Feb 07 jari 98         switch (type) {
2 26 Feb 07 jari 99         case DEGREE_TYPE:
2 26 Feb 07 jari 100             panel.add(new JLabel("Degree:"), gbc);
2 26 Feb 07 jari 101             break;
2 26 Feb 07 jari 102         case GENEID_TYPE:
2 26 Feb 07 jari 103             panel.add(new JLabel("Element ID:"), gbc);
2 26 Feb 07 jari 104             break;
2 26 Feb 07 jari 105         }
2 26 Feb 07 jari 106         // fields...
2 26 Feb 07 jari 107         this.conditionCombo = createConditionCombo(listener, type);
2 26 Feb 07 jari 108         gbc.anchor = GridBagConstraints.CENTER;
2 26 Feb 07 jari 109         gbc.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 110         gbc.weightx = 1.0;
2 26 Feb 07 jari 111         gbc.gridx  = 1;
2 26 Feb 07 jari 112         gbc.gridy  = 0;
2 26 Feb 07 jari 113         panel.add(conditionCombo, gbc);
2 26 Feb 07 jari 114
2 26 Feb 07 jari 115         gbc.gridx  = 1;
2 26 Feb 07 jari 116         gbc.gridy  = 1;
2 26 Feb 07 jari 117
2 26 Feb 07 jari 118         switch (type) {
2 26 Feb 07 jari 119         case DEGREE_TYPE:
2 26 Feb 07 jari 120             degreePanel = createDegreePanel();
2 26 Feb 07 jari 121             panel.add(degreePanel, gbc);
2 26 Feb 07 jari 122             break;
2 26 Feb 07 jari 123         case GENEID_TYPE:
2 26 Feb 07 jari 124             geneidField = new JTextField();
2 26 Feb 07 jari 125             panel.add(geneidField, gbc);
2 26 Feb 07 jari 126             break;
2 26 Feb 07 jari 127         }
2 26 Feb 07 jari 128         return panel;
2 26 Feb 07 jari 129     }
2 26 Feb 07 jari 130
2 26 Feb 07 jari 131     /**
2 26 Feb 07 jari 132      * Creates a combo with a type specific list of conditions.
2 26 Feb 07 jari 133      */
2 26 Feb 07 jari 134     private JComboBox createConditionCombo(ActionListener listener, int type) {
2 26 Feb 07 jari 135         JComboBox combo = new JComboBox();
2 26 Feb 07 jari 136         switch (type) {
2 26 Feb 07 jari 137         case DEGREE_TYPE:
2 26 Feb 07 jari 138             combo.addItem(CONDITION_GREATER_THAN);
2 26 Feb 07 jari 139             combo.addItem(CONDITION_EQUAL_TO);
2 26 Feb 07 jari 140             combo.addItem(CONDITION_LESS_THAN);
2 26 Feb 07 jari 141             combo.addItem(CONDITION_BETWEEN);
2 26 Feb 07 jari 142             break;
2 26 Feb 07 jari 143         case GENEID_TYPE:
2 26 Feb 07 jari 144             combo.addItem(CONDITION_EQUAL_TO);
2 26 Feb 07 jari 145             combo.addItem(CONDITION_LIKE);
2 26 Feb 07 jari 146             break;
2 26 Feb 07 jari 147         }
2 26 Feb 07 jari 148         combo.setActionCommand("condition-changed");
2 26 Feb 07 jari 149         combo.addActionListener(listener);
2 26 Feb 07 jari 150         return combo;
2 26 Feb 07 jari 151     }
2 26 Feb 07 jari 152
2 26 Feb 07 jari 153     /**
2 26 Feb 07 jari 154      * Creates a combo for first degree parameter.
2 26 Feb 07 jari 155      */
2 26 Feb 07 jari 156     private JComboBox createDegreeCombo_1() {
2 26 Feb 07 jari 157         JComboBox combo = new JComboBox();
2 26 Feb 07 jari 158         combo.setEditable(true);
2 26 Feb 07 jari 159         for (int i=0; i < 10; i++) {
2 26 Feb 07 jari 160             combo.addItem(String.valueOf(i));
2 26 Feb 07 jari 161         }
2 26 Feb 07 jari 162         return combo;
2 26 Feb 07 jari 163     }
2 26 Feb 07 jari 164
2 26 Feb 07 jari 165     /**
2 26 Feb 07 jari 166      * Creates a combo for second degree parameter.
2 26 Feb 07 jari 167      */
2 26 Feb 07 jari 168     private JComboBox createDegreeCombo_2() {
2 26 Feb 07 jari 169         JComboBox combo = new JComboBox();
2 26 Feb 07 jari 170         combo.setEditable(true);
2 26 Feb 07 jari 171         for (int i= 10; --i >= 0;) {
2 26 Feb 07 jari 172             combo.addItem(String.valueOf(i));
2 26 Feb 07 jari 173         }
2 26 Feb 07 jari 174         return combo;
2 26 Feb 07 jari 175     }
2 26 Feb 07 jari 176
2 26 Feb 07 jari 177     /**
2 26 Feb 07 jari 178      * Creates a panel with a degree combo.
2 26 Feb 07 jari 179      */
2 26 Feb 07 jari 180     private JPanel createDegreePanel() {
2 26 Feb 07 jari 181         JPanel panel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 182         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 183         gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 184         gbc.weightx = 1.0;
2 26 Feb 07 jari 185         panel.add(this.degreeCombo_1, gbc);
2 26 Feb 07 jari 186         return panel;
2 26 Feb 07 jari 187     }
2 26 Feb 07 jari 188
2 26 Feb 07 jari 189     /**
2 26 Feb 07 jari 190      * Updates a degree panel.
2 26 Feb 07 jari 191      */
2 26 Feb 07 jari 192     private void updateDegreePanel(boolean two_combo) {
2 26 Feb 07 jari 193         this.degreePanel.removeAll();
2 26 Feb 07 jari 194         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 195         gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 196         if (two_combo) {
2 26 Feb 07 jari 197             gbc.gridx = gbc.gridy = 0;
2 26 Feb 07 jari 198             gbc.weightx = 0.5;
2 26 Feb 07 jari 199             this.degreePanel.add(this.degreeCombo_1, gbc);
2 26 Feb 07 jari 200             gbc.gridx = 1;
2 26 Feb 07 jari 201             gbc.insets.left = 5;
2 26 Feb 07 jari 202             this.degreePanel.add(this.degreeCombo_2, gbc);
2 26 Feb 07 jari 203         } else {
2 26 Feb 07 jari 204             gbc.weightx = 1.0;
2 26 Feb 07 jari 205             this.degreePanel.add(this.degreeCombo_1, gbc);
2 26 Feb 07 jari 206         }
2 26 Feb 07 jari 207         this.degreePanel.validate();
2 26 Feb 07 jari 208         this.degreePanel.repaint();
2 26 Feb 07 jari 209     }
2 26 Feb 07 jari 210
2 26 Feb 07 jari 211     /**
2 26 Feb 07 jari 212      * Creates a panel with 'ok' and 'cancel' buttons.
2 26 Feb 07 jari 213      */
2 26 Feb 07 jari 214     private JPanel createBtnsPanel(ActionListener listener) {
2 26 Feb 07 jari 215         GridLayout gridLayout = new GridLayout();
2 26 Feb 07 jari 216         JPanel panel = new JPanel(gridLayout);
2 26 Feb 07 jari 217
2 26 Feb 07 jari 218         JButton okButton = new JButton("OK");
2 26 Feb 07 jari 219         okButton.setActionCommand("ok-command");
2 26 Feb 07 jari 220         okButton.addActionListener(listener);
2 26 Feb 07 jari 221         panel.add(okButton);
2 26 Feb 07 jari 222
2 26 Feb 07 jari 223         JButton cancelButton = new JButton("Cancel");
2 26 Feb 07 jari 224         cancelButton.setActionCommand("cancel-command");
2 26 Feb 07 jari 225         cancelButton.addActionListener(listener);
2 26 Feb 07 jari 226         gridLayout.setHgap(4);
2 26 Feb 07 jari 227         panel.add(cancelButton);
2 26 Feb 07 jari 228
2 26 Feb 07 jari 229         getRootPane().setDefaultButton(okButton);
2 26 Feb 07 jari 230
2 26 Feb 07 jari 231         return panel;
2 26 Feb 07 jari 232     }
2 26 Feb 07 jari 233
2 26 Feb 07 jari 234     /**
2 26 Feb 07 jari 235      * Shows the dialog.
2 26 Feb 07 jari 236      */
2 26 Feb 07 jari 237     public int showModal() {
2 26 Feb 07 jari 238         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 239         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 240         show();
2 26 Feb 07 jari 241         return result;
2 26 Feb 07 jari 242     }
2 26 Feb 07 jari 243
2 26 Feb 07 jari 244     /**
2 26 Feb 07 jari 245      * Returns a condition.
2 26 Feb 07 jari 246      */
2 26 Feb 07 jari 247     public String getCondition() {
2 26 Feb 07 jari 248         return(String)conditionCombo.getSelectedItem();
2 26 Feb 07 jari 249     }
2 26 Feb 07 jari 250
2 26 Feb 07 jari 251     /**
2 26 Feb 07 jari 252      * Returns a gene id.
2 26 Feb 07 jari 253      */
2 26 Feb 07 jari 254     public String getGeneID() {
2 26 Feb 07 jari 255         return geneidField.getText();
2 26 Feb 07 jari 256     }
2 26 Feb 07 jari 257
2 26 Feb 07 jari 258     /**
2 26 Feb 07 jari 259      * Returns a degree value.
2 26 Feb 07 jari 260      */
2 26 Feb 07 jari 261     private int getDegree() {
2 26 Feb 07 jari 262         return Integer.parseInt((String)degreeCombo_1.getSelectedItem());
2 26 Feb 07 jari 263     }
2 26 Feb 07 jari 264
2 26 Feb 07 jari 265     /**
2 26 Feb 07 jari 266      * Returns min degree value.
2 26 Feb 07 jari 267      */
2 26 Feb 07 jari 268     public int getMinDegree() {
2 26 Feb 07 jari 269         if (!getCondition().equals(CONDITION_BETWEEN)) {
2 26 Feb 07 jari 270             return getDegree();
2 26 Feb 07 jari 271         }
2 26 Feb 07 jari 272         return Math.min(Integer.parseInt((String)degreeCombo_1.getSelectedItem()), Integer.parseInt((String)degreeCombo_2.getSelectedItem()));
2 26 Feb 07 jari 273     }
2 26 Feb 07 jari 274
2 26 Feb 07 jari 275     /**
2 26 Feb 07 jari 276      * Returns max degree value.
2 26 Feb 07 jari 277      */
2 26 Feb 07 jari 278     public int getMaxDegree() {
2 26 Feb 07 jari 279         if (!getCondition().equals(CONDITION_BETWEEN)) {
2 26 Feb 07 jari 280             return getDegree();
2 26 Feb 07 jari 281         }
2 26 Feb 07 jari 282         return Math.max(Integer.parseInt((String)degreeCombo_1.getSelectedItem()), Integer.parseInt((String)degreeCombo_2.getSelectedItem()));
2 26 Feb 07 jari 283     }
2 26 Feb 07 jari 284
2 26 Feb 07 jari 285     /**
2 26 Feb 07 jari 286      * Updates the degree panel if it is necessary.
2 26 Feb 07 jari 287      */
2 26 Feb 07 jari 288     private void onConditionChanged() {
2 26 Feb 07 jari 289         if (this.type == DEGREE_TYPE)
2 26 Feb 07 jari 290             if (getCondition().equals(CONDITION_BETWEEN))
2 26 Feb 07 jari 291                 updateDegreePanel(true);
2 26 Feb 07 jari 292             else
2 26 Feb 07 jari 293                 updateDegreePanel(false);
2 26 Feb 07 jari 294     }
2 26 Feb 07 jari 295
2 26 Feb 07 jari 296     /**
2 26 Feb 07 jari 297      * The class to listen to dialog events.
2 26 Feb 07 jari 298      */
2 26 Feb 07 jari 299     private class Listener extends DialogListener {
2 26 Feb 07 jari 300
2 26 Feb 07 jari 301         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 302             String command = e.getActionCommand();
2 26 Feb 07 jari 303             if (command.equals("ok-command")) {
2 26 Feb 07 jari 304                 try {
2 26 Feb 07 jari 305                     switch (type) {
2 26 Feb 07 jari 306                     case DEGREE_TYPE:
2 26 Feb 07 jari 307                         Integer.parseInt((String)degreeCombo_1.getSelectedItem());
2 26 Feb 07 jari 308                         if (getCondition().equals(CONDITION_BETWEEN)) {
2 26 Feb 07 jari 309                             Integer.parseInt((String)degreeCombo_2.getSelectedItem());
2 26 Feb 07 jari 310                         }
2 26 Feb 07 jari 311                         break;
2 26 Feb 07 jari 312                     }
2 26 Feb 07 jari 313                     result = JOptionPane.OK_OPTION;  
2 26 Feb 07 jari 314                 } catch (Exception exception) {
2 26 Feb 07 jari 315                     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 316                 }
2 26 Feb 07 jari 317                 dispose();
2 26 Feb 07 jari 318             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 319                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 320                 dispose();
2 26 Feb 07 jari 321             } else if (command.equals("condition-changed")) {
2 26 Feb 07 jari 322                 onConditionChanged();
2 26 Feb 07 jari 323             }
2 26 Feb 07 jari 324         }
2 26 Feb 07 jari 325
2 26 Feb 07 jari 326         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 327             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 328             dispose();
2 26 Feb 07 jari 329         }
2 26 Feb 07 jari 330     }
2 26 Feb 07 jari 331
2 26 Feb 07 jari 332     /*public static void main(String[] args) {
2 26 Feb 07 jari 333         javax.swing.JFrame frame = new javax.swing.JFrame("Test");
2 26 Feb 07 jari 334         final int type = DEGREE_TYPE; //GENEID_TYPE;
2 26 Feb 07 jari 335         while (true) {
2 26 Feb 07 jari 336             RelNetSelectionDlg dialog = new RelNetSelectionDlg(frame, type);
2 26 Feb 07 jari 337             if (dialog.showModal() != JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 338                 System.exit(0);
2 26 Feb 07 jari 339             }
2 26 Feb 07 jari 340             switch (type) {
2 26 Feb 07 jari 341             case DEGREE_TYPE:
2 26 Feb 07 jari 342                 System.out.println(dialog.getCondition());
2 26 Feb 07 jari 343                 System.out.println(dialog.getDegree());
2 26 Feb 07 jari 344                 break;
2 26 Feb 07 jari 345             case GENEID_TYPE:
2 26 Feb 07 jari 346                 System.out.println(dialog.getCondition());
2 26 Feb 07 jari 347                 System.out.println(dialog.getGeneID());
2 26 Feb 07 jari 348                 break;
2 26 Feb 07 jari 349             }
2 26 Feb 07 jari 350         }
2 26 Feb 07 jari 351     }*/
2 26 Feb 07 jari 352 }