mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/svm/SVMInitDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  Copyright @ 1999-2004, 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: SVMInitDialog.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.5 $
2 26 Feb 07 jari 8  * $Date: 2006/02/23 20:59:55 $
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
2 26 Feb 07 jari 13 package org.tigr.microarray.mev.cluster.gui.impl.svm;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15 import java.awt.AWTEvent;
2 26 Feb 07 jari 16 import java.awt.BorderLayout;
2 26 Feb 07 jari 17 import java.awt.Color;
2 26 Feb 07 jari 18 import java.awt.Dimension;
2 26 Feb 07 jari 19 import java.awt.Font;
2 26 Feb 07 jari 20 import java.awt.Frame;
2 26 Feb 07 jari 21 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 22 import java.awt.GridBagLayout;
2 26 Feb 07 jari 23 import java.awt.GridLayout;
2 26 Feb 07 jari 24 import java.awt.Insets;
2 26 Feb 07 jari 25 import java.awt.Toolkit;
2 26 Feb 07 jari 26 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 27 import java.awt.event.ItemEvent;
2 26 Feb 07 jari 28 import java.awt.event.ItemListener;
2 26 Feb 07 jari 29 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 30 import java.io.File;
2 26 Feb 07 jari 31
2 26 Feb 07 jari 32 import javax.swing.BorderFactory;
2 26 Feb 07 jari 33 import javax.swing.JButton;
2 26 Feb 07 jari 34 import javax.swing.JCheckBox;
2 26 Feb 07 jari 35 import javax.swing.JComboBox;
2 26 Feb 07 jari 36 import javax.swing.JFileChooser;
2 26 Feb 07 jari 37 import javax.swing.JLabel;
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.JTextField;
2 26 Feb 07 jari 41 import javax.swing.UIManager;
2 26 Feb 07 jari 42
2 26 Feb 07 jari 43 import org.tigr.microarray.mev.TMEV;
2 26 Feb 07 jari 44 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 45 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 46 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 47
2 26 Feb 07 jari 48 public class SVMInitDialog extends AlgorithmDialog {
2 26 Feb 07 jari 49   public JPanel panel1 = new JPanel();
2 26 Feb 07 jari 50   public JPanel panel3 = new JPanel();
2 26 Feb 07 jari 51   public JPanel panel4 = new JPanel();
2 26 Feb 07 jari 52   public JPanel Parameters1 = new JPanel();
2 26 Feb 07 jari 53   public JPanel Parameters2 = new JPanel();
2 26 Feb 07 jari 54   public JPanel Parameters3 = new JPanel();
2 26 Feb 07 jari 55   public JPanel ClassFilePanel = new JPanel();
2 26 Feb 07 jari 56   public JPanel insetsPanel = new JPanel();
2 26 Feb 07 jari 57   public JLabel label1 = new JLabel();
2 26 Feb 07 jari 58   public JLabel label2 = new JLabel();
2 26 Feb 07 jari 59   public JLabel chooseFileLabel;
2 26 Feb 07 jari 60   public JTextField textField1;
2 26 Feb 07 jari 61   public JTextField textField2;
2 26 Feb 07 jari 62   public JTextField textField3;
2 26 Feb 07 jari 63   public JTextField textField4;
2 26 Feb 07 jari 64   public JTextField textField5;
2 26 Feb 07 jari 65   public JTextField textField6;
2 26 Feb 07 jari 66   public JTextField textField7;
2 26 Feb 07 jari 67   public JTextField textField8;
2 26 Feb 07 jari 68   public JTextField textField9;
2 26 Feb 07 jari 69   public JComboBox List1;
2 26 Feb 07 jari 70   public JComboBox List2;
2 26 Feb 07 jari 71   public JComboBox List3;
2 26 Feb 07 jari 72   public BorderLayout borderLayout1 = new BorderLayout();
2 26 Feb 07 jari 73   public BorderLayout borderLayout2 = new BorderLayout();
2 26 Feb 07 jari 74   public BorderLayout borderLayout3 = new BorderLayout();
2 26 Feb 07 jari 75   public BorderLayout borderLayout4 = new BorderLayout();
2 26 Feb 07 jari 76   public BorderLayout borderLayout5 = new BorderLayout();
2 26 Feb 07 jari 77   public BorderLayout borderLayout6 = new BorderLayout();
2 26 Feb 07 jari 78   public GridLayout gridLayout = new GridLayout();
2 26 Feb 07 jari 79   private JButton ChooseFileButton;
2 26 Feb 07 jari 80   public JCheckBox editorCheckBox;
2 26 Feb 07 jari 81   public JCheckBox CheckBox1;
2 26 Feb 07 jari 82   public JCheckBox CheckBox2;
2 26 Feb 07 jari 83   public JCheckBox CheckBox3;
2 26 Feb 07 jari 84   private JLabel Label1;
2 26 Feb 07 jari 85   private JLabel Label2;
2 26 Feb 07 jari 86   private JLabel Label3;
2 26 Feb 07 jari 87   
2 26 Feb 07 jari 88   private int result;
2 26 Feb 07 jari 89   private SVMData origData;
2 26 Feb 07 jari 90   private SVMData resultData;
2 26 Feb 07 jari 91   
2 26 Feb 07 jari 92   /**
2 26 Feb 07 jari 93    * Crates a new <CODE>SVMInitDialog</CODE>
2 26 Feb 07 jari 94    * @param MyParent parent Frame
2 26 Feb 07 jari 95    * @param data <CODE>SVMData</CODE> to initialize and mainitain
2 26 Feb 07 jari 96    * selected parameters.
2 26 Feb 07 jari 97    */    
2 26 Feb 07 jari 98   public SVMInitDialog(Frame MyParent, SVMData data) {
2 26 Feb 07 jari 99     super(MyParent, "SVM Initialization", true);
2 26 Feb 07 jari 100     
2 26 Feb 07 jari 101     origData = new SVMData(data);
2 26 Feb 07 jari 102     resultData = data;
2 26 Feb 07 jari 103     
2 26 Feb 07 jari 104     this.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
2 26 Feb 07 jari 105     this.setResizable(false);
2 26 Feb 07 jari 106     
2 26 Feb 07 jari 107     Listener listener = new Listener();
2 26 Feb 07 jari 108     addWindowListener(listener);
2 26 Feb 07 jari 109     
2 26 Feb 07 jari 110     panel1.setLayout(borderLayout1);
2 26 Feb 07 jari 111     panel3.setLayout(borderLayout3);
2 26 Feb 07 jari 112     panel4.setLayout(borderLayout4);
2 26 Feb 07 jari 113     insetsPanel.setLayout(gridLayout);
2 26 Feb 07 jari 114     panel3.setBorder(BorderFactory.createLineBorder(Color.gray));
2 26 Feb 07 jari 115     
2 26 Feb 07 jari 116     Parameters1.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), 
2 26 Feb 07 jari 117         "Classification Input", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 118         javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", Font.BOLD, 12), Color.black));
2 26 Feb 07 jari 119     
2 26 Feb 07 jari 120     Parameters1.setName("Classification Input");
2 26 Feb 07 jari 121     Parameters1.setBackground(Color.white);
2 26 Feb 07 jari 122     Parameters1.setForeground(Color.black);
2 26 Feb 07 jari 123     Parameters1.setLayout(new GridBagLayout());
2 26 Feb 07 jari 124     
2 26 Feb 07 jari 125     borderLayout5.setHgap(10);
2 26 Feb 07 jari 126     borderLayout6.setHgap(10);
2 26 Feb 07 jari 127     
2 26 Feb 07 jari 128     editorCheckBox = new JCheckBox("Use SVM Classification Editor", true);
2 26 Feb 07 jari 129     editorCheckBox.setBackground(Color.white);
2 26 Feb 07 jari 130     editorCheckBox.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 131     editorCheckBox.setFocusPainted(false);
2 26 Feb 07 jari 132     editorCheckBox.setActionCommand("use-editor-command");
2 26 Feb 07 jari 133     
2 26 Feb 07 jari 134     Parameters1.add(editorCheckBox, new GridBagConstraints(0, 0, 3, 1, 1.0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,10,10,10), 0, 0));
2 26 Feb 07 jari 135     
2 26 Feb 07 jari 136     chooseFileLabel = new JLabel("Use Classification File:");
2 26 Feb 07 jari 137     Parameters1.add( chooseFileLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,10,10,10), 0, 0));
2 26 Feb 07 jari 138     ChooseFileButton = new JButton("Choose");
2 26 Feb 07 jari 139     ChooseFileButton.setActionCommand("choose-file-command");
2 26 Feb 07 jari 140     ChooseFileButton.addActionListener( listener );
2 26 Feb 07 jari 141     ChooseFileButton.setFocusPainted(false);
2 26 Feb 07 jari 142     
2 26 Feb 07 jari 143     Parameters1.add(ChooseFileButton, new GridBagConstraints(2, 1, 1, 1, 0.0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,10,10,10), 0, 0));
2 26 Feb 07 jari 144     textField1 = new JTextField();
2 26 Feb 07 jari 145     textField1.setActionCommand("choose-file-command");
2 26 Feb 07 jari 146     textField1.addActionListener( listener );
2 26 Feb 07 jari 147     Parameters1.add(textField1,new GridBagConstraints(1, 1, 1, 1, 1.0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,10,10,10), 0, 0));
2 26 Feb 07 jari 148     
2 26 Feb 07 jari 149     disableFileSelection();
2 26 Feb 07 jari 150     editorCheckBox.addActionListener( listener );
2 26 Feb 07 jari 151     
2 26 Feb 07 jari 152     Parameters2.setBorder(BorderFactory.createEmptyBorder(10, 20, 20, 10));
2 26 Feb 07 jari 153     Parameters2.setName("Training Parameters");
2 26 Feb 07 jari 154     Parameters2.setBackground(Color.white);
2 26 Feb 07 jari 155     Parameters2.setForeground(Color.black);
2 26 Feb 07 jari 156     Parameters2.setLayout(new GridLayout(0,2,10,10));
2 26 Feb 07 jari 157     
2 26 Feb 07 jari 158     Parameters2.add(new JLabel("Constant"));
2 26 Feb 07 jari 159     textField2 = new JTextField(Float.toString( data.constant),7);
2 26 Feb 07 jari 160     Parameters2.add(textField2);
2 26 Feb 07 jari 161     
2 26 Feb 07 jari 162     Parameters2.add(new JLabel("Coefficient  "));
2 26 Feb 07 jari 163     textField3 = new JTextField(Float.toString(data.coefficient),7);
2 26 Feb 07 jari 164     Parameters2.add(textField3);
2 26 Feb 07 jari 165     
2 26 Feb 07 jari 166     Parameters2.add(new JLabel("Power  "));
2 26 Feb 07 jari 167     
2 26 Feb 07 jari 168     textField4 = new JTextField(Float.toString(data.power),7);
2 26 Feb 07 jari 169     Parameters2.add(textField4);
2 26 Feb 07 jari 170     
2 26 Feb 07 jari 171     Parameters2.add(new JLabel("Diag. factor"));
2 26 Feb 07 jari 172     textField8 = new JTextField(Float.toString(data.diagonalFactor),7);
2 26 Feb 07 jari 173     Parameters2.add(textField8);
2 26 Feb 07 jari 174     
2 26 Feb 07 jari 175     Parameters2.add(new JLabel("Threshold"));
2 26 Feb 07 jari 176     textField9 = new JTextField(Float.toString(data.convergenceThreshold),7);
2 26 Feb 07 jari 177     Parameters2.add(textField9);
2 26 Feb 07 jari 178     
2 26 Feb 07 jari 179     Parameters3.setBorder(BorderFactory.createEmptyBorder(10, 20, 20, 20));
2 26 Feb 07 jari 180     Parameters3.setBackground(Color.white);
2 26 Feb 07 jari 181     Parameters3.setForeground(Color.black);
2 26 Feb 07 jari 182     Parameters3.setLayout(new GridLayout(0,2,10,10));
2 26 Feb 07 jari 183     
2 26 Feb 07 jari 184     CheckBoxListener MyListener = new CheckBoxListener();
2 26 Feb 07 jari 185     
2 26 Feb 07 jari 186     CheckBox1 = new JCheckBox("Radial");
2 26 Feb 07 jari 187     if (data.radial) {
2 26 Feb 07 jari 188       CheckBox1.setSelected(true);
2 26 Feb 07 jari 189     } else {
2 26 Feb 07 jari 190       CheckBox1.setSelected(false);
2 26 Feb 07 jari 191     }
2 26 Feb 07 jari 192     CheckBox1.setFocusPainted(false);
2 26 Feb 07 jari 193     CheckBox1.setBackground(Color.white);
2 26 Feb 07 jari 194     CheckBox1.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 195     CheckBox1.addItemListener(MyListener);
2 26 Feb 07 jari 196     
2 26 Feb 07 jari 197     Parameters3.add(CheckBox1);
2 26 Feb 07 jari 198     
2 26 Feb 07 jari 199     CheckBox2 = new JCheckBox("Normalize");
2 26 Feb 07 jari 200     if (data.normalize) {
2 26 Feb 07 jari 201       CheckBox2.setSelected(true);
2 26 Feb 07 jari 202     } else {
2 26 Feb 07 jari 203       CheckBox2.setSelected(false);
2 26 Feb 07 jari 204     }
2 26 Feb 07 jari 205     CheckBox2.setFocusPainted(false);
2 26 Feb 07 jari 206     CheckBox2.setBackground(Color.white);
2 26 Feb 07 jari 207     CheckBox2.setForeground(UIManager.getColor("Label.foreground"));
2 26 Feb 07 jari 208     CheckBox2.addItemListener(MyListener);
2 26 Feb 07 jari 209     CheckBox2.setVisible(false);
2 26 Feb 07 jari 210     CheckBox2.setEnabled(false);
2 26 Feb 07 jari 211     Parameters3.add(CheckBox2);
2 26 Feb 07 jari 212     
2 26 Feb 07 jari 213     Label1=new JLabel("Width factor");
2 26 Feb 07 jari 214     textField5 = new JTextField(Float.toString(data.widthFactor),7);
2 26 Feb 07 jari 215     if (data.radial) {
2 26 Feb 07 jari 216       Label1.setEnabled(true);
2 26 Feb 07 jari 217       textField5.setEnabled(true);
2 26 Feb 07 jari 218     } else {
2 26 Feb 07 jari 219       Label1.setEnabled(false);
2 26 Feb 07 jari 220       textField5.setEnabled(false);
2 26 Feb 07 jari 221     }
2 26 Feb 07 jari 222     Parameters3.add(Label1);
2 26 Feb 07 jari 223     Parameters3.add(textField5);
2 26 Feb 07 jari 224     
2 26 Feb 07 jari 225     CheckBox3 = new JCheckBox("Constraints");
2 26 Feb 07 jari 226     if (data.constrainWeights) {
2 26 Feb 07 jari 227       CheckBox3.setSelected(true);
2 26 Feb 07 jari 228     } else {
2 26 Feb 07 jari 229       CheckBox3.setSelected(false);
2 26 Feb 07 jari 230     }
2 26 Feb 07 jari 231     CheckBox3.setFocusPainted(false);
2 26 Feb 07 jari 232     CheckBox3.setBackground(Color.white);
2 26 Feb 07 jari 233     CheckBox3.setForeground(Color.black);
2 26 Feb 07 jari 234     CheckBox3.addItemListener(MyListener);
2 26 Feb 07 jari 235     Parameters3.add(CheckBox3);
2 26 Feb 07 jari 236     
2 26 Feb 07 jari 237     Parameters3.add(new JLabel(""));
2 26 Feb 07 jari 238     
2 26 Feb 07 jari 239     Label2=new JLabel("Pos. constraint");
2 26 Feb 07 jari 240     Label2.setEnabled(false);
2 26 Feb 07 jari 241     
2 26 Feb 07 jari 242     textField6 = new JTextField(Float.toString(1),7);
2 26 Feb 07 jari 243     textField6.setEnabled(false);
2 26 Feb 07 jari 244     
2 26 Feb 07 jari 245     Label3=new JLabel("Neg. constraint");
2 26 Feb 07 jari 246     Label3.setEnabled(false);
2 26 Feb 07 jari 247     Parameters3.add(Label3);
2 26 Feb 07 jari 248     
2 26 Feb 07 jari 249     textField7 = new JTextField(Float.toString(1),7);
2 26 Feb 07 jari 250     textField7.setEnabled(false);
2 26 Feb 07 jari 251     
2 26 Feb 07 jari 252     if (data.constrainWeights) {
2 26 Feb 07 jari 253       Label2.setEnabled(true);
2 26 Feb 07 jari 254       Label3.setEnabled(true);
2 26 Feb 07 jari 255       textField6.setEnabled(true);
2 26 Feb 07 jari 256       textField7.setEnabled(true);
2 26 Feb 07 jari 257     } else {
2 26 Feb 07 jari 258       Label2.setEnabled(false);
2 26 Feb 07 jari 259       Label3.setEnabled(false);
2 26 Feb 07 jari 260       textField6.setEnabled(false);
2 26 Feb 07 jari 261       textField7.setEnabled(false);
2 26 Feb 07 jari 262     }
2 26 Feb 07 jari 263     
2 26 Feb 07 jari 264     Parameters3.add(Label2);
2 26 Feb 07 jari 265     Parameters3.add(textField6);
2 26 Feb 07 jari 266     Parameters3.add(Label3);
2 26 Feb 07 jari 267     Parameters3.add(textField7);
2 26 Feb 07 jari 268     
2 26 Feb 07 jari 269     gridLayout.setRows(2);
2 26 Feb 07 jari 270     gridLayout.setColumns(1);
2 26 Feb 07 jari 271     
2 26 Feb 07 jari 272     panel1.add(panel3, BorderLayout.NORTH);
2 26 Feb 07 jari 273     panel3.add(panel4, BorderLayout.CENTER);
2 26 Feb 07 jari 274     panel4.add(Parameters1, BorderLayout.NORTH);
2 26 Feb 07 jari 275     
2 26 Feb 07 jari 276     JPanel trainingPanel = new JPanel();
2 26 Feb 07 jari 277     trainingPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), 
2 26 Feb 07 jari 278         "Training Parameters", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
2 26 Feb 07 jari 279         javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", Font.BOLD, 12), Color.black));
2 26 Feb 07 jari 280     trainingPanel.setBackground(Color.white);
2 26 Feb 07 jari 281     trainingPanel.setLayout(new BorderLayout());
2 26 Feb 07 jari 282     trainingPanel.add(Parameters2, BorderLayout.WEST);
2 26 Feb 07 jari 283     trainingPanel.add(Parameters3, BorderLayout.CENTER);
2 26 Feb 07 jari 284     
2 26 Feb 07 jari 285     panel4.add(trainingPanel, BorderLayout.SOUTH);
2 26 Feb 07 jari 286     
2 26 Feb 07 jari 287     addContent(panel1);
2 26 Feb 07 jari 288     setActionListeners(listener);
2 26 Feb 07 jari 289     this.pack();
2 26 Feb 07 jari 290   }
2 26 Feb 07 jari 291   
2 26 Feb 07 jari 292   protected void processWindowEvent(WindowEvent e) {
2 26 Feb 07 jari 293     if (e.getID() == WindowEvent.WINDOW_CLOSING) {
2 26 Feb 07 jari 294       dispose();
2 26 Feb 07 jari 295     }
2 26 Feb 07 jari 296     super.processWindowEvent(e);
2 26 Feb 07 jari 297   }
2 26 Feb 07 jari 298   
2 26 Feb 07 jari 299   /**
2 26 Feb 07 jari 300    * Launches file chooser
2 26 Feb 07 jari 301    */    
2 26 Feb 07 jari 302   protected void onChooseFile() {
2 26 Feb 07 jari 303     final JFileChooser fc = new JFileChooser(TMEV.getFile("data/"));
2 26 Feb 07 jari 304     fc.setCurrentDirectory(new File("Data"));
2 26 Feb 07 jari 305     fc.addChoosableFileFilter(new ClassificationFileFilter());
2 26 Feb 07 jari 306     fc.setFileView(new ClassificationFileView());
2 26 Feb 07 jari 307     int returnVal = fc.showOpenDialog( this );
2 26 Feb 07 jari 308     if (returnVal == JFileChooser.APPROVE_OPTION) {
2 26 Feb 07 jari 309       resultData.classificationFile = fc.getSelectedFile();
2 26 Feb 07 jari 310       textField1.setText(resultData.classificationFile.getName());
2 26 Feb 07 jari 311     }
2 26 Feb 07 jari 312   }
2 26 Feb 07 jari 313   
2 26 Feb 07 jari 314   /**
2 26 Feb 07 jari 315    * Displays dialog for user interaction
2 26 Feb 07 jari 316    */    
2 26 Feb 07 jari 317   public int showModal() {
2 26 Feb 07 jari 318     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 319     setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 320     show();
2 26 Feb 07 jari 321     return result;
2 26 Feb 07 jari 322   }
2 26 Feb 07 jari 323   
2 26 Feb 07 jari 324   /**
2 26 Feb 07 jari 325    * Returns SVMData containing the current parameter
2 26 Feb 07 jari 326    * selection
2 26 Feb 07 jari 327    * @return contains current selection
2 26 Feb 07 jari 328    */    
2 26 Feb 07 jari 329   public SVMData getData() {
2 26 Feb 07 jari 330     return resultData;
2 26 Feb 07 jari 331   }
2 26 Feb 07 jari 332   
2 26 Feb 07 jari 333   /**
2 26 Feb 07 jari 334    * Disables SVC file chooser option
2 26 Feb 07 jari 335    */    
2 26 Feb 07 jari 336   private void disableFileSelection(){
2 26 Feb 07 jari 337     chooseFileLabel.setEnabled(false);
2 26 Feb 07 jari 338     textField1.setEnabled(false);
2 26 Feb 07 jari 339     ChooseFileButton.setEnabled(false);
2 26 Feb 07 jari 340   }
2 26 Feb 07 jari 341   
2 26 Feb 07 jari 342   /**
2 26 Feb 07 jari 343    * Enables SVC file chooser selection
2 26 Feb 07 jari 344    */    
2 26 Feb 07 jari 345   private void enableFileSelection(){
2 26 Feb 07 jari 346     chooseFileLabel.setEnabled(true);
2 26 Feb 07 jari 347     textField1.setEnabled(true);
2 26 Feb 07 jari 348     ChooseFileButton.setEnabled(true);
2 26 Feb 07 jari 349   }
2 26 Feb 07 jari 350   
2 26 Feb 07 jari 351   
2 26 Feb 07 jari 352   /**
2 26 Feb 07 jari 353    * Collects data from the dialog and stores in resident
2 26 Feb 07 jari 354    * <CODE>SVMData</CODE>
2 26 Feb 07 jari 355    * @throws Exception thows exception if format is bad
2 26 Feb 07 jari 356    */    
2 26 Feb 07 jari 357   protected boolean parseData() {
2 26 Feb 07 jari 358     try{
2 26 Feb 07 jari 359       resultData.constant=Float.parseFloat( textField2.getText() );
2 26 Feb 07 jari 360       resultData.coefficient=Float.parseFloat( textField3.getText() );
2 26 Feb 07 jari 361       resultData.power=Float.parseFloat( textField4.getText() );
2 26 Feb 07 jari 362       resultData.diagonalFactor=Float.parseFloat(textField8.getText());
2 26 Feb 07 jari 363       resultData.convergenceThreshold=Float.parseFloat(textField9.getText());
2 26 Feb 07 jari 364       resultData.widthFactor=Float.parseFloat(textField5.getText());
2 26 Feb 07 jari 365       resultData.positiveConstraint=Float.parseFloat(textField6.getText());
2 26 Feb 07 jari 366       resultData.negativeConstraint=Float.parseFloat(textField7.getText());
2 26 Feb 07 jari 367       resultData.radial=CheckBox1.isSelected();
2 26 Feb 07 jari 368       //resultData.normalize=CheckBox2.isSelected();
2 26 Feb 07 jari 369       resultData.normalize = false;  //JB now using normalized dot prod. kernel by defaultd^2(x,y) = K(x,x) - 2 K(x,y) + K(y,y)
2 26 Feb 07 jari 370       resultData.constrainWeights=CheckBox3.isSelected();
2 26 Feb 07 jari 371       resultData.useEditor = editorCheckBox.isSelected();
2 26 Feb 07 jari 372     } catch (NumberFormatException e) {
2 26 Feb 07 jari 373       JOptionPane.showMessageDialog(SVMInitDialog.this, "Entry format error. "+e.getMessage()+" is not valid input.  Please try again.", "Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 374       return false;
2 26 Feb 07 jari 375     }
2 26 Feb 07 jari 376     if(!resultData.validate(this))
2 26 Feb 07 jari 377       return false;
2 26 Feb 07 jari 378     return true;
2 26 Feb 07 jari 379   }
2 26 Feb 07 jari 380   
2 26 Feb 07 jari 381   
2 26 Feb 07 jari 382   public void resetControls(){
2 26 Feb 07 jari 383     
2 26 Feb 07 jari 384     editorCheckBox.setSelected(origData.useEditor);
2 26 Feb 07 jari 385     if(!origData.useEditor && origData.classificationFile != null)
2 26 Feb 07 jari 386       textField1.setText(origData.classificationFile.getPath());
2 26 Feb 07 jari 387     else
2 26 Feb 07 jari 388       textField1.setText("");
2 26 Feb 07 jari 389     textField2.setText(Float.toString(origData.constant)) ;
2 26 Feb 07 jari 390     textField3.setText(Float.toString(origData.coefficient));
2 26 Feb 07 jari 391     textField4.setText(Float.toString(origData.power));
2 26 Feb 07 jari 392     textField8.setText(Float.toString(origData.diagonalFactor));
2 26 Feb 07 jari 393     
2 26 Feb 07 jari 394     textField9.setText(Float.toString(origData.convergenceThreshold));
2 26 Feb 07 jari 395     textField5.setText(Float.toString(origData.widthFactor));
2 26 Feb 07 jari 396     textField6.setText(Float.toString(origData.positiveConstraint));
2 26 Feb 07 jari 397     
2 26 Feb 07 jari 398     textField7.setText(Float.toString(origData.negativeConstraint));
2 26 Feb 07 jari 399     CheckBox1.setSelected(origData.radial);
2 26 Feb 07 jari 400     CheckBox2.setSelected(false);
2 26 Feb 07 jari 401     CheckBox3.setSelected(origData.constrainWeights);
2 26 Feb 07 jari 402     editorCheckBox.setSelected(origData.useEditor);
2 26 Feb 07 jari 403     
2 26 Feb 07 jari 404   }
2 26 Feb 07 jari 405   
2 26 Feb 07 jari 406   public static void main(String [] args){
2 26 Feb 07 jari 407     SVMInitDialog dialog = new SVMInitDialog(new java.awt.Frame(), new SVMData());
2 26 Feb 07 jari 408     dialog.show();
2 26 Feb 07 jari 409     System.exit(0);
2 26 Feb 07 jari 410   }
2 26 Feb 07 jari 411   
2 26 Feb 07 jari 412   /**
2 26 Feb 07 jari 413    * Listens for state of SVC file/editor selection
2 26 Feb 07 jari 414    */    
2 26 Feb 07 jari 415   class CheckBoxListener implements ItemListener {
2 26 Feb 07 jari 416     public void itemStateChanged(ItemEvent e) {
2 26 Feb 07 jari 417       
2 26 Feb 07 jari 418       Object source = e.getItemSelectable();
2 26 Feb 07 jari 419       
2 26 Feb 07 jari 420       if (source == CheckBox1) {
2 26 Feb 07 jari 421         if (CheckBox1.isSelected()) {
2 26 Feb 07 jari 422           Label1.setEnabled(true);
2 26 Feb 07 jari 423           textField5.setEnabled(true);
2 26 Feb 07 jari 424         } else {
2 26 Feb 07 jari 425           Label1.setEnabled(false);
2 26 Feb 07 jari 426           textField5.setEnabled(false);
2 26 Feb 07 jari 427         }
2 26 Feb 07 jari 428       } else if (source == CheckBox3) {
2 26 Feb 07 jari 429         if (CheckBox3.isSelected()) {
2 26 Feb 07 jari 430           Label2.setEnabled(true);
2 26 Feb 07 jari 431           Label3.setEnabled(true);
2 26 Feb 07 jari 432           textField6.setEnabled(true);
2 26 Feb 07 jari 433           textField7.setEnabled(true);
2 26 Feb 07 jari 434         } else {
2 26 Feb 07 jari 435           Label2.setEnabled(false);
2 26 Feb 07 jari 436           Label3.setEnabled(false);
2 26 Feb 07 jari 437           textField6.setEnabled(false);
2 26 Feb 07 jari 438           textField7.setEnabled(false);
2 26 Feb 07 jari 439         }
2 26 Feb 07 jari 440       }
2 26 Feb 07 jari 441     }
2 26 Feb 07 jari 442   }
2 26 Feb 07 jari 443   
2 26 Feb 07 jari 444   private class Listener extends DialogListener {
2 26 Feb 07 jari 445     public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 446       String command = e.getActionCommand();
2 26 Feb 07 jari 447       if (command.equals("ok-command")) {
2 26 Feb 07 jari 448         try {                    
2 26 Feb 07 jari 449           if(parseData())
2 26 Feb 07 jari 450             result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 451           else
2 26 Feb 07 jari 452             return;
2 26 Feb 07 jari 453         } catch (Exception exception) {
2 26 Feb 07 jari 454           exception.printStackTrace();
2 26 Feb 07 jari 455           result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 456         }
2 26 Feb 07 jari 457         dispose();
2 26 Feb 07 jari 458       } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 459         result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 460         dispose();
2 26 Feb 07 jari 461       } else if (command.equals("choose-file-command")){
2 26 Feb 07 jari 462         onChooseFile();
2 26 Feb 07 jari 463       } else if (command.equals("use-editor-command")){
2 26 Feb 07 jari 464         if(editorCheckBox.isSelected())
2 26 Feb 07 jari 465           disableFileSelection();
2 26 Feb 07 jari 466         else
2 26 Feb 07 jari 467           enableFileSelection();
2 26 Feb 07 jari 468       } else if (command.equals("reset-command")){
2 26 Feb 07 jari 469         resetControls();
2 26 Feb 07 jari 470       } else if (command.equals("info-command")){
2 26 Feb 07 jari 471         HelpWindow hw = new HelpWindow(SVMInitDialog.this, "SVM Training Initialization Dialog");
2 26 Feb 07 jari 472         result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 473         if(hw.getWindowContent()){
2 26 Feb 07 jari 474           hw.setSize(450,600);
2 26 Feb 07 jari 475           hw.setLocation();
2 26 Feb 07 jari 476           hw.show();
2 26 Feb 07 jari 477           return;
2 26 Feb 07 jari 478         }
2 26 Feb 07 jari 479         else {
2 26 Feb 07 jari 480           hw.setVisible(false);
2 26 Feb 07 jari 481           hw.dispose();
2 26 Feb 07 jari 482           return;
2 26 Feb 07 jari 483         }
2 26 Feb 07 jari 484       }
2 26 Feb 07 jari 485       
2 26 Feb 07 jari 486     }
2 26 Feb 07 jari 487     
2 26 Feb 07 jari 488     public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 489       result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 490       dispose();
2 26 Feb 07 jari 491     }
2 26 Feb 07 jari 492   }
2 26 Feb 07 jari 493   
2 26 Feb 07 jari 494 }