mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/knnc/KNNCSearchDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * KNNCSearchDialog.java
2 26 Feb 07 jari 3  *
2 26 Feb 07 jari 4  * Created on September 22, 2003, 12:48 PM
2 26 Feb 07 jari 5  */
2 26 Feb 07 jari 6
2 26 Feb 07 jari 7 package org.tigr.microarray.mev.cluster.gui.impl.knnc;
2 26 Feb 07 jari 8
2 26 Feb 07 jari 9 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 10 import java.awt.event.ActionListener;
2 26 Feb 07 jari 11 import java.awt.event.FocusEvent;
2 26 Feb 07 jari 12 import java.awt.event.FocusListener;
2 26 Feb 07 jari 13 import java.util.Vector;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15 import javax.swing.ButtonGroup;
2 26 Feb 07 jari 16 import javax.swing.JTable;
2 26 Feb 07 jari 17 import javax.swing.ListSelectionModel;
2 26 Feb 07 jari 18
2 26 Feb 07 jari 19 import org.tigr.microarray.mev.cluster.gui.impl.GUIFactory;
2 26 Feb 07 jari 20
2 26 Feb 07 jari 21
2 26 Feb 07 jari 22 public class KNNCSearchDialog extends javax.swing.JDialog {
2 26 Feb 07 jari 23     
2 26 Feb 07 jari 24     JTable table;
2 26 Feb 07 jari 25     String searchStr;
2 26 Feb 07 jari 26     int numSearchCols;
2 26 Feb 07 jari 27     int numRows;
2 26 Feb 07 jari 28     int numCols;
2 26 Feb 07 jari 29     int numClasses;
2 26 Feb 07 jari 30     Vector foundRowIndices;
2 26 Feb 07 jari 31     ButtonGroup searchButtonGroup;
2 26 Feb 07 jari 32     
2 26 Feb 07 jari 33     /** Creates new form KNNCSearchDialog
2 26 Feb 07 jari 34      * @param parent parent frame
2 26 Feb 07 jari 35      * @param table parent table
2 26 Feb 07 jari 36      * @param modal modal selection
2 26 Feb 07 jari 37      */
2 26 Feb 07 jari 38     public KNNCSearchDialog(javax.swing.JDialog parent, JTable table, int numClasses, boolean modal) {
2 26 Feb 07 jari 39   super(parent, modal);
2 26 Feb 07 jari 40   this.table = table;
2 26 Feb 07 jari 41   this.numClasses = numClasses;
2 26 Feb 07 jari 42   numRows = table.getRowCount();
2 26 Feb 07 jari 43   numCols = table.getColumnCount();
2 26 Feb 07 jari 44   numSearchCols = numCols - (numClasses + 2);
2 26 Feb 07 jari 45   foundRowIndices = new Vector();
2 26 Feb 07 jari 46
2 26 Feb 07 jari 47   initComponents();
2 26 Feb 07 jari 48         this.geneBarContainerLabel.setIcon(GUIFactory.getIcon("dialog_banner2.gif"));
2 26 Feb 07 jari 49   
2 26 Feb 07 jari 50   searchButtonGroup = new ButtonGroup();
2 26 Feb 07 jari 51   searchButtonGroup.add(this.selectAllButton);
2 26 Feb 07 jari 52   searchButtonGroup.add(this.selectIncrButton);
2 26 Feb 07 jari 53
2 26 Feb 07 jari 54   this.setSize( 250, 200 );
2 26 Feb 07 jari 55   this.pack();
2 26 Feb 07 jari 56   
2 26 Feb 07 jari 57   this.jComboBox1.setMaximumRowCount(10);
2 26 Feb 07 jari 58   
2 26 Feb 07 jari 59   searchStr = null;
2 26 Feb 07 jari 60   
2 26 Feb 07 jari 61   this.jComboBox1.setEditable(true);
2 26 Feb 07 jari 62   this.jComboBox1.insertItemAt(new String(""), 0);
2 26 Feb 07 jari 63   
2 26 Feb 07 jari 64   this.findButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 65       public void actionPerformed( ActionEvent ae){
2 26 Feb 07 jari 66     findNextButton.setEnabled(false);
2 26 Feb 07 jari 67     runSearch();
2 26 Feb 07 jari 68     if(foundRowIndices.size() > 0 && selectIncrButton.isSelected())
2 26 Feb 07 jari 69         findNextButton.setEnabled(true);
2 26 Feb 07 jari 70     else
2 26 Feb 07 jari 71         findNextButton.setEnabled(false);
2 26 Feb 07 jari 72       }
2 26 Feb 07 jari 73   });
2 26 Feb 07 jari 74   
2 26 Feb 07 jari 75   this.findNextButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 76       public void actionPerformed(ActionEvent ae){
2 26 Feb 07 jari 77     findNext();
2 26 Feb 07 jari 78       }
2 26 Feb 07 jari 79   });
2 26 Feb 07 jari 80   
2 26 Feb 07 jari 81   this.closeButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 82       public void actionPerformed( ActionEvent ae){
2 26 Feb 07 jari 83     foundRowIndices.removeAllElements();
2 26 Feb 07 jari 84     findNextButton.setEnabled(false);
2 26 Feb 07 jari 85     selectAllButton.setSelected(true);
2 26 Feb 07 jari 86     matchCaseChkBox.setSelected(true);
2 26 Feb 07 jari 87     setVisible(false);
2 26 Feb 07 jari 88       }
2 26 Feb 07 jari 89   });
2 26 Feb 07 jari 90   
2 26 Feb 07 jari 91   this.jComboBox1.addFocusListener(new FocusListener(){
2 26 Feb 07 jari 92       public void focusGained(FocusEvent fe){
2 26 Feb 07 jari 93     findNextButton.setEnabled(false);
2 26 Feb 07 jari 94     findNextButton.repaint();
2 26 Feb 07 jari 95     foundRowIndices.removeAllElements();
2 26 Feb 07 jari 96       }
2 26 Feb 07 jari 97       
2 26 Feb 07 jari 98       public void focusLost(FocusEvent fe){
2 26 Feb 07 jari 99     
2 26 Feb 07 jari 100       }
2 26 Feb 07 jari 101   });
2 26 Feb 07 jari 102   
2 26 Feb 07 jari 103     }
2 26 Feb 07 jari 104     
2 26 Feb 07 jari 105     
2 26 Feb 07 jari 106     /** 
2 26 Feb 07 jari 107      * Runs search within table
2 26 Feb 07 jari 108      * @return Returns true if found
2 26 Feb 07 jari 109      */    
2 26 Feb 07 jari 110     private boolean runSearch(){
2 26 Feb 07 jari 111   
2 26 Feb 07 jari 112   ListSelectionModel lsm = table.getSelectionModel();
2 26 Feb 07 jari 113   foundRowIndices = new Vector();
2 26 Feb 07 jari 114   boolean selectAll = this.selectAllButton.isSelected();
2 26 Feb 07 jari 115   boolean found = false;
2 26 Feb 07 jari 116   
2 26 Feb 07 jari 117   searchStr = (String)this.jComboBox1.getSelectedItem();
2 26 Feb 07 jari 118   if(searchStr == null || numSearchCols == 0 || searchStr.equals(""))
2 26 Feb 07 jari 119       return found;
2 26 Feb 07 jari 120   
2 26 Feb 07 jari 121   table.clearSelection();
2 26 Feb 07 jari 122   this.jComboBox1.insertItemAt(searchStr, 0);
2 26 Feb 07 jari 123   
2 26 Feb 07 jari 124   if( this.matchCaseChkBox.isSelected() ){
2 26 Feb 07 jari 125       for(int row = 0; row < numRows; row++){
2 26 Feb 07 jari 126     
2 26 Feb 07 jari 127     for(int col = (numClasses + 2); col < numCols; col++){
2 26 Feb 07 jari 128         if( ((String)table.getValueAt(row, col)).indexOf( searchStr ) != -1){
2 26 Feb 07 jari 129       //select row;
2 26 Feb 07 jari 130       if(selectAll || !found){
2 26 Feb 07 jari 131           table.addRowSelectionInterval(row, row);
2 26 Feb 07 jari 132           //first occurance
2 26 Feb 07 jari 133           if(!found){
2 26 Feb 07 jari 134         table.scrollRectToVisible(table.getCellRect(row, 0, true));
2 26 Feb 07 jari 135         found = true;
2 26 Feb 07 jari 136           }
2 26 Feb 07 jari 137       }
2 26 Feb 07 jari 138       else
2 26 Feb 07 jari 139           foundRowIndices.add(new Integer(row));
2 26 Feb 07 jari 140       break;
2 26 Feb 07 jari 141         }
2 26 Feb 07 jari 142     }
2 26 Feb 07 jari 143       }
2 26 Feb 07 jari 144   }
2 26 Feb 07 jari 145   
2 26 Feb 07 jari 146   else{
2 26 Feb 07 jari 147       
2 26 Feb 07 jari 148       String upperCaseStr = searchStr.toUpperCase();
2 26 Feb 07 jari 149       
2 26 Feb 07 jari 150       for(int row = 0; row < numRows; row++){
2 26 Feb 07 jari 151     
2 26 Feb 07 jari 152     for(int col = (numClasses + 2); col < numCols; col++){
2 26 Feb 07 jari 153         if( (((String)table.getValueAt(row, col)).toUpperCase()).indexOf( upperCaseStr ) != -1){
2 26 Feb 07 jari 154       //select row;
2 26 Feb 07 jari 155       if(selectAll || !found){
2 26 Feb 07 jari 156           table.addRowSelectionInterval(row, row);
2 26 Feb 07 jari 157           //first occurance
2 26 Feb 07 jari 158           if(!found){
2 26 Feb 07 jari 159         table.scrollRectToVisible(table.getCellRect(row, 0, true));
2 26 Feb 07 jari 160         found = true;
2 26 Feb 07 jari 161           }
2 26 Feb 07 jari 162       }
2 26 Feb 07 jari 163       else
2 26 Feb 07 jari 164           foundRowIndices.add(new Integer(row));
2 26 Feb 07 jari 165       break;
2 26 Feb 07 jari 166         }
2 26 Feb 07 jari 167     }
2 26 Feb 07 jari 168       }
2 26 Feb 07 jari 169   }
2 26 Feb 07 jari 170   
2 26 Feb 07 jari 171   return found;
2 26 Feb 07 jari 172     }
2 26 Feb 07 jari 173     
2 26 Feb 07 jari 174     
2 26 Feb 07 jari 175     
2 26 Feb 07 jari 176     /** 
2 26 Feb 07 jari 177      * Selects next row in table
2 26 Feb 07 jari 178      */    
2 26 Feb 07 jari 179     public void findNext(){
2 26 Feb 07 jari 180   
2 26 Feb 07 jari 181   if(foundRowIndices.isEmpty())
2 26 Feb 07 jari 182       return;
2 26 Feb 07 jari 183   
2 26 Feb 07 jari 184   int row = ((Integer)foundRowIndices.remove(0)).intValue(); //take off first element
2 26 Feb 07 jari 185   table.clearSelection();
2 26 Feb 07 jari 186   table.addRowSelectionInterval(row,row);
2 26 Feb 07 jari 187   table.scrollRectToVisible(table.getCellRect(row, 0, true));
2 26 Feb 07 jari 188   if(foundRowIndices.size() == 0)
2 26 Feb 07 jari 189       findNextButton.setEnabled(false);
2 26 Feb 07 jari 190   
2 26 Feb 07 jari 191     }
2 26 Feb 07 jari 192     
2 26 Feb 07 jari 193     
2 26 Feb 07 jari 194     
2 26 Feb 07 jari 195     /** This method is called from within the constructor to
2 26 Feb 07 jari 196      * initialize the dialog.
2 26 Feb 07 jari 197      */
2 26 Feb 07 jari 198     private void initComponents() {
2 26 Feb 07 jari 199         buttonGroup1 = new javax.swing.ButtonGroup();
2 26 Feb 07 jari 200         jComboBox1 = new javax.swing.JComboBox();
2 26 Feb 07 jari 201         jLabel2 = new javax.swing.JLabel();
2 26 Feb 07 jari 202         matchCaseChkBox = new javax.swing.JCheckBox();
2 26 Feb 07 jari 203         selectAllButton = new javax.swing.JRadioButton();
2 26 Feb 07 jari 204         selectIncrButton = new javax.swing.JRadioButton();
2 26 Feb 07 jari 205         buttonPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 206         findButton = new javax.swing.JButton();
2 26 Feb 07 jari 207         findNextButton = new javax.swing.JButton();
2 26 Feb 07 jari 208         closeButton = new javax.swing.JButton();
2 26 Feb 07 jari 209         geneBarPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 210         geneBarContainerLabel = new javax.swing.JLabel();
2 26 Feb 07 jari 211         
2 26 Feb 07 jari 212         
2 26 Feb 07 jari 213         getContentPane().setLayout(new java.awt.GridBagLayout());
2 26 Feb 07 jari 214         java.awt.GridBagConstraints gridBagConstraints1;
2 26 Feb 07 jari 215         
2 26 Feb 07 jari 216         setTitle("Search");
2 26 Feb 07 jari 217         setName("Search");
2 26 Feb 07 jari 218         setResizable(false);
2 26 Feb 07 jari 219         addWindowListener(new java.awt.event.WindowAdapter() {
2 26 Feb 07 jari 220             public void windowClosing(java.awt.event.WindowEvent evt) {
2 26 Feb 07 jari 221                 closeDialog(evt);
2 26 Feb 07 jari 222             }
2 26 Feb 07 jari 223         });
2 26 Feb 07 jari 224         
2 26 Feb 07 jari 225         jComboBox1.addActionListener(new java.awt.event.ActionListener() {
2 26 Feb 07 jari 226             public void actionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 227                 jComboBox1ActionPerformed(evt);
2 26 Feb 07 jari 228             }
2 26 Feb 07 jari 229         });
2 26 Feb 07 jari 230         
2 26 Feb 07 jari 231         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 232         gridBagConstraints1.gridx = 1;
2 26 Feb 07 jari 233         gridBagConstraints1.gridy = 1;
2 26 Feb 07 jari 234         gridBagConstraints1.gridwidth = 2;
2 26 Feb 07 jari 235         gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 236         gridBagConstraints1.insets = new java.awt.Insets(10, 10, 10, 10);
2 26 Feb 07 jari 237         getContentPane().add(jComboBox1, gridBagConstraints1);
2 26 Feb 07 jari 238         
2 26 Feb 07 jari 239         jLabel2.setText("Find what:");
2 26 Feb 07 jari 240         jLabel2.setForeground(java.awt.Color.black);
2 26 Feb 07 jari 241         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 242         gridBagConstraints1.gridx = 0;
2 26 Feb 07 jari 243         gridBagConstraints1.gridy = 1;
2 26 Feb 07 jari 244         gridBagConstraints1.insets = new java.awt.Insets(10, 10, 10, 10);
2 26 Feb 07 jari 245         gridBagConstraints1.anchor = java.awt.GridBagConstraints.EAST;
2 26 Feb 07 jari 246         getContentPane().add(jLabel2, gridBagConstraints1);
2 26 Feb 07 jari 247         
2 26 Feb 07 jari 248         matchCaseChkBox.setText("Match Case");
2 26 Feb 07 jari 249         matchCaseChkBox.setFocusPainted(false);
2 26 Feb 07 jari 250         matchCaseChkBox.addActionListener(new java.awt.event.ActionListener() {
2 26 Feb 07 jari 251             public void actionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 252                 matchCaseChkBoxActionPerformed(evt);
2 26 Feb 07 jari 253             }
2 26 Feb 07 jari 254         });
2 26 Feb 07 jari 255         
2 26 Feb 07 jari 256         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 257         gridBagConstraints1.gridx = 1;
2 26 Feb 07 jari 258         gridBagConstraints1.gridy = 3;
2 26 Feb 07 jari 259         gridBagConstraints1.insets = new java.awt.Insets(0, 0, 0, 10);
2 26 Feb 07 jari 260         getContentPane().add(matchCaseChkBox, gridBagConstraints1);
2 26 Feb 07 jari 261         
2 26 Feb 07 jari 262         selectAllButton.setToolTipText("Select all finds at once.");
2 26 Feb 07 jari 263         selectAllButton.setSelected(true);
2 26 Feb 07 jari 264         selectAllButton.setText("Select All Rows Found");
2 26 Feb 07 jari 265         selectAllButton.setFocusPainted(false);
2 26 Feb 07 jari 266         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 267         gridBagConstraints1.gridx = 2;
2 26 Feb 07 jari 268         gridBagConstraints1.gridy = 2;
2 26 Feb 07 jari 269         gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
2 26 Feb 07 jari 270         getContentPane().add(selectAllButton, gridBagConstraints1);
2 26 Feb 07 jari 271         
2 26 Feb 07 jari 272         selectIncrButton.setToolTipText("Move throgh finds sequentially.");
2 26 Feb 07 jari 273         selectIncrButton.setText("Select Incrementally");
2 26 Feb 07 jari 274         selectIncrButton.setFocusPainted(false);
2 26 Feb 07 jari 275         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 276         gridBagConstraints1.gridx = 2;
2 26 Feb 07 jari 277         gridBagConstraints1.gridy = 3;
2 26 Feb 07 jari 278         gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
2 26 Feb 07 jari 279         getContentPane().add(selectIncrButton, gridBagConstraints1);
2 26 Feb 07 jari 280         
2 26 Feb 07 jari 281         findButton.setText("Find");
2 26 Feb 07 jari 282         buttonPanel.add(findButton);
2 26 Feb 07 jari 283         
2 26 Feb 07 jari 284         findNextButton.setText("Find Next");
2 26 Feb 07 jari 285         findNextButton.setEnabled(false);
2 26 Feb 07 jari 286         buttonPanel.add(findNextButton);
2 26 Feb 07 jari 287         
2 26 Feb 07 jari 288         closeButton.setText("Close");
2 26 Feb 07 jari 289         buttonPanel.add(closeButton);
2 26 Feb 07 jari 290         
2 26 Feb 07 jari 291         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 292         gridBagConstraints1.gridx = 1;
2 26 Feb 07 jari 293         gridBagConstraints1.gridy = 4;
2 26 Feb 07 jari 294         gridBagConstraints1.gridwidth = 2;
2 26 Feb 07 jari 295         gridBagConstraints1.insets = new java.awt.Insets(10, 0, 0, 0);
2 26 Feb 07 jari 296         getContentPane().add(buttonPanel, gridBagConstraints1);
2 26 Feb 07 jari 297         
2 26 Feb 07 jari 298         geneBarContainerLabel.setToolTipText("The Institute for Genomic Research");
2 26 Feb 07 jari 299         geneBarContainerLabel.setIconTextGap(0);
2 26 Feb 07 jari 300         this.geneBarContainerLabel.setIcon(GUIFactory.getIcon("genebar2.gif"));
2 26 Feb 07 jari 301         
2 26 Feb 07 jari 302         geneBarPanel.add(geneBarContainerLabel);
2 26 Feb 07 jari 303         
2 26 Feb 07 jari 304         gridBagConstraints1 = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 305         gridBagConstraints1.gridx = 0;
2 26 Feb 07 jari 306         gridBagConstraints1.gridy = 0;
2 26 Feb 07 jari 307         gridBagConstraints1.gridwidth = 3;
2 26 Feb 07 jari 308         gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 309         gridBagConstraints1.anchor = java.awt.GridBagConstraints.NORTH;
2 26 Feb 07 jari 310         gridBagConstraints1.weightx = 1.0;
2 26 Feb 07 jari 311         getContentPane().add(geneBarPanel, gridBagConstraints1);
2 26 Feb 07 jari 312         
2 26 Feb 07 jari 313         pack();
2 26 Feb 07 jari 314     }
2 26 Feb 07 jari 315     
2 26 Feb 07 jari 316     private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 317   foundRowIndices.removeAllElements();
2 26 Feb 07 jari 318   findNextButton.setEnabled(false);
2 26 Feb 07 jari 319     }
2 26 Feb 07 jari 320     
2 26 Feb 07 jari 321     /** Handles checkbox event
2 26 Feb 07 jari 322      */    
2 26 Feb 07 jari 323     private void matchCaseChkBoxActionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 324   // Add your handling code here:
2 26 Feb 07 jari 325     }
2 26 Feb 07 jari 326     
2 26 Feb 07 jari 327     /** Closes the dialog */
2 26 Feb 07 jari 328     private void closeDialog(java.awt.event.WindowEvent evt) {
2 26 Feb 07 jari 329   setVisible(false);
2 26 Feb 07 jari 330     }
2 26 Feb 07 jari 331     
2 26 Feb 07 jari 332     
2 26 Feb 07 jari 333     
2 26 Feb 07 jari 334     // Variables declaration - do not modify
2 26 Feb 07 jari 335     private javax.swing.ButtonGroup buttonGroup1;
2 26 Feb 07 jari 336     private javax.swing.JComboBox jComboBox1;
2 26 Feb 07 jari 337     private javax.swing.JLabel jLabel2;
2 26 Feb 07 jari 338     private javax.swing.JCheckBox matchCaseChkBox;
2 26 Feb 07 jari 339     private javax.swing.JRadioButton selectAllButton;
2 26 Feb 07 jari 340     private javax.swing.JRadioButton selectIncrButton;
2 26 Feb 07 jari 341     private javax.swing.JPanel buttonPanel;
2 26 Feb 07 jari 342     private javax.swing.JButton findButton;
2 26 Feb 07 jari 343     private javax.swing.JButton findNextButton;
2 26 Feb 07 jari 344     private javax.swing.JButton closeButton;
2 26 Feb 07 jari 345     private javax.swing.JPanel geneBarPanel;
2 26 Feb 07 jari 346     private javax.swing.JLabel geneBarContainerLabel;
2 26 Feb 07 jari 347     // End of variables declaration
2 26 Feb 07 jari 348     
2 26 Feb 07 jari 349     public static void main(String [] args){
2 26 Feb 07 jari 350         //KNNCSearchDialog dialog = new KNNCSearchDialog(new java.awt.Frame(), new JTable(), numClasses, false);
2 26 Feb 07 jari 351         //dialog.show(); 
2 26 Feb 07 jari 352     }
2 26 Feb 07 jari 353     
2 26 Feb 07 jari 354 }
2 26 Feb 07 jari 355