mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/som/SOMInitDialog.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: SOMInitDialog.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 20:22: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.som;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.BorderLayout;
2 26 Feb 07 jari 15 import java.awt.Color;
2 26 Feb 07 jari 16 import java.awt.Dimension;
2 26 Feb 07 jari 17 import java.awt.FontMetrics;
2 26 Feb 07 jari 18 import java.awt.Frame;
2 26 Feb 07 jari 19 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 20 import java.awt.GridBagLayout;
2 26 Feb 07 jari 21 import java.awt.GridLayout;
2 26 Feb 07 jari 22 import java.awt.Insets;
2 26 Feb 07 jari 23 import java.awt.Toolkit;
2 26 Feb 07 jari 24 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 25 import java.awt.event.ActionListener;
2 26 Feb 07 jari 26 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 27
2 26 Feb 07 jari 28 import javax.swing.JComboBox;
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.UIManager;
2 26 Feb 07 jari 34 import javax.swing.border.EmptyBorder;
2 26 Feb 07 jari 35
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 37 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 38 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DistanceMetricPanel;
2 26 Feb 07 jari 39 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.HCLSelectionPanel;
2 26 Feb 07 jari 40 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.ParameterPanel;
2 26 Feb 07 jari 41 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.SampleSelectionPanel;
2 26 Feb 07 jari 42 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 43
2 26 Feb 07 jari 44 public class SOMInitDialog extends AlgorithmDialog {
2 26 Feb 07 jari 45     
2 26 Feb 07 jari 46     private int result;
2 26 Feb 07 jari 47     private SampleSelectionPanel sampleSelectionPanel;
2 26 Feb 07 jari 48     private HCLSelectionPanel hclOpsPanel;
2 26 Feb 07 jari 49     private DistanceMetricPanel metricPanel;
2 26 Feb 07 jari 50     
2 26 Feb 07 jari 51     public JTextField dimXField;
2 26 Feb 07 jari 52     public JTextField dimYField;
2 26 Feb 07 jari 53     public JTextField iterField;
2 26 Feb 07 jari 54     public JTextField alphaField;
2 26 Feb 07 jari 55     public JTextField radiusField;
2 26 Feb 07 jari 56     public JComboBox initList;
2 26 Feb 07 jari 57     public JComboBox neighbList;
2 26 Feb 07 jari 58     public JComboBox topoList;
2 26 Feb 07 jari 59     
2 26 Feb 07 jari 60     /**
2 26 Feb 07 jari 61      * Constructs the dialog with predefined parameters.
2 26 Feb 07 jari 62      */
2 26 Feb 07 jari 63     public SOMInitDialog(Frame frame, int dimX, int dimY, long iterations,
2 26 Feb 07 jari 64     float alpha, float radius,
2 26 Feb 07 jari 65     int initType, int neighborhood, int topology, String globalFunctionName, boolean globalAbsoluteValue) {
2 26 Feb 07 jari 66         super(frame, "SOM: Self Organizing Maps", true);
2 26 Feb 07 jari 67         this.setSize(520, 343);
2 26 Feb 07 jari 68         this.setResizable(false);
2 26 Feb 07 jari 69         
2 26 Feb 07 jari 70         Listener listener = new Listener();
2 26 Feb 07 jari 71         addWindowListener(listener);
2 26 Feb 07 jari 72         
2 26 Feb 07 jari 73         sampleSelectionPanel = new SampleSelectionPanel(Color.white, UIManager.getColor("Label.foreground"),true,"Sample Selection");
2 26 Feb 07 jari 74         
2 26 Feb 07 jari 75         sampleSelectionPanel.setExperimentButtonActionListener(new ActionListener(){
2 26 Feb 07 jari 76             public void actionPerformed( ActionEvent e ){
2 26 Feb 07 jari 77                 if( sampleSelectionPanel.isClusterGenesSelected() )
2 26 Feb 07 jari 78                     return;
2 26 Feb 07 jari 79                 int sel = initList.getSelectedIndex();
2 26 Feb 07 jari 80                 initList.removeItemAt(1);
2 26 Feb 07 jari 81                 initList.insertItemAt("Random Samples", 1);
2 26 Feb 07 jari 82                 initList.setSelectedIndex(sel);
2 26 Feb 07 jari 83             }
2 26 Feb 07 jari 84         });
2 26 Feb 07 jari 85         sampleSelectionPanel.setGeneButtonActionListener(new ActionListener(){
2 26 Feb 07 jari 86             public void actionPerformed( ActionEvent e ){
2 26 Feb 07 jari 87                 if( !sampleSelectionPanel.isClusterGenesSelected() )
2 26 Feb 07 jari 88                     return;
2 26 Feb 07 jari 89                 int sel = initList.getSelectedIndex();
2 26 Feb 07 jari 90                 initList.removeItemAt(1);
2 26 Feb 07 jari 91                 initList.insertItemAt("Random Genes", 1);
2 26 Feb 07 jari 92                 initList.setSelectedIndex(sel);
2 26 Feb 07 jari 93             }
2 26 Feb 07 jari 94         });
2 26 Feb 07 jari 95         
2 26 Feb 07 jari 96     
2 26 Feb 07 jari 97         metricPanel = new DistanceMetricPanel(globalFunctionName, globalAbsoluteValue, "Euclidean Distance", "SOM", true, true);
2 26 Feb 07 jari 98         
2 26 Feb 07 jari 99         JPanel parameters1 = new JPanel();
2 26 Feb 07 jari 100         parameters1.setBorder(new EmptyBorder(5, 10, 20, 0));
2 26 Feb 07 jari 101         parameters1.setBackground(Color.white);
2 26 Feb 07 jari 102         parameters1.setForeground(Color.black);
2 26 Feb 07 jari 103         parameters1.setLayout(new GridBagLayout());
2 26 Feb 07 jari 104         
2 26 Feb 07 jari 105         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 106         gbc.insets.right = 10;
2 26 Feb 07 jari 107         gbc.gridx = 0;
2 26 Feb 07 jari 108         gbc.gridy = 0;
2 26 Feb 07 jari 109         gbc.anchor = GridBagConstraints.WEST;
2 26 Feb 07 jari 110         
2 26 Feb 07 jari 111         parameters1.add(new JLabel("Dimension X"), gbc);
2 26 Feb 07 jari 112         gbc.gridy = 1;
2 26 Feb 07 jari 113         parameters1.add(new JLabel("Dimension Y"), gbc);
2 26 Feb 07 jari 114         gbc.gridy = 2;
2 26 Feb 07 jari 115         parameters1.add(new JLabel("Iterations") , gbc);
2 26 Feb 07 jari 116         gbc.gridy = 3;
2 26 Feb 07 jari 117         parameters1.add(new JLabel("Alpha"),       gbc);
2 26 Feb 07 jari 118         gbc.gridy = 4;
2 26 Feb 07 jari 119         parameters1.add(new JLabel("Radius"),      gbc);
2 26 Feb 07 jari 120         gbc.gridx = 1;
2 26 Feb 07 jari 121         gbc.gridy = 0;
2 26 Feb 07 jari 122         gbc.insets.right = 0;
2 26 Feb 07 jari 123         gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 124         dimXField = new JTextField(String.valueOf(dimX), 5);
2 26 Feb 07 jari 125         parameters1.add(dimXField  , gbc);
2 26 Feb 07 jari 126         gbc.gridy = 1;
2 26 Feb 07 jari 127         dimYField = new JTextField(String.valueOf(dimY), 5);
2 26 Feb 07 jari 128         parameters1.add(dimYField  , gbc);
2 26 Feb 07 jari 129         gbc.gridy = 2;
2 26 Feb 07 jari 130         iterField = new JTextField(String.valueOf(iterations), 5);
2 26 Feb 07 jari 131         parameters1.add(iterField  , gbc);
2 26 Feb 07 jari 132         gbc.gridy = 3;
2 26 Feb 07 jari 133         alphaField = new JTextField(String.valueOf(alpha), 5);
2 26 Feb 07 jari 134         parameters1.add(alphaField , gbc);
2 26 Feb 07 jari 135         gbc.gridy = 4;
2 26 Feb 07 jari 136         radiusField = new JTextField(String.valueOf(radius), 5);
2 26 Feb 07 jari 137         parameters1.add(radiusField, gbc);
2 26 Feb 07 jari 138         gbc.gridx = 0;
2 26 Feb 07 jari 139         gbc.gridy = 5;
2 26 Feb 07 jari 140         gbc.gridwidth = 2;
2 26 Feb 07 jari 141         
2 26 Feb 07 jari 142         JPanel parameters2 = new JPanel();
2 26 Feb 07 jari 143         parameters2.setLayout(new GridLayout(0, 1, 0, 10));
2 26 Feb 07 jari 144         parameters2.setBorder(new EmptyBorder(5, 25, 15, 10));
2 26 Feb 07 jari 145         parameters2.setBackground(Color.white);
2 26 Feb 07 jari 146         
2 26 Feb 07 jari 147         parameters2.add(new JLabel("Initialization"), BorderLayout.WEST);
2 26 Feb 07 jari 148         parameters2.add(new JLabel("Neighborhood"), BorderLayout.WEST);
2 26 Feb 07 jari 149         parameters2.add(new JLabel("Topology"), BorderLayout.WEST);
2 26 Feb 07 jari 150         
2 26 Feb 07 jari 151         JPanel parameters3 = new JPanel();
2 26 Feb 07 jari 152         parameters3.setLayout(new GridLayout(0, 1, 10, 10));
2 26 Feb 07 jari 153         parameters3.setBorder(new EmptyBorder(10, 0, 15, 10));
2 26 Feb 07 jari 154         parameters3.setBackground(Color.white);
2 26 Feb 07 jari 155         
2 26 Feb 07 jari 156         initList = new JComboBox(new String[] {"Random Vector", "Random Genes"});
2 26 Feb 07 jari 157         initList.setSelectedIndex(initType);
2 26 Feb 07 jari 158         
2 26 Feb 07 jari 159         FontMetrics fm = initList.getFontMetrics(initList.getFont());
2 26 Feb 07 jari 160         int width = fm.stringWidth("Random Samples");
2 26 Feb 07 jari 161         initList.setPreferredSize( new Dimension(width + 40, initList.getHeight()));
2 26 Feb 07 jari 162         
2 26 Feb 07 jari 163         neighbList = new JComboBox(new String[] {"Bubble", "Gaussian"});
2 26 Feb 07 jari 164         neighbList.setSelectedIndex(neighborhood);
2 26 Feb 07 jari 165         neighbList.setPreferredSize( new Dimension(width, initList.getHeight()));
2 26 Feb 07 jari 166         
2 26 Feb 07 jari 167         topoList = new JComboBox(new String[] {"Hexagonal", "Rectangular"});
2 26 Feb 07 jari 168         topoList.setSelectedIndex(topology);
2 26 Feb 07 jari 169         
2 26 Feb 07 jari 170         initList.setBackground(Color.white);
2 26 Feb 07 jari 171         neighbList.setBackground(Color.white);
2 26 Feb 07 jari 172         topoList.setBackground(Color.white);
2 26 Feb 07 jari 173         
2 26 Feb 07 jari 174         parameters3.add(initList);
2 26 Feb 07 jari 175         parameters3.add(neighbList);
2 26 Feb 07 jari 176         parameters3.add(topoList);
2 26 Feb 07 jari 177         
2 26 Feb 07 jari 178         hclOpsPanel = new HCLSelectionPanel();
2 26 Feb 07 jari 179         
2 26 Feb 07 jari 180         ParameterPanel paramPanel = new ParameterPanel();
2 26 Feb 07 jari 181         paramPanel.setLayout(new BorderLayout());
2 26 Feb 07 jari 182         
2 26 Feb 07 jari 183         paramPanel.add(parameters1, BorderLayout.WEST);
2 26 Feb 07 jari 184         paramPanel.add(parameters2, BorderLayout.CENTER);
2 26 Feb 07 jari 185         paramPanel.add(parameters3, BorderLayout.EAST);
2 26 Feb 07 jari 186                 
2 26 Feb 07 jari 187         JPanel panel3 = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 188         panel3.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 189         panel3.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 190         panel3.add(paramPanel, 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 191         panel3.add(hclOpsPanel, new GridBagConstraints(0,3,1,1,1,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 192         
2 26 Feb 07 jari 193         setActionListeners(listener);
2 26 Feb 07 jari 194         addContent(panel3);
2 26 Feb 07 jari 195         pack();
2 26 Feb 07 jari 196         // panel1.add(topPanel, BorderLayout.CENTER);
2 26 Feb 07 jari 197         
2 26 Feb 07 jari 198         //    this.getContentPane().add(panel1, BorderLayout.CENTER);
2 26 Feb 07 jari 199     }
2 26 Feb 07 jari 200     
2 26 Feb 07 jari 201     /**
2 26 Feb 07 jari 202      * Shows the dialog.
2 26 Feb 07 jari 203      */
2 26 Feb 07 jari 204     public int showModal() {
2 26 Feb 07 jari 205         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 206         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 207         show();
2 26 Feb 07 jari 208         return result;
2 26 Feb 07 jari 209     }
2 26 Feb 07 jari 210     
2 26 Feb 07 jari 211     /**
2 26 Feb 07 jari 212      * Returns if clustering Genes is true
2 26 Feb 07 jari 213      */
2 26 Feb 07 jari 214     public boolean isClusterGenes(){
2 26 Feb 07 jari 215         return sampleSelectionPanel.isClusterGenesSelected();
2 26 Feb 07 jari 216     }
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 the x dimension.
2 26 Feb 07 jari 221      */
2 26 Feb 07 jari 222     public int getDimensionX() {
2 26 Feb 07 jari 223         return Integer.parseInt(dimXField.getText());
2 26 Feb 07 jari 224     }
2 26 Feb 07 jari 225     
2 26 Feb 07 jari 226     /**
2 26 Feb 07 jari 227      * Returns the y dimension.
2 26 Feb 07 jari 228      */
2 26 Feb 07 jari 229     public int getDimensionY() {
2 26 Feb 07 jari 230         return Integer.parseInt(dimYField.getText());
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 count of iterations.
2 26 Feb 07 jari 235      */
2 26 Feb 07 jari 236     public long getIterations() {
2 26 Feb 07 jari 237         return Long.parseLong(iterField.getText());
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 the alpha value.
2 26 Feb 07 jari 242      */
2 26 Feb 07 jari 243     public float getAlpha() {
2 26 Feb 07 jari 244         return Float.parseFloat(alphaField.getText());
2 26 Feb 07 jari 245     }
2 26 Feb 07 jari 246     
2 26 Feb 07 jari 247     /**
2 26 Feb 07 jari 248      * Returns the radius value.
2 26 Feb 07 jari 249      */
2 26 Feb 07 jari 250     public float getRadius() {
2 26 Feb 07 jari 251         return Float.parseFloat(radiusField.getText());
2 26 Feb 07 jari 252     }
2 26 Feb 07 jari 253     
2 26 Feb 07 jari 254     /**
2 26 Feb 07 jari 255      * Returns the initialization type.
2 26 Feb 07 jari 256      */
2 26 Feb 07 jari 257     public int getInitType() {
2 26 Feb 07 jari 258         return initList.getSelectedIndex();
2 26 Feb 07 jari 259     }
2 26 Feb 07 jari 260     
2 26 Feb 07 jari 261     /**
2 26 Feb 07 jari 262      * Returns the neighborhood index.
2 26 Feb 07 jari 263      */
2 26 Feb 07 jari 264     public int getNeighborhood() {
2 26 Feb 07 jari 265         return neighbList.getSelectedIndex();
2 26 Feb 07 jari 266     }
2 26 Feb 07 jari 267     
2 26 Feb 07 jari 268     /**
2 26 Feb 07 jari 269      * Returns the topology index.
2 26 Feb 07 jari 270      */
2 26 Feb 07 jari 271     public int getTopology() {
2 26 Feb 07 jari 272         return topoList.getSelectedIndex();
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 true if the hierarchical checkbox is selected.
2 26 Feb 07 jari 277      */
2 26 Feb 07 jari 278     public boolean isHierarchicalTree() {
2 26 Feb 07 jari 279         return hclOpsPanel.isHCLSelected();
2 26 Feb 07 jari 280     }
2 26 Feb 07 jari 281     
2 26 Feb 07 jari 282     /**
2 26 Feb 07 jari 283      * Returns the currently selected metric
2 26 Feb 07 jari 284      */
2 26 Feb 07 jari 285     public int getDistanceMetric() {
2 26 Feb 07 jari 286         return metricPanel.getMetricIndex();
2 26 Feb 07 jari 287     }
2 26 Feb 07 jari 288     
2 26 Feb 07 jari 289     /**
2 26 Feb 07 jari 290      *  Returns true if the absolute checkbox is selected, else false
2 26 Feb 07 jari 291      */
2 26 Feb 07 jari 292     public boolean isAbsoluteDistance() {
2 26 Feb 07 jari 293         return metricPanel.getAbsoluteSelection();
2 26 Feb 07 jari 294     }
2 26 Feb 07 jari 295     
2 26 Feb 07 jari 296     
2 26 Feb 07 jari 297     /**
2 26 Feb 07 jari 298      *  Resets the controls to default
2 26 Feb 07 jari 299      */
2 26 Feb 07 jari 300     private void resetControls(){
2 26 Feb 07 jari 301         this.dimXField.setText("3");
2 26 Feb 07 jari 302         this.dimYField.setText("3");
2 26 Feb 07 jari 303         this.iterField.setText("2000");
2 26 Feb 07 jari 304         this.alphaField.setText("0.05");
2 26 Feb 07 jari 305         this.radiusField.setText("3.0");
2 26 Feb 07 jari 306         initList.removeItemAt(1);
2 26 Feb 07 jari 307         initList.insertItemAt("Random Genes", 1);
2 26 Feb 07 jari 308         this.initList.setSelectedIndex(1);
2 26 Feb 07 jari 309         this.neighbList.setSelectedIndex(1);
2 26 Feb 07 jari 310         this.topoList.setSelectedIndex(0);
2 26 Feb 07 jari 311         this.sampleSelectionPanel.setClusterGenesSelected(true);
2 26 Feb 07 jari 312         this.hclOpsPanel.setHCLSelected(false);
2 26 Feb 07 jari 313         this.initList.setSelectedIndex(1);
2 26 Feb 07 jari 314         this.neighbList.setSelectedIndex(1);
2 26 Feb 07 jari 315         this.topoList.setSelectedIndex(0);
2 26 Feb 07 jari 316         this.metricPanel.reset();
2 26 Feb 07 jari 317     }
2 26 Feb 07 jari 318     
2 26 Feb 07 jari 319     /**
2 26 Feb 07 jari 320      * Validates input values
2 26 Feb 07 jari 321      */
2 26 Feb 07 jari 322     private boolean validInput(int x, int y, long i, float a, float r){
2 26 Feb 07 jari 323         boolean valid = true;
2 26 Feb 07 jari 324         if(x < 1 ){
2 26 Feb 07 jari 325             JOptionPane.showMessageDialog(SOMInitDialog.this, "x Dimension must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 326             this.dimXField.requestFocus();
2 26 Feb 07 jari 327             this.dimXField.selectAll();
2 26 Feb 07 jari 328             valid = false;
2 26 Feb 07 jari 329         }
2 26 Feb 07 jari 330         else if( y < 1){
2 26 Feb 07 jari 331             JOptionPane.showMessageDialog(SOMInitDialog.this, "y Dimension must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 332             this.dimYField.requestFocus();
2 26 Feb 07 jari 333             this.dimYField.selectAll();
2 26 Feb 07 jari 334             valid = false;
2 26 Feb 07 jari 335         }
2 26 Feb 07 jari 336         else if( i < 1 ){
2 26 Feb 07 jari 337             JOptionPane.showMessageDialog(SOMInitDialog.this, "Number of Iterations must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 338             this.iterField.requestFocus();
2 26 Feb 07 jari 339             this.iterField.selectAll();
2 26 Feb 07 jari 340             valid = false;
2 26 Feb 07 jari 341         }
2 26 Feb 07 jari 342         else if( a <= 0 ){
2 26 Feb 07 jari 343             JOptionPane.showMessageDialog(SOMInitDialog.this, "Alpha value must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 344             this.alphaField.requestFocus();
2 26 Feb 07 jari 345             this.alphaField.selectAll();
2 26 Feb 07 jari 346             valid = false;
2 26 Feb 07 jari 347         }
2 26 Feb 07 jari 348         else if(r <= 0){
2 26 Feb 07 jari 349             JOptionPane.showMessageDialog(SOMInitDialog.this, "Radius value must be > 0", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 350             this.radiusField.requestFocus();
2 26 Feb 07 jari 351             this.radiusField.selectAll();
2 26 Feb 07 jari 352             valid = false;
2 26 Feb 07 jari 353         }
2 26 Feb 07 jari 354         return valid;
2 26 Feb 07 jari 355     }
2 26 Feb 07 jari 356     
2 26 Feb 07 jari 357     /**
2 26 Feb 07 jari 358      * The class to listen to the dialog events.
2 26 Feb 07 jari 359      */
2 26 Feb 07 jari 360     private class Listener extends DialogListener {
2 26 Feb 07 jari 361         
2 26 Feb 07 jari 362         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 363             String command = e.getActionCommand();
2 26 Feb 07 jari 364             if (command.equals("ok-command")) {
2 26 Feb 07 jari 365                 int x,y;
2 26 Feb 07 jari 366                 long i;
2 26 Feb 07 jari 367                 float a,r;
2 26 Feb 07 jari 368                 try {
2 26 Feb 07 jari 369                     x = Integer.parseInt(dimXField.getText());
2 26 Feb 07 jari 370                     y = Integer.parseInt(dimYField.getText());
2 26 Feb 07 jari 371                     i = Long.parseLong(iterField.getText());
2 26 Feb 07 jari 372                     a = Float.parseFloat(alphaField.getText());
2 26 Feb 07 jari 373                     r = Float.parseFloat(radiusField.getText());
2 26 Feb 07 jari 374                     if(validInput(x,y,i,a,r)){
2 26 Feb 07 jari 375                         result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 376                         dispose();
2 26 Feb 07 jari 377                     }
2 26 Feb 07 jari 378                 } catch (NumberFormatException nfe) {
2 26 Feb 07 jari 379                     JOptionPane.showMessageDialog(SOMInitDialog.this, "Input value " + nfe.getMessage() +" is not valid input. \nPlease enter a new value or view the parameter information help page for this algorithm.", "Input Error!", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 380                     result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 381                 }
2 26 Feb 07 jari 382                 
2 26 Feb 07 jari 383             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 384                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 385                 dispose();
2 26 Feb 07 jari 386             }else if (command.equals("reset-command")){
2 26 Feb 07 jari 387                 resetControls();
2 26 Feb 07 jari 388             }else if(command.equals("info-command")){
2 26 Feb 07 jari 389                 HelpWindow helpWindow = new HelpWindow(SOMInitDialog.this, "SOM Initialization Dialog");
2 26 Feb 07 jari 390                 if(helpWindow.getWindowContent()){
2 26 Feb 07 jari 391                     helpWindow.setSize(450, 600);
2 26 Feb 07 jari 392                     helpWindow.setLocation();
2 26 Feb 07 jari 393                     helpWindow.show();
2 26 Feb 07 jari 394                 }
2 26 Feb 07 jari 395                 else{
2 26 Feb 07 jari 396                     helpWindow.dispose();
2 26 Feb 07 jari 397                 }
2 26 Feb 07 jari 398             }
2 26 Feb 07 jari 399         }
2 26 Feb 07 jari 400         
2 26 Feb 07 jari 401         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 402             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 403             dispose();
2 26 Feb 07 jari 404         }
2 26 Feb 07 jari 405     }
2 26 Feb 07 jari 406     
2 26 Feb 07 jari 407     public static void main(String[] args) {
2 26 Feb 07 jari 408         SOMInitDialog dlg = new SOMInitDialog(new Frame(), 0 ,0, 0, 0, 0, 1, 0, 0, "Euclidean Distance", false);
2 26 Feb 07 jari 409         dlg.showModal();
2 26 Feb 07 jari 410         System.exit(0);
2 26 Feb 07 jari 411     }
2 26 Feb 07 jari 412 }