mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/usc/USCAssignLabel.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * Created on Nov 23, 2004
2 26 Feb 07 jari 3  */
2 26 Feb 07 jari 4 package org.tigr.microarray.mev.cluster.gui.impl.usc;
2 26 Feb 07 jari 5
2 26 Feb 07 jari 6 import java.awt.BorderLayout;
2 26 Feb 07 jari 7 import java.awt.Color;
2 26 Feb 07 jari 8 import java.awt.Dimension;
2 26 Feb 07 jari 9 import java.awt.Font;
2 26 Feb 07 jari 10 import java.awt.Toolkit;
2 26 Feb 07 jari 11 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 12 import java.awt.event.ActionListener;
2 26 Feb 07 jari 13 import java.awt.event.ItemEvent;
2 26 Feb 07 jari 14 import java.awt.event.ItemListener;
2 26 Feb 07 jari 15 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 16
2 26 Feb 07 jari 17 import javax.swing.BorderFactory;
2 26 Feb 07 jari 18 import javax.swing.Box;
2 26 Feb 07 jari 19 import javax.swing.BoxLayout;
2 26 Feb 07 jari 20 import javax.swing.JButton;
2 26 Feb 07 jari 21 import javax.swing.JFrame;
2 26 Feb 07 jari 22 import javax.swing.JOptionPane;
2 26 Feb 07 jari 23 import javax.swing.JPanel;
2 26 Feb 07 jari 24 import javax.swing.SpringLayout;
2 26 Feb 07 jari 25 import javax.swing.border.Border;
2 26 Feb 07 jari 26 import javax.swing.border.TitledBorder;
2 26 Feb 07 jari 27
2 26 Feb 07 jari 28 import org.tigr.microarray.mev.r.ClassAssigner;
2 26 Feb 07 jari 29 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 31 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 32
2 26 Feb 07 jari 33 /**
2 26 Feb 07 jari 34  * Dialog box for user to choose what type of analysis to run.  If training, user
2 26 Feb 07 jari 35  * enters the class labels here.
2 26 Feb 07 jari 36  * 
2 26 Feb 07 jari 37  * @author vu
2 26 Feb 07 jari 38  */
2 26 Feb 07 jari 39 public class USCAssignLabel extends AlgorithmDialog {
2 26 Feb 07 jari 40   private int result;
2 26 Feb 07 jari 41   
2 26 Feb 07 jari 42   private String[] userLabelArray;
2 26 Feb 07 jari 43   
2 26 Feb 07 jari 44   private JPanel mainPanel;
2 26 Feb 07 jari 45   
2 26 Feb 07 jari 46   //private Vector vCombo;
2 26 Feb 07 jari 47   //private Vector vLabel;
2 26 Feb 07 jari 48   
2 26 Feb 07 jari 49   private JButton loadButton;
2 26 Feb 07 jari 50   private JButton saveButton;
2 26 Feb 07 jari 51   
2 26 Feb 07 jari 52   private ClassAssigner ca;
2 26 Feb 07 jari 53   
2 26 Feb 07 jari 54
2 26 Feb 07 jari 55   /**
2 26 Feb 07 jari 56    * 
2 26 Feb 07 jari 57    * @param hybArray    [ String ] of hyb names
2 26 Feb 07 jari 58    * @param labelArray  [ String ] of labels entered by user in ClassDialog
2 26 Feb 07 jari 59    */
2 26 Feb 07 jari 60   public USCAssignLabel( String[] hybArray, String[] labelArray ) {
2 26 Feb 07 jari 61     super( new JFrame(), "USCAssignLabel", true );
2 26 Feb 07 jari 62     
2 26 Feb 07 jari 63     this.userLabelArray = labelArray;
2 26 Feb 07 jari 64     
2 26 Feb 07 jari 65     /*
2 26 Feb 07 jari 66     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 67     if( ( ( hybArray.length * 20 ) + 150 ) > screenSize.getHeight() ) {
2 26 Feb 07 jari 68       this.setSize( 555, ( int ) screenSize.getHeight() - 50 );
2 26 Feb 07 jari 69     } else {
2 26 Feb 07 jari 70       this.setSize( 555, ( hybArray.length * 20 ) + 150 );
2 26 Feb 07 jari 71     }
2 26 Feb 07 jari 72     */
2 26 Feb 07 jari 73     this.setSize( 555, 600 );
2 26 Feb 07 jari 74     
2 26 Feb 07 jari 75     //this.initializeGUI( hybArray, this.userLabelArray );
2 26 Feb 07 jari 76     this.initGUI( hybArray, labelArray );
2 26 Feb 07 jari 77     
2 26 Feb 07 jari 78     //add the AlgorithmDialog Listener
2 26 Feb 07 jari 79     Listener l = new Listener();
2 26 Feb 07 jari 80     super.addWindowListener( l );
2 26 Feb 07 jari 81     super.setActionListeners( l );
2 26 Feb 07 jari 82   }//end constructor
2 26 Feb 07 jari 83   
2 26 Feb 07 jari 84   
2 26 Feb 07 jari 85   private void initGUI( String[] hybs, String[] labels ) {
2 26 Feb 07 jari 86     Dimension dLabel = new Dimension( 350, 20 );
2 26 Feb 07 jari 87     Dimension dCombo = new Dimension( 150, 20 );
2 26 Feb 07 jari 88     
2 26 Feb 07 jari 89     int iHyb = hybs.length;
2 26 Feb 07 jari 90     int iLabel = labels.length;
2 26 Feb 07 jari 91     
2 26 Feb 07 jari 92     JPanel selectionPanel = new JPanel( new SpringLayout() );
2 26 Feb 07 jari 93     selectionPanel.setBorder( BorderFactory.createTitledBorder( "Assign Labels" ) );
2 26 Feb 07 jari 94     
2 26 Feb 07 jari 95     this.ca = new ClassAssigner( hybs, labels, true, 3 );
2 26 Feb 07 jari 96     //JPanel assignPanel = this.ca.getMainPanel();
2 26 Feb 07 jari 97     
2 26 Feb 07 jari 98     //JScrollPane jsp = new JScrollPane( assignPanel );
2 26 Feb 07 jari 99     
2 26 Feb 07 jari 100     this.mainPanel = new JPanel();
2 26 Feb 07 jari 101     this.mainPanel.add( this.ca.getScrollPane(), BorderLayout.NORTH );
2 26 Feb 07 jari 102     this.mainPanel.add( this.createButtonPanel(), BorderLayout.SOUTH );
2 26 Feb 07 jari 103     this.addContent( this.mainPanel );
2 26 Feb 07 jari 104   }
2 26 Feb 07 jari 105   
2 26 Feb 07 jari 106   
2 26 Feb 07 jari 107   private JPanel createButtonPanel() {
2 26 Feb 07 jari 108     JPanel toReturn = new JPanel();
2 26 Feb 07 jari 109     toReturn.setLayout( new BoxLayout( toReturn, BoxLayout.X_AXIS ) );
2 26 Feb 07 jari 110     
2 26 Feb 07 jari 111     Dimension dButton = new Dimension( 150, 20 );
2 26 Feb 07 jari 112     
2 26 Feb 07 jari 113     String title = "Assignments Files";
2 26 Feb 07 jari 114     Border greyLine = BorderFactory.createLineBorder( Color.LIGHT_GRAY, 1 );
2 26 Feb 07 jari 115     Font font11 = new Font( "Arial", Font.PLAIN, 11 );
2 26 Feb 07 jari 116     TitledBorder border = BorderFactory.createTitledBorder( greyLine, 
2 26 Feb 07 jari 117         title, TitledBorder.LEADING, TitledBorder.TOP, font11 );
2 26 Feb 07 jari 118     toReturn.setBorder( border );
2 26 Feb 07 jari 119     
2 26 Feb 07 jari 120     this.loadButton = new JButton( "Load Assignments" );
2 26 Feb 07 jari 121     this.loadButton.setPreferredSize( dButton );
2 26 Feb 07 jari 122     
2 26 Feb 07 jari 123     this.saveButton = new JButton( "Save Assignments" );
2 26 Feb 07 jari 124     this.saveButton.setPreferredSize( dButton );
2 26 Feb 07 jari 125     
2 26 Feb 07 jari 126     //add listener
2 26 Feb 07 jari 127     AdvListener al = new AdvListener();
2 26 Feb 07 jari 128     this.loadButton.addActionListener( al );
2 26 Feb 07 jari 129     this.saveButton.addActionListener( al );
2 26 Feb 07 jari 130     
2 26 Feb 07 jari 131     toReturn.add( Box.createHorizontalGlue() );
2 26 Feb 07 jari 132     toReturn.add( this.saveButton );
2 26 Feb 07 jari 133     toReturn.add( Box.createRigidArea( new Dimension( 50, 20 ) ) );
2 26 Feb 07 jari 134     toReturn.add( this.loadButton );
2 26 Feb 07 jari 135     toReturn.add( Box.createHorizontalGlue() );
2 26 Feb 07 jari 136     
2 26 Feb 07 jari 137     return toReturn;
2 26 Feb 07 jari 138   }
2 26 Feb 07 jari 139   
2 26 Feb 07 jari 140   
2 26 Feb 07 jari 141   /**
2 26 Feb 07 jari 142    * Displays a dialog box with a message
2 26 Feb 07 jari 143    * @param message
2 26 Feb 07 jari 144    */
2 26 Feb 07 jari 145   private void error( String message ) {
2 26 Feb 07 jari 146     JOptionPane.showMessageDialog( this, message, "Input Error", JOptionPane.ERROR_MESSAGE );
2 26 Feb 07 jari 147   }//end error()
2 26 Feb 07 jari 148   
2 26 Feb 07 jari 149     
2 26 Feb 07 jari 150   /**
2 26 Feb 07 jari 151    * Shows this AlgorithmDialog
2 26 Feb 07 jari 152    * @return  
2 26 Feb 07 jari 153    */
2 26 Feb 07 jari 154   public int showModal() {
2 26 Feb 07 jari 155     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 156     setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 157     show();
2 26 Feb 07 jari 158     return result;
2 26 Feb 07 jari 159   }//end showModal()
2 26 Feb 07 jari 160   
2 26 Feb 07 jari 161   
2 26 Feb 07 jari 162   /**
2 26 Feb 07 jari 163    * 
2 26 Feb 07 jari 164    * @author iVu
2 26 Feb 07 jari 165    */
2 26 Feb 07 jari 166   private class AdvListener implements ActionListener {
2 26 Feb 07 jari 167     public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 168       Object source = e.getSource();
2 26 Feb 07 jari 169       
2 26 Feb 07 jari 170       if( source == loadButton ) {
2 26 Feb 07 jari 171         ca.onLoadAssignments();
2 26 Feb 07 jari 172       } else if( source == saveButton ) {
2 26 Feb 07 jari 173         ca.onSaveAssignments();
2 26 Feb 07 jari 174       }
2 26 Feb 07 jari 175     }//end actionPerformed()
2 26 Feb 07 jari 176   }//end class
2 26 Feb 07 jari 177   
2 26 Feb 07 jari 178     
2 26 Feb 07 jari 179   /**
2 26 Feb 07 jari 180    * The class to listen to the dialog and check boxes items events.
2 26 Feb 07 jari 181    */
2 26 Feb 07 jari 182   private class Listener extends DialogListener implements ItemListener {
2 26 Feb 07 jari 183         
2 26 Feb 07 jari 184     public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 185       String command = e.getActionCommand();
2 26 Feb 07 jari 186       if (command.equals("ok-command")) {
2 26 Feb 07 jari 187         if( ca.verifyLabeling() ) {
2 26 Feb 07 jari 188           result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 189           dispose();
2 26 Feb 07 jari 190         } else {
2 26 Feb 07 jari 191           //do nothing
2 26 Feb 07 jari 192         }
2 26 Feb 07 jari 193         /*
2 26 Feb 07 jari 194         if( validateLabels() ) {
2 26 Feb 07 jari 195           result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 196           dispose();
2 26 Feb 07 jari 197         } else {
2 26 Feb 07 jari 198           //do nothing
2 26 Feb 07 jari 199         }
2 26 Feb 07 jari 200         */
2 26 Feb 07 jari 201       } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 202         result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 203         dispose();
2 26 Feb 07 jari 204       } else if (command.equals("reset-command")) {
2 26 Feb 07 jari 205         //resetControls();
2 26 Feb 07 jari 206         result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 207         return;
2 26 Feb 07 jari 208       } else if (command.equals("info-command")) {
2 26 Feb 07 jari 209         HelpWindow hw = new HelpWindow(USCAssignLabel.this, "USC Assign Label Dialog");
2 26 Feb 07 jari 210         result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 211         if(hw.getWindowContent()){
2 26 Feb 07 jari 212           hw.setSize(450,600);
2 26 Feb 07 jari 213           hw.setLocation();
2 26 Feb 07 jari 214           hw.show();
2 26 Feb 07 jari 215           return;
2 26 Feb 07 jari 216         } else {
2 26 Feb 07 jari 217           hw.setVisible(false);
2 26 Feb 07 jari 218           hw.dispose();
2 26 Feb 07 jari 219           return;
2 26 Feb 07 jari 220         }
2 26 Feb 07 jari 221       }
2 26 Feb 07 jari 222       //dispose();
2 26 Feb 07 jari 223     }//end actionPerformed()
2 26 Feb 07 jari 224         
2 26 Feb 07 jari 225     public void itemStateChanged(ItemEvent e) {
2 26 Feb 07 jari 226       //okButton.setEnabled(genes_box.isSelected() || cluster_box.isSelected());
2 26 Feb 07 jari 227     }
2 26 Feb 07 jari 228         
2 26 Feb 07 jari 229     public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 230       result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 231       dispose();
2 26 Feb 07 jari 232     }
2 26 Feb 07 jari 233   }//end internal Listener class
2 26 Feb 07 jari 234   
2 26 Feb 07 jari 235   
2 26 Feb 07 jari 236   public static void main( String[] args ) {
2 26 Feb 07 jari 237     System.out.println( "invoked by main()" );
2 26 Feb 07 jari 238     
2 26 Feb 07 jari 239     String[] hybs = { "011101_16011521000000_S01_A01.txt", 
2 26 Feb 07 jari 240       "011101_16011521000001_S01_A01.txt", 
2 26 Feb 07 jari 241       "011101_16011521000002_S01_A01.txt", 
2 26 Feb 07 jari 242       "011101_16011521000003_S01_A01.txt", 
2 26 Feb 07 jari 243       "011101_16011521000004_S01_A01.txt", 
2 26 Feb 07 jari 244       "011101_16011521000005_S01_A01.txt", 
2 26 Feb 07 jari 245       "011101_16011521000006_S01_A01.txt", 
2 26 Feb 07 jari 246       "011101_16011521000007_S01_A01.txt", 
2 26 Feb 07 jari 247       "011101_16011521000008_S01_A01.txt", 
2 26 Feb 07 jari 248       "011101_16011521000009_S01_A01.txt", 
2 26 Feb 07 jari 249       "011101_16011521000010_S01_A01.txt", 
2 26 Feb 07 jari 250        };
2 26 Feb 07 jari 251     String[] labels = { "tumor", "normal", "flu"  };
2 26 Feb 07 jari 252     
2 26 Feb 07 jari 253     USCAssignLabel d = new USCAssignLabel( hybs, labels );
2 26 Feb 07 jari 254     d.showModal();
2 26 Feb 07 jari 255   }
2 26 Feb 07 jari 256   
2 26 Feb 07 jari 257   
2 26 Feb 07 jari 258   //--------------------------------------Getters & Setters----------------------------------
2 26 Feb 07 jari 259   public String[] getHybLabels() {
2 26 Feb 07 jari 260     String[] toReturn = new String[ this.ca.getVComboBox().size() ];
2 26 Feb 07 jari 261     
2 26 Feb 07 jari 262     for( int i = 0; i < this.ca.getVComboBox().size(); i ++ ) {
2 26 Feb 07 jari 263       toReturn[ i ] = this.ca.getSelectedString( i );
2 26 Feb 07 jari 264     }
2 26 Feb 07 jari 265     
2 26 Feb 07 jari 266     return toReturn;
2 26 Feb 07 jari 267   }
2 26 Feb 07 jari 268 }//end class
2 26 Feb 07 jari 269
2 26 Feb 07 jari 270
2 26 Feb 07 jari 271
2 26 Feb 07 jari 272
2 26 Feb 07 jari 273
2 26 Feb 07 jari 274 /**
2 26 Feb 07 jari 275  * 
2 26 Feb 07 jari 276  * @param hybArray
2 26 Feb 07 jari 277  * @param labelArray
2 26 Feb 07 jari 278  */
2 26 Feb 07 jari 279 /*
2 26 Feb 07 jari 280 private void initializeGUI( String[] hybArray, String[] labelArray ) {
2 26 Feb 07 jari 281   Dimension dLabel = new Dimension( 350, 20 );
2 26 Feb 07 jari 282   Dimension dCombo = new Dimension( 150, 20 );
2 26 Feb 07 jari 283   
2 26 Feb 07 jari 284   int iHyb = hybArray.length;
2 26 Feb 07 jari 285   int iLabel = labelArray.length;
2 26 Feb 07 jari 286   
2 26 Feb 07 jari 287   //this.vCombo = new Vector();
2 26 Feb 07 jari 288   //this.vLabel = new Vector();
2 26 Feb 07 jari 289   
2 26 Feb 07 jari 290   //
2 26 Feb 07 jari 291   JPanel selectionPanel = new JPanel( new SpringLayout() );
2 26 Feb 07 jari 292   selectionPanel.setBorder( BorderFactory.createTitledBorder( "Assign Labels" ) );
2 26 Feb 07 jari 293   
2 26 Feb 07 jari 294   //loop through hybs
2 26 Feb 07 jari 295   for( int h = 0; h < iHyb; h ++ ) {
2 26 Feb 07 jari 296     JLabel label = new JLabel( hybArray[ h ] );
2 26 Feb 07 jari 297     label.setMaximumSize( dLabel );
2 26 Feb 07 jari 298     label.setMinimumSize( dLabel );
2 26 Feb 07 jari 299     label.setPreferredSize( dLabel );
2 26 Feb 07 jari 300     label.setBackground( Color.WHITE );
2 26 Feb 07 jari 301     label.setHorizontalAlignment( JLabel.LEFT );
2 26 Feb 07 jari 302     label.setVerticalAlignment( JLabel.CENTER );
2 26 Feb 07 jari 303     
2 26 Feb 07 jari 304     JComboBox comboBox = new JComboBox( labelArray );
2 26 Feb 07 jari 305     comboBox.setMaximumSize( dCombo );
2 26 Feb 07 jari 306     comboBox.setMinimumSize( dCombo );
2 26 Feb 07 jari 307     comboBox.setPreferredSize( dCombo );
2 26 Feb 07 jari 308
2 26 Feb 07 jari 309     selectionPanel.add( comboBox ); 
2 26 Feb 07 jari 310     selectionPanel.add( label );
2 26 Feb 07 jari 311     
2 26 Feb 07 jari 312     //this.vCombo.add( comboBox );
2 26 Feb 07 jari 313     //this.vLabel.add( label );
2 26 Feb 07 jari 314   }//end h (hybs)
2 26 Feb 07 jari 315   
2 26 Feb 07 jari 316   SpringUtilities.makeCompactGrid( selectionPanel, iHyb, 2, 0, 5 , 5, 0 );
2 26 Feb 07 jari 317   
2 26 Feb 07 jari 318   this.mainPanel = new JPanel();
2 26 Feb 07 jari 319   this.mainPanel.add( selectionPanel );
2 26 Feb 07 jari 320   
2 26 Feb 07 jari 321   JScrollPane jsp = new JScrollPane( this.mainPanel );
2 26 Feb 07 jari 322   
2 26 Feb 07 jari 323   this.addContent( jsp );
2 26 Feb 07 jari 324 }//end initializeGUI()
2 26 Feb 07 jari 325 */
2 26 Feb 07 jari 326   /*
2 26 Feb 07 jari 327   public String[] getHybLabels() {
2 26 Feb 07 jari 328     String[] toReturn = new String[ this.vCombo.size() ];
2 26 Feb 07 jari 329     
2 26 Feb 07 jari 330     for( int i = 0; i < this.vCombo.size(); i ++ ) {
2 26 Feb 07 jari 331       JComboBox combo = ( JComboBox ) this.vCombo.elementAt( i );
2 26 Feb 07 jari 332       toReturn[ i ] = ( String ) combo.getSelectedItem();
2 26 Feb 07 jari 333     }
2 26 Feb 07 jari 334     
2 26 Feb 07 jari 335     return toReturn;
2 26 Feb 07 jari 336   }
2 26 Feb 07 jari 337   public String getHybLabel( int hybIndex ) {
2 26 Feb 07 jari 338     JComboBox combo = ( JComboBox ) this.vCombo.elementAt( hybIndex );
2 26 Feb 07 jari 339     return ( String ) combo.getSelectedItem();
2 26 Feb 07 jari 340   }
2 26 Feb 07 jari 341   public String[][] getHybLabelPairs() {
2 26 Feb 07 jari 342     String[][] toReturn = new String[ this.vCombo.size() ][ 2 ];
2 26 Feb 07 jari 343     
2 26 Feb 07 jari 344     for( int i = 0; i < this.vCombo.size(); i ++ ) {
2 26 Feb 07 jari 345       JLabel label = ( JLabel ) this.vLabel.elementAt( i );
2 26 Feb 07 jari 346       toReturn[ i ][ 0 ] = label.getText();
2 26 Feb 07 jari 347       
2 26 Feb 07 jari 348       JComboBox combo = ( JComboBox ) this.vCombo.elementAt( i );
2 26 Feb 07 jari 349       toReturn[ i ][ 1 ] = ( String ) combo.getSelectedItem();
2 26 Feb 07 jari 350     }
2 26 Feb 07 jari 351     
2 26 Feb 07 jari 352     return toReturn;
2 26 Feb 07 jari 353   }
2 26 Feb 07 jari 354   public String[] getHybLabelPair( int hybIndex ) {
2 26 Feb 07 jari 355     String[] toReturn = new String[ 2 ];
2 26 Feb 07 jari 356     
2 26 Feb 07 jari 357     JLabel label = ( JLabel ) this.vLabel.elementAt( hybIndex );
2 26 Feb 07 jari 358     toReturn[ 0 ] = label.getText();
2 26 Feb 07 jari 359     
2 26 Feb 07 jari 360     JComboBox combo = ( JComboBox ) this.vCombo.elementAt( hybIndex );
2 26 Feb 07 jari 361     toReturn[ 1 ] = ( String ) combo.getSelectedItem();
2 26 Feb 07 jari 362     
2 26 Feb 07 jari 363     return toReturn;
2 26 Feb 07 jari 364   }
2 26 Feb 07 jari 365   */
2 26 Feb 07 jari 366
2 26 Feb 07 jari 367
2 26 Feb 07 jari 368 /**
2 26 Feb 07 jari 369  * Make sure that all the userLabels have been assigned to at least one hyb so
2 26 Feb 07 jari 370  * we don't have any unaccounted for labels
2 26 Feb 07 jari 371  * @return
2 26 Feb 07 jari 372  */
2 26 Feb 07 jari 373 /*
2 26 Feb 07 jari 374 private boolean validateLabels() {
2 26 Feb 07 jari 375   boolean toReturn = true;
2 26 Feb 07 jari 376   
2 26 Feb 07 jari 377   //make sure that all unique labels are represented
2 26 Feb 07 jari 378   String[] labels = this.getHybLabels();
2 26 Feb 07 jari 379   
2 26 Feb 07 jari 380   //loop through the labels entered by the user
2 26 Feb 07 jari 381   for( int i = 0; i < this.userLabelArray.length; i ++ ) {
2 26 Feb 07 jari 382     if( this.userLabelArray[ i ].equals( ClassAssigner.TEST_CLASS_STRING ) ) {
2 26 Feb 07 jari 383       //do nothing because user doesn't have to test anything if they don't want to 
2 26 Feb 07 jari 384     } else {
2 26 Feb 07 jari 385       boolean labelFound = false;
2 26 Feb 07 jari 386       
2 26 Feb 07 jari 387       //make sure that this label appears at least once in the assignments
2 26 Feb 07 jari 388       for( int j = 0; j < labels.length; j ++ ) {
2 26 Feb 07 jari 389         if( this.userLabelArray[ i ].toLowerCase().equals( labels[ j ].toLowerCase() ) ) {
2 26 Feb 07 jari 390           labelFound = true;
2 26 Feb 07 jari 391           break;
2 26 Feb 07 jari 392         }
2 26 Feb 07 jari 393       }
2 26 Feb 07 jari 394       
2 26 Feb 07 jari 395       if( labelFound ) {
2 26 Feb 07 jari 396         //proceed
2 26 Feb 07 jari 397       } else {
2 26 Feb 07 jari 398         //wasn't found, return false
2 26 Feb 07 jari 399         this.error( "You haven't assigned " + this.userLabelArray[ i ].toUpperCase() 
2 26 Feb 07 jari 400         + " to any hybs." );
2 26 Feb 07 jari 401         toReturn = false;
2 26 Feb 07 jari 402         break;
2 26 Feb 07 jari 403       }
2 26 Feb 07 jari 404     }
2 26 Feb 07 jari 405   }
2 26 Feb 07 jari 406   
2 26 Feb 07 jari 407   if( toReturn ) {
2 26 Feb 07 jari 408     //should also validate number of hybs/label to make sure USC can run
2 26 Feb 07 jari 409     for( int i = 0; i < this.userLabelArray.length; i ++ ) {
2 26 Feb 07 jari 410       String label = this.userLabelArray[ i ];
2 26 Feb 07 jari 411       
2 26 Feb 07 jari 412       if( label.equals( ClassAssigner.TEST_CLASS_STRING ) ) {
2 26 Feb 07 jari 413         //don't do anything
2 26 Feb 07 jari 414       } else {
2 26 Feb 07 jari 415         int iHyb = 0;
2 26 Feb 07 jari 416         
2 26 Feb 07 jari 417         //now count the number of hybs for this label
2 26 Feb 07 jari 418         for( int j = 0; j < labels.length; j ++ ) {
2 26 Feb 07 jari 419           if( label.equalsIgnoreCase( labels[ j ] ) ) {
2 26 Feb 07 jari 420             iHyb ++;
2 26 Feb 07 jari 421           }
2 26 Feb 07 jari 422         }
2 26 Feb 07 jari 423         
2 26 Feb 07 jari 424         if( iHyb < 3 ) {
2 26 Feb 07 jari 425           //problem
2 26 Feb 07 jari 426           this.error( "There must be at least 3 experiments per class\r\n  " 
2 26 Feb 07 jari 427               + label + " only contains " + iHyb );
2 26 Feb 07 jari 428           toReturn = false;
2 26 Feb 07 jari 429           break;
2 26 Feb 07 jari 430         }
2 26 Feb 07 jari 431       }
2 26 Feb 07 jari 432     }//end i
2 26 Feb 07 jari 433   }
2 26 Feb 07 jari 434   
2 26 Feb 07 jari 435   return toReturn;
2 26 Feb 07 jari 436 }//validateLabels()
2 26 Feb 07 jari 437 */