mev-4.0.01/source/org/tigr/microarray/mev/file/SOFT_AffyFileLoader.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2005, 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: SOFT_AffyFileLoader.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.7 $
2 26 Feb 07 jari 8  * $Date: 2006/03/28 22:30:33 $
2 26 Feb 07 jari 9  * $Author: eleanorahowe $
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.file;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15 import java.awt.Color;
2 26 Feb 07 jari 16 import java.awt.Component;
2 26 Feb 07 jari 17 import java.awt.Dimension;
2 26 Feb 07 jari 18 import java.awt.Font;
2 26 Feb 07 jari 19 import java.awt.GridBagLayout;
2 26 Feb 07 jari 20 import java.awt.Insets;
2 26 Feb 07 jari 21 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 22 import java.awt.event.ActionListener;
2 26 Feb 07 jari 23 import java.awt.event.MouseAdapter;
2 26 Feb 07 jari 24 import java.awt.event.MouseEvent;
2 26 Feb 07 jari 25 import java.io.BufferedReader;
2 26 Feb 07 jari 26 import java.io.File;
2 26 Feb 07 jari 27 import java.io.FileNotFoundException;
2 26 Feb 07 jari 28 import java.io.FileReader;
2 26 Feb 07 jari 29 import java.io.IOException;
2 26 Feb 07 jari 30 import java.util.Vector;
2 26 Feb 07 jari 31
2 26 Feb 07 jari 32 import javax.swing.ButtonGroup;
2 26 Feb 07 jari 33 import javax.swing.DefaultListCellRenderer;
2 26 Feb 07 jari 34 import javax.swing.DefaultListModel;
2 26 Feb 07 jari 35 import javax.swing.DefaultListSelectionModel;
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.JList;
2 26 Feb 07 jari 39 import javax.swing.JPanel;
2 26 Feb 07 jari 40 import javax.swing.JRadioButton;
2 26 Feb 07 jari 41 import javax.swing.JScrollPane;
2 26 Feb 07 jari 42 import javax.swing.JSplitPane;
2 26 Feb 07 jari 43 import javax.swing.JTable;
2 26 Feb 07 jari 44 import javax.swing.JTextField;
2 26 Feb 07 jari 45 import javax.swing.ScrollPaneConstants;
2 26 Feb 07 jari 46 import javax.swing.border.EtchedBorder;
2 26 Feb 07 jari 47 import javax.swing.border.TitledBorder;
2 26 Feb 07 jari 48 import javax.swing.event.ListSelectionEvent;
2 26 Feb 07 jari 49 import javax.swing.filechooser.FileFilter;
2 26 Feb 07 jari 50 import javax.swing.table.DefaultTableModel;
2 26 Feb 07 jari 51 import javax.swing.table.TableModel;
2 26 Feb 07 jari 52 import org.tigr.microarray.mev.AffySlideDataElement;
2 26 Feb 07 jari 53 import org.tigr.microarray.mev.FloatSlideData;
2 26 Feb 07 jari 54 //import org.tigr.microarray.mev.GCOSSlideDataElement;
2 26 Feb 07 jari 55 import org.tigr.microarray.mev.ISlideData;
2 26 Feb 07 jari 56 import org.tigr.microarray.mev.SlideData;
2 26 Feb 07 jari 57 import org.tigr.microarray.mev.TMEV;
2 26 Feb 07 jari 58
2 26 Feb 07 jari 59 public class SOFT_AffyFileLoader extends ExpressionFileLoader {
2 26 Feb 07 jari 60     
2 26 Feb 07 jari 61     private GBA gba;
2 26 Feb 07 jari 62     private boolean stop = false;
2 26 Feb 07 jari 63     private int affyDataType = TMEV.DATA_TYPE_AFFY;
2 26 Feb 07 jari 64     private SOFT_AffyFileLoaderPanel sflp;
2 26 Feb 07 jari 65     private Vector datainfo=new Vector();//store sample info
2 26 Feb 07 jari 66     private Vector platforminfo=new Vector();//store platform info
2 26 Feb 07 jari 67     private boolean unload=false;
2 26 Feb 07 jari 68     public SOFT_AffyFileLoader(SuperExpressionFileLoader superLoader) {
2 26 Feb 07 jari 69         super(superLoader);
2 26 Feb 07 jari 70         gba = new GBA();
2 26 Feb 07 jari 71         sflp = new SOFT_AffyFileLoaderPanel();
2 26 Feb 07 jari 72     }
2 26 Feb 07 jari 73     
2 26 Feb 07 jari 74     public Vector loadExpressionFiles() throws IOException {
2 26 Feb 07 jari 75         return loadSOFT_AffyExpressionFile(new File(this.sflp.fileNameTextField.getText()));
2 26 Feb 07 jari 76     }
2 26 Feb 07 jari 77     
2 26 Feb 07 jari 78     public ISlideData loadExpressionFile(File f){
2 26 Feb 07 jari 79         return null;
2 26 Feb 07 jari 80     }
2 26 Feb 07 jari 81  
2 26 Feb 07 jari 82     
2 26 Feb 07 jari 83     public Vector loadSOFT_AffyExpressionFile(File f) throws IOException {
2 26 Feb 07 jari 84       this.setTMEVDataType();
2 26 Feb 07 jari 85       AffySlideDataElement sde=null;
2 26 Feb 07 jari 86          float cy3, cy5;
2 26 Feb 07 jari 87          int[] rows = new int[] {0, 1, 0};
2 26 Feb 07 jari 88          int[] columns = new int[] {0, 1, 0};
2 26 Feb 07 jari 89          float[] intensities = new float[2];
2 26 Feb 07 jari 90          String[]moreFields=null;
2 26 Feb 07 jari 91          String[] fieldNames=null;
2 26 Feb 07 jari 92          String[] extraFields=new String[1];
2 26 Feb 07 jari 93          final int rColumns = 1;
2 26 Feb 07 jari 94          String[] key=new String[datainfo.size()/2];
2 26 Feb 07 jari 95          for(int k=0;k<datainfo.size()/2;k++)
2 26 Feb 07 jari 96            key[k]="sample information "+(k+1);
2 26 Feb 07 jari 97          final int totalRows =sflp.expressionTable.getRowCount();
2 26 Feb 07 jari 98          final int totalColumns =sflp.expressionTable.getColumnCount();
2 26 Feb 07 jari 99          if(unload){
2 26 Feb 07 jari 100            moreFields = new String[totalColumns+platforminfo.size()/2];
2 26 Feb 07 jari 101            fieldNames = new String[totalColumns+platforminfo.size()/2];
2 26 Feb 07 jari 102          }else{
2 26 Feb 07 jari 103            moreFields = new String[totalColumns];
2 26 Feb 07 jari 104            fieldNames = new String[totalColumns];
2 26 Feb 07 jari 105          }
2 26 Feb 07 jari 106          
2 26 Feb 07 jari 107          this.setFilesCount(1);
2 26 Feb 07 jari 108          this.setRemain(1);
2 26 Feb 07 jari 109          this.setFilesProgress(0);
2 26 Feb 07 jari 110          this.setFileProgress(0);
2 26 Feb 07 jari 111  
2 26 Feb 07 jari 112          ISlideData slideData=null;
2 26 Feb 07 jari 113          slideData = new SlideData(totalRows, rColumns);
2 26 Feb 07 jari 114          slideData.setSlideFileName(f.getPath());
2 26 Feb 07 jari 115               
2 26 Feb 07 jari 116          for(int m=0;m<totalColumns;m++)
2 26 Feb 07 jari 117            fieldNames[m]=sflp.expressionTable.getColumnName(m);
2 26 Feb 07 jari 118          if(unload){
2 26 Feb 07 jari 119            fieldNames[totalColumns]="Platform Information";        
2 26 Feb 07 jari 120            for(int k=0;k<platforminfo.size()/2;k++)
2 26 Feb 07 jari 121              fieldNames[totalColumns+k]="";
2 26 Feb 07 jari 122          }           
2 26 Feb 07 jari 123          slideData.getSlideMetaData().appendFieldNames(fieldNames);
2 26 Feb 07 jari 124         
2 26 Feb 07 jari 125          for(int i=0;i<totalRows;i++){
2 26 Feb 07 jari 126            intensities[0] = 1.0f;
2 26 Feb 07 jari 127              intensities[1] =Float.parseFloat((String)sflp.expressionTable.getValueAt(i,1));
2 26 Feb 07 jari 128              for(int j=0;j<totalColumns;j++)
2 26 Feb 07 jari 129               moreFields[j]=(String)sflp.expressionTable.getValueAt(i,j);
2 26 Feb 07 jari 130              extraFields[0]=(String)sflp.expressionTable.getValueAt(i,2);//detection
2 26 Feb 07 jari 131              if(unload){
2 26 Feb 07 jari 132                for(int k=0;k<platforminfo.size()/2;k++)
2 26 Feb 07 jari 133                  moreFields[totalColumns+k]=(String)platforminfo.elementAt(k);
2 26 Feb 07 jari 134              }
2 26 Feb 07 jari 135              sde = new AffySlideDataElement(String.valueOf(i), rows, columns, new float[2], moreFields);
2 26 Feb 07 jari 136              slideData.addSlideDataElement(sde);
2 26 Feb 07 jari 137              slideData.setIntensities(i, intensities[0], intensities[1]);
2 26 Feb 07 jari 138              sde.setDetection(extraFields[0]); 
2 26 Feb 07 jari 139          }
2 26 Feb 07 jari 140          //add sample annotion
2 26 Feb 07 jari 141          for(int m=0;m<datainfo.size()/2;m++)
2 26 Feb 07 jari 142           slideData.addNewSampleLabel(key[m],(String)datainfo.elementAt(m));
2 26 Feb 07 jari 143        
2 26 Feb 07 jari 144          Vector data=new Vector();
2 26 Feb 07 jari 145          data.add(slideData);
2 26 Feb 07 jari 146          return data;
2 26 Feb 07 jari 147     }
2 26 Feb 07 jari 148     
2 26 Feb 07 jari 149     
2 26 Feb 07 jari 150     public FileFilter getFileFilter() {
2 26 Feb 07 jari 151         
2 26 Feb 07 jari 152         FileFilter mevFileFilter = new FileFilter() {
2 26 Feb 07 jari 153             
2 26 Feb 07 jari 154             public boolean accept(File f) {
2 26 Feb 07 jari 155                 if (f.isDirectory()) return true;
2 26 Feb 07 jari 156                 if (f.getName().endsWith(".txt")) return true;
2 26 Feb 07 jari 157                 else return false;
2 26 Feb 07 jari 158             }
2 26 Feb 07 jari 159             
2 26 Feb 07 jari 160             public String getDescription() {
2 26 Feb 07 jari 161                 return "Tab Delimited, Multiple Sample Files (TDMS) (*.txt)";
2 26 Feb 07 jari 162             }
2 26 Feb 07 jari 163         };
2 26 Feb 07 jari 164         
2 26 Feb 07 jari 165         return mevFileFilter;
2 26 Feb 07 jari 166     }
2 26 Feb 07 jari 167     
2 26 Feb 07 jari 168     public boolean checkLoadEnable() {
2 26 Feb 07 jari 169         
2 26 Feb 07 jari 170         // Currently, the only requirement is that a cell has been highlighted
2 26 Feb 07 jari 171         
2 26 Feb 07 jari 172         int tableRow = sflp.getXRow() + 1; // Adjusted by 1 to account for the table header
2 26 Feb 07 jari 173         int tableColumn = sflp.getXColumn();
2 26 Feb 07 jari 174         
2 26 Feb 07 jari 175         if (tableColumn < 0) return false;
2 26 Feb 07 jari 176         
2 26 Feb 07 jari 177         TableModel model = sflp.getTable().getModel();
2 26 Feb 07 jari 178        /* String fieldSummary = "";
2 26 Feb 07 jari 179         for (int i = 0; i < tableColumn; i++) {
2 26 Feb 07 jari 180             //  System.out.print(model.getColumnName(i) + (i + 1 == tableColumn ? "\n" : ", "));
2 26 Feb 07 jari 181             fieldSummary += model.getColumnName(i) + (i + 1 == tableColumn ? "" : ", ");
2 26 Feb 07 jari 182         }
2 26 Feb 07 jari 183         
2 26 Feb 07 jari 184         sflp.setFieldsText(fieldSummary);
2 26 Feb 07 jari 185         */
2 26 Feb 07 jari 186         if (tableRow >= 1 && tableColumn >= 0) {
2 26 Feb 07 jari 187             setLoadEnabled(true);
2 26 Feb 07 jari 188             return true;
2 26 Feb 07 jari 189         } else {
2 26 Feb 07 jari 190             setLoadEnabled(false);
2 26 Feb 07 jari 191             return false;
2 26 Feb 07 jari 192         }
2 26 Feb 07 jari 193     }
2 26 Feb 07 jari 194     
2 26 Feb 07 jari 195     /*by wwang 
2 26 Feb 07 jari 196      * set datatype =DATA_TYPE_AFFY
2 26 Feb 07 jari 197      */ 
2 26 Feb 07 jari 198      
2 26 Feb 07 jari 199      public void setTMEVDataType(){
2 26 Feb 07 jari 200          TMEV.setDataType(TMEV.DATA_TYPE_AFFY);
2 26 Feb 07 jari 201      }
2 26 Feb 07 jari 202      
2 26 Feb 07 jari 203      public int getAffyDataType(){
2 26 Feb 07 jari 204          return this.affyDataType;
2 26 Feb 07 jari 205      }
2 26 Feb 07 jari 206      
2 26 Feb 07 jari 207     public boolean validateFile(File targetFile) {
2 26 Feb 07 jari 208         return true; // For now, no validation on SOFT_Affy Files
2 26 Feb 07 jari 209     }
2 26 Feb 07 jari 210     
2 26 Feb 07 jari 211     public JPanel getFileLoaderPanel() {
2 26 Feb 07 jari 212         return sflp;
2 26 Feb 07 jari 213     }
2 26 Feb 07 jari 214     
2 26 Feb 07 jari 215     public void loadPlatFormFile(File targetFile) {
2 26 Feb 07 jari 216       BufferedReader reader = null;
2 26 Feb 07 jari 217       String currentLine = null;      
2 26 Feb 07 jari 218         sflp.setCallFileName(targetFile.getAbsolutePath());
2 26 Feb 07 jari 219         try {
2 26 Feb 07 jari 220           reader = new BufferedReader(new FileReader(targetFile), 1024 * 128);
2 26 Feb 07 jari 221         } catch (FileNotFoundException fnfe) {
2 26 Feb 07 jari 222           fnfe.printStackTrace();
2 26 Feb 07 jari 223         }
2 26 Feb 07 jari 224         try {
2 26 Feb 07 jari 225             StringSplitter ss = new StringSplitter('\t');
2 26 Feb 07 jari 226             currentLine = reader.readLine();
2 26 Feb 07 jari 227             
2 26 Feb 07 jari 228             if(currentLine.charAt(0)=='^'){              
2 26 Feb 07 jari 229               platforminfo.add(currentLine.substring(1));
2 26 Feb 07 jari 230               currentLine = reader.readLine();
2 26 Feb 07 jari 231             }
2 26 Feb 07 jari 232             while(currentLine.charAt(0)=='!'){
2 26 Feb 07 jari 233               platforminfo.add(currentLine.substring(1));
2 26 Feb 07 jari 234               currentLine = reader.readLine();
2 26 Feb 07 jari 235             }
2 26 Feb 07 jari 236             reader.close();
2 26 Feb 07 jari 237         }catch(IOException ioe) {
2 26 Feb 07 jari 238             ioe.printStackTrace();
2 26 Feb 07 jari 239         }
2 26 Feb 07 jari 240     }
2 26 Feb 07 jari 241         
2 26 Feb 07 jari 242     
2 26 Feb 07 jari 243     public void processSOFT_AffyFile(File targetFile) {                
2 26 Feb 07 jari 244         Vector dataVector = new Vector();
2 26 Feb 07 jari 245         Vector rowVector = null;
2 26 Feb 07 jari 246         BufferedReader reader = null;
2 26 Feb 07 jari 247         String currentLine = null;
2 26 Feb 07 jari 248         //String tmp=null;
2 26 Feb 07 jari 249         Vector columnHeaders = new Vector();//store tabel header
2 26 Feb 07 jari 250         if (! validateFile(targetFile)) return;
2 26 Feb 07 jari 251         
2 26 Feb 07 jari 252         sflp.setFileName(targetFile.getAbsolutePath());
2 26 Feb 07 jari 253         
2 26 Feb 07 jari 254         DefaultTableModel model = new DefaultTableModel() {
2 26 Feb 07 jari 255             public boolean isCellEditable(int row, int column) {
2 26 Feb 07 jari 256                 return false;
2 26 Feb 07 jari 257             }
2 26 Feb 07 jari 258         };
2 26 Feb 07 jari 259         
2 26 Feb 07 jari 260         try {
2 26 Feb 07 jari 261             reader = new BufferedReader(new FileReader(targetFile), 1024 * 128);
2 26 Feb 07 jari 262         } catch (FileNotFoundException fnfe) {
2 26 Feb 07 jari 263             fnfe.printStackTrace();
2 26 Feb 07 jari 264         }
2 26 Feb 07 jari 265         
2 26 Feb 07 jari 266         try {
2 26 Feb 07 jari 267             StringSplitter ss = new StringSplitter('\t');
2 26 Feb 07 jari 268             currentLine = reader.readLine();
2 26 Feb 07 jari 269             
2 26 Feb 07 jari 270             if(currentLine.charAt(0)=='^'){              
2 26 Feb 07 jari 271               datainfo.add(currentLine.substring(1));
2 26 Feb 07 jari 272               currentLine = reader.readLine();
2 26 Feb 07 jari 273             }
2 26 Feb 07 jari 274             while(currentLine.charAt(0)=='!'){
2 26 Feb 07 jari 275               datainfo.add(currentLine.substring(1));
2 26 Feb 07 jari 276               currentLine = reader.readLine();
2 26 Feb 07 jari 277             }  
2 26 Feb 07 jari 278             
2 26 Feb 07 jari 279             while(currentLine.charAt(0)=='#'){
2 26 Feb 07 jari 280               currentLine = reader.readLine();
2 26 Feb 07 jari 281             }
2 26 Feb 07 jari 282             //filter!sample_table_begin
2 26 Feb 07 jari 283             currentLine = reader.readLine(); 
2 26 Feb 07 jari 284             ss.init(currentLine);
2 26 Feb 07 jari 285          
2 26 Feb 07 jari 286             for (int i = 0; i < ss.countTokens()+1; i++) {
2 26 Feb 07 jari 287                 columnHeaders.add(ss.nextToken());
2 26 Feb 07 jari 288             }
2 26 Feb 07 jari 289             
2 26 Feb 07 jari 290             model.setColumnIdentifiers(columnHeaders);
2 26 Feb 07 jari 291             int cnt = 0;
2 26 Feb 07 jari 292             while ((currentLine = reader.readLine()) != null && currentLine.charAt(0)!='!') {
2 26 Feb 07 jari 293                 cnt++;
2 26 Feb 07 jari 294                 ss.init(currentLine);
2 26 Feb 07 jari 295                 rowVector = new Vector();
2 26 Feb 07 jari 296                 for (int i = 0; i < ss.countTokens()+1; i++) {
2 26 Feb 07 jari 297                     try {
2 26 Feb 07 jari 298                         rowVector.add(ss.nextToken());
2 26 Feb 07 jari 299                     } catch (java.util.NoSuchElementException nsee) {
2 26 Feb 07 jari 300                         rowVector.add(" ");
2 26 Feb 07 jari 301                     }
2 26 Feb 07 jari 302                 }
2 26 Feb 07 jari 303                 
2 26 Feb 07 jari 304                 dataVector.add(rowVector);
2 26 Feb 07 jari 305                 model.addRow(rowVector);
2 26 Feb 07 jari 306             }
2 26 Feb 07 jari 307             
2 26 Feb 07 jari 308             reader.close();
2 26 Feb 07 jari 309         } catch (IOException ioe) {
2 26 Feb 07 jari 310             ioe.printStackTrace();
2 26 Feb 07 jari 311         }
2 26 Feb 07 jari 312         
2 26 Feb 07 jari 313         sflp.setTableModel(model);
2 26 Feb 07 jari 314     }
2 26 Feb 07 jari 315     
2 26 Feb 07 jari 316     public String getFilePath() {
2 26 Feb 07 jari 317         return this.sflp.fileNameTextField.getText();
2 26 Feb 07 jari 318     }
2 26 Feb 07 jari 319     
2 26 Feb 07 jari 320     public void openDataPath() {
2 26 Feb 07 jari 321         this.sflp.openDataPath();
2 26 Feb 07 jari 322     }
2 26 Feb 07 jari 323     
2 26 Feb 07 jari 324 /*
2 26 Feb 07 jari 325 //
2 26 Feb 07 jari 326 //  StanfordFileLoader - Internal Classes
2 26 Feb 07 jari 327 //
2 26 Feb 07 jari 328  */
2 26 Feb 07 jari 329     
2 26 Feb 07 jari 330     private class SOFT_AffyFileLoaderPanel extends JPanel {
2 26 Feb 07 jari 331         
2 26 Feb 07 jari 332         FileTreePane fileTreePane;
2 26 Feb 07 jari 333         
2 26 Feb 07 jari 334         JTextField fileNameTextField;
2 26 Feb 07 jari 335         JPanel fileSelectionPanel;
2 26 Feb 07 jari 336         JTable expressionTable;
2 26 Feb 07 jari 337         JLabel instructionsLabel;
2 26 Feb 07 jari 338         JScrollPane tableScrollPane;
2 26 Feb 07 jari 339         JPanel tablePanel;
2 26 Feb 07 jari 340         JPanel fileLoaderPanel;
2 26 Feb 07 jari 341         JTextField fieldsTextField;
2 26 Feb 07 jari 342         JPanel fieldsPanel;
2 26 Feb 07 jari 343         JSplitPane splitPane;
2 26 Feb 07 jari 344         ButtonGroup optionsButtonGroup;
2 26 Feb 07 jari 345         JRadioButton loadRadioButton;
2 26 Feb 07 jari 346         JRadioButton notLoadRadioButton;
2 26 Feb 07 jari 347         JList availableList;
2 26 Feb 07 jari 348         JScrollPane availableScrollPane;
2 26 Feb 07 jari 349         
2 26 Feb 07 jari 350         JPanel refListPanel;
2 26 Feb 07 jari 351         JList refAvailableList;
2 26 Feb 07 jari 352         JScrollPane refAvailableScrollPane;
2 26 Feb 07 jari 353         
2 26 Feb 07 jari 354         JTextField refTextField;
2 26 Feb 07 jari 355         JPanel refPanel,filePanel,checkPanel;
2 26 Feb 07 jari 356         
2 26 Feb 07 jari 357         private int xRow = -1;
2 26 Feb 07 jari 358         private int xColumn = -1;
2 26 Feb 07 jari 359         
2 26 Feb 07 jari 360         public SOFT_AffyFileLoaderPanel() {
2 26 Feb 07 jari 361             
2 26 Feb 07 jari 362             setLayout(new GridBagLayout());
2 26 Feb 07 jari 363             
2 26 Feb 07 jari 364             fileTreePane = new FileTreePane(SuperExpressionFileLoader.DATA_PATH);
2 26 Feb 07 jari 365             fileTreePane.addFileTreePaneListener(new FileTreePaneEventHandler());
2 26 Feb 07 jari 366             fileTreePane.setPreferredSize(new java.awt.Dimension(200, 50));
2 26 Feb 07 jari 367             
2 26 Feb 07 jari 368             fileNameTextField = new JTextField();
2 26 Feb 07 jari 369             fileNameTextField.setEditable(false);
2 26 Feb 07 jari 370             fileNameTextField.setForeground(Color.black);
2 26 Feb 07 jari 371             fileNameTextField.setFont(new Font("monospaced", Font.BOLD, 12));
2 26 Feb 07 jari 372          
2 26 Feb 07 jari 373             fileSelectionPanel = new JPanel();
2 26 Feb 07 jari 374             fileSelectionPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 375             fileSelectionPanel.setBorder(new TitledBorder(new EtchedBorder(), "Selected SOFT Format Affymatrix File"));
2 26 Feb 07 jari 376             gba.add(fileSelectionPanel, fileNameTextField, 0, 0, 2, 1, 1, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 377     
2 26 Feb 07 jari 378             expressionTable = new JTable();
2 26 Feb 07 jari 379             expressionTable.setCellSelectionEnabled(true);
2 26 Feb 07 jari 380             expressionTable.setColumnSelectionAllowed(false);
2 26 Feb 07 jari 381             expressionTable.setRowSelectionAllowed(false);
2 26 Feb 07 jari 382             expressionTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
2 26 Feb 07 jari 383             expressionTable.getTableHeader().setReorderingAllowed(true);
2 26 Feb 07 jari 384             expressionTable.addMouseListener(new MouseAdapter() {
2 26 Feb 07 jari 385                 public void mousePressed(MouseEvent event) {
2 26 Feb 07 jari 386                     xRow = expressionTable.rowAtPoint(event.getPoint());
2 26 Feb 07 jari 387                     xColumn = expressionTable.columnAtPoint(event.getPoint());
2 26 Feb 07 jari 388                     checkLoadEnable();
2 26 Feb 07 jari 389                 }
2 26 Feb 07 jari 390             });           
2 26 Feb 07 jari 391             tableScrollPane = new JScrollPane(expressionTable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);           
2 26 Feb 07 jari 392             instructionsLabel = new JLabel();
2 26 Feb 07 jari 393             instructionsLabel.setForeground(java.awt.Color.red);
2 26 Feb 07 jari 394             String instructions = "<html>The first column should be ChipID.<br>";
2 26 Feb 07 jari 395             instructions =instructions+  "The second column should be normalized signal intensity.<br>";
2 26 Feb 07 jari 396             instructions =instructions+"The third column should be detection call.<br>";
2 26 Feb 07 jari 397             instructions =instructions+"If your file is in different order, you can reorder them as required.<br>";
2 26 Feb 07 jari 398             instructions =instructions+"Then click the upper-leftmost expression value. Click the <b>Load</b> button to finish.</html>";
2 26 Feb 07 jari 399             instructionsLabel.setText(instructions);
2 26 Feb 07 jari 400             
2 26 Feb 07 jari 401             tablePanel = new JPanel();
2 26 Feb 07 jari 402             tablePanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 403             tablePanel.setBorder(new TitledBorder(new EtchedBorder(), "Expression Table"));
2 26 Feb 07 jari 404             gba.add(tablePanel, tableScrollPane, 0, 0, 1, 2, 1, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 405             gba.add(tablePanel, instructionsLabel, 0, 2, 1, 2, 1, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 406             
2 26 Feb 07 jari 407             refAvailableList = new JList(new DefaultListModel());
2 26 Feb 07 jari 408             refAvailableList.setCellRenderer(new ListRenderer());
2 26 Feb 07 jari 409             refAvailableList.addListSelectionListener(new ListListener());
2 26 Feb 07 jari 410             refAvailableScrollPane = new JScrollPane(refAvailableList);
2 26 Feb 07 jari 411             refListPanel = new JPanel();
2 26 Feb 07 jari 412             refListPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 413             refListPanel.setBorder(new TitledBorder(new EtchedBorder(), "Platform File Available"));
2 26 Feb 07 jari 414             gba.add(refListPanel, refAvailableScrollPane, 0, 0, 1, 1, 1, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 415             
2 26 Feb 07 jari 416             loadRadioButton=new JRadioButton("Load");
2 26 Feb 07 jari 417             loadRadioButton.addActionListener(new EventHandler());
2 26 Feb 07 jari 418             notLoadRadioButton=new JRadioButton("Unload", true);
2 26 Feb 07 jari 419             notLoadRadioButton.addActionListener(new EventHandler());
2 26 Feb 07 jari 420             
2 26 Feb 07 jari 421             optionsButtonGroup = new ButtonGroup();
2 26 Feb 07 jari 422             optionsButtonGroup.add(loadRadioButton);
2 26 Feb 07 jari 423             optionsButtonGroup.add(notLoadRadioButton);
2 26 Feb 07 jari 424             checkPanel=new JPanel();
2 26 Feb 07 jari 425             checkPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 426             checkPanel.setBorder(new TitledBorder(new EtchedBorder(), "Platform Load Options"));
2 26 Feb 07 jari 427             gba.add(checkPanel, loadRadioButton, 0, 0, 1, 1, 1, 0, GBA.B, GBA.C, new Insets(5, 50, 0, 5), 0, 0);
2 26 Feb 07 jari 428             gba.add(checkPanel, notLoadRadioButton, 1, 0, 1, 1, 1, 0, GBA.B, GBA.C, new Insets(5, 50, 0, 5), 0, 0);
2 26 Feb 07 jari 429             
2 26 Feb 07 jari 430             refTextField = new JTextField();
2 26 Feb 07 jari 431             refTextField.setEditable(false);
2 26 Feb 07 jari 432             refTextField.setBorder(new TitledBorder(new EtchedBorder(), "Selected Platform File"));
2 26 Feb 07 jari 433             refTextField.setForeground(Color.black);
2 26 Feb 07 jari 434             refTextField.setFont(new Font("monospaced", Font.BOLD, 12));
2 26 Feb 07 jari 435             refTextField.setEnabled(unload);
2 26 Feb 07 jari 436             
2 26 Feb 07 jari 437             refPanel = new JPanel();
2 26 Feb 07 jari 438             refPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 439             refPanel.setBorder(new TitledBorder(new EtchedBorder(), "Platform File"));
2 26 Feb 07 jari 440             gba.add(refPanel, refTextField, 0, 0, 2, 1, 1, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 441             
2 26 Feb 07 jari 442            
2 26 Feb 07 jari 443             //jcb add list panel
2 26 Feb 07 jari 444             availableList = new JList(new DefaultListModel());
2 26 Feb 07 jari 445             availableList.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
2 26 Feb 07 jari 446             availableList.setCellRenderer(new ListRenderer());
2 26 Feb 07 jari 447             availableList.addListSelectionListener(new ListListener());
2 26 Feb 07 jari 448             availableScrollPane = new JScrollPane(availableList);
2 26 Feb 07 jari 449             
2 26 Feb 07 jari 450             filePanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 451             filePanel.setPreferredSize(new Dimension(10, 100));
2 26 Feb 07 jari 452             filePanel.setBorder(new TitledBorder(new EtchedBorder(), "Available Files (*.txt)"));
2 26 Feb 07 jari 453             gba.add(filePanel, availableScrollPane, 0, 0, 1, 1, 1, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 454             
2 26 Feb 07 jari 455             fileLoaderPanel = new JPanel();
2 26 Feb 07 jari 456             fileLoaderPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 457             gba.add(fileLoaderPanel,filePanel, 0, 0, 1, 5, 1, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 458             gba.add(fileLoaderPanel, refListPanel, 0, 6, 1, 4, 1, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 459             gba.add(fileLoaderPanel, fileSelectionPanel, 2, 0, 1, 1, 3, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 460             gba.add(fileLoaderPanel, tablePanel, 2, 1, 1, 6, 3, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 461             gba.add(fileLoaderPanel, checkPanel, 2, 7, 1, 1, 3, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 462             gba.add(fileLoaderPanel, refPanel, 2, 8, 1, 1, 3, 0, GBA.H, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 463             
2 26 Feb 07 jari 464             //jcb
2 26 Feb 07 jari 465             splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, fileTreePane, fileLoaderPanel);
2 26 Feb 07 jari 466             splitPane.setPreferredSize(new java.awt.Dimension(600, 600));
2 26 Feb 07 jari 467             gba.add(this, splitPane, 0, 0, 1, 1, 1, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0);
2 26 Feb 07 jari 468             splitPane.setDividerLocation(200);
2 26 Feb 07 jari 469             
2 26 Feb 07 jari 470         }
2 26 Feb 07 jari 471         
2 26 Feb 07 jari 472         public void openDataPath() {
2 26 Feb 07 jari 473             fileTreePane.openDataPath();
2 26 Feb 07 jari 474         }
2 26 Feb 07 jari 475         
2 26 Feb 07 jari 476         public JTable getTable() {
2 26 Feb 07 jari 477             return expressionTable;
2 26 Feb 07 jari 478         }
2 26 Feb 07 jari 479         
2 26 Feb 07 jari 480         public int getXColumn() {
2 26 Feb 07 jari 481             return xColumn;
2 26 Feb 07 jari 482         }
2 26 Feb 07 jari 483         
2 26 Feb 07 jari 484         public int getXRow() {
2 26 Feb 07 jari 485             return xRow;
2 26 Feb 07 jari 486         }
2 26 Feb 07 jari 487         
2 26 Feb 07 jari 488         public void selectSOFT_AffyFile() {
2 26 Feb 07 jari 489             JFileChooser jfc = new JFileChooser(SuperExpressionFileLoader.DATA_PATH);
2 26 Feb 07 jari 490             jfc.setFileFilter(getFileFilter());
2 26 Feb 07 jari 491             int activityCode = jfc.showDialog(this, "Select");
2 26 Feb 07 jari 492             
2 26 Feb 07 jari 493             if (activityCode == JFileChooser.APPROVE_OPTION) {
2 26 Feb 07 jari 494                 File target = jfc.getSelectedFile();
2 26 Feb 07 jari 495                 processSOFT_AffyFile(target);
2 26 Feb 07 jari 496             }
2 26 Feb 07 jari 497         }
2 26 Feb 07 jari 498         
2 26 Feb 07 jari 499         public void setFileName(String fileName) {
2 26 Feb 07 jari 500             fileNameTextField.setText(fileName);
2 26 Feb 07 jari 501         }
2 26 Feb 07 jari 502         public void setCallFileName(String fileName) {
2 26 Feb 07 jari 503             refTextField.setText(fileName);
2 26 Feb 07 jari 504         }
2 26 Feb 07 jari 505         public void setTableModel(TableModel model) {
2 26 Feb 07 jari 506             expressionTable.setModel(model);
2 26 Feb 07 jari 507             int numCols = expressionTable.getColumnCount();
2 26 Feb 07 jari 508             for(int i = 0; i < numCols; i++){
2 26 Feb 07 jari 509                 expressionTable.getColumnModel().getColumn(i).setMinWidth(75);
2 26 Feb 07 jari 510             }
2 26 Feb 07 jari 511         }
2 26 Feb 07 jari 512         
2 26 Feb 07 jari 513         public void setFieldsText(String fieldsText) {
2 26 Feb 07 jari 514             fieldsTextField.setText(fieldsText);
2 26 Feb 07 jari 515         }
2 26 Feb 07 jari 516         
2 26 Feb 07 jari 517         
2 26 Feb 07 jari 518         private class ListRenderer extends DefaultListCellRenderer {
2 26 Feb 07 jari 519             public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
2 26 Feb 07 jari 520                 super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
2 26 Feb 07 jari 521                 File file = (File) value;
2 26 Feb 07 jari 522                 setText(file.getName());
2 26 Feb 07 jari 523                 return this;
2 26 Feb 07 jari 524             }
2 26 Feb 07 jari 525         }
2 26 Feb 07 jari 526         
2 26 Feb 07 jari 527         
2 26 Feb 07 jari 528         
2 26 Feb 07 jari 529         private class ListListener implements javax.swing.event.ListSelectionListener {
2 26 Feb 07 jari 530             
2 26 Feb 07 jari 531             public void valueChanged(ListSelectionEvent lse) {
2 26 Feb 07 jari 532               File file;
2 26 Feb 07 jari 533               Object source=lse.getSource();
2 26 Feb 07 jari 534               if(source==availableList){
2 26 Feb 07 jari 535                 file = (File)(availableList.getSelectedValue());
2 26 Feb 07 jari 536                 if(file == null || !(file.exists()))
2 26 Feb 07 jari 537                   return;
2 26 Feb 07 jari 538                 processSOFT_AffyFile(file);
2 26 Feb 07 jari 539                 return;
2 26 Feb 07 jari 540               }else
2 26 Feb 07 jari 541                 file = (File)(refAvailableList.getSelectedValue());
2 26 Feb 07 jari 542               loadPlatFormFile(file);
2 26 Feb 07 jari 543             }   
2 26 Feb 07 jari 544         }
2 26 Feb 07 jari 545         
2 26 Feb 07 jari 546         private class EventHandler implements ActionListener {
2 26 Feb 07 jari 547             public void actionPerformed(ActionEvent event) {
2 26 Feb 07 jari 548                 Object source = event.getSource();
2 26 Feb 07 jari 549                 if (source == loadRadioButton) {
2 26 Feb 07 jari 550                     unload=true;
2 26 Feb 07 jari 551                     sflp.refTextField.setEnabled(unload);
2 26 Feb 07 jari 552                 }
2 26 Feb 07 jari 553             }
2 26 Feb 07 jari 554         }     
2 26 Feb 07 jari 555         private class FileTreePaneEventHandler implements FileTreePaneListener {
2 26 Feb 07 jari 556             
2 26 Feb 07 jari 557             public void nodeSelected(FileTreePaneEvent event) {
2 26 Feb 07 jari 558                 
2 26 Feb 07 jari 559                 String filePath = (String) event.getValue("Path");
2 26 Feb 07 jari 560                 Vector fileNames = (Vector) event.getValue("Filenames");
2 26 Feb 07 jari 561                 
2 26 Feb 07 jari 562                 if(fileNames.size() < 1)
2 26 Feb 07 jari 563                     return;
2 26 Feb 07 jari 564                 
2 26 Feb 07 jari 565                 String fileName = (String)(fileNames.elementAt(0));
2 26 Feb 07 jari 566                 
2 26 Feb 07 jari 567                 ((DefaultListModel)(availableList.getModel())).clear();
2 26 Feb 07 jari 568                 ((DefaultListModel)(refAvailableList.getModel())).clear();
2 26 Feb 07 jari 569                 
2 26 Feb 07 jari 570                 for (int i = 0; i < fileNames.size(); i++) {
2 26 Feb 07 jari 571                     
2 26 Feb 07 jari 572                     File targetFile = new File((String) fileNames.elementAt(i));
2 26 Feb 07 jari 573                     
2 26 Feb 07 jari 574                     FileFilter SOFT_AffyFileFilter = getFileFilter();
2 26 Feb 07 jari 575                     
2 26 Feb 07 jari 576                     if (SOFT_AffyFileFilter.accept(targetFile)) {
2 26 Feb 07 jari 577                         ((DefaultListModel)(availableList.getModel())).addElement(new File((String) fileNames.elementAt(i)));
2 26 Feb 07 jari 578                         ((DefaultListModel)(refAvailableList.getModel())).addElement(new File((String) fileNames.elementAt(i)));
2 26 Feb 07 jari 579                     }
2 26 Feb 07 jari 580                 }
2 26 Feb 07 jari 581             }
2 26 Feb 07 jari 582             
2 26 Feb 07 jari 583             public void nodeCollapsed(FileTreePaneEvent event) {}
2 26 Feb 07 jari 584             public void nodeExpanded(FileTreePaneEvent event) {}
2 26 Feb 07 jari 585         }
2 26 Feb 07 jari 586     }    
2 26 Feb 07 jari 587 }