mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/helpers/ClusterTableSearchDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * ClusterTableSearchDialog.java
2 26 Feb 07 jari 3  *
2 26 Feb 07 jari 4  * Created on March 31, 2004, 1:34 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.helpers;
2 26 Feb 07 jari 8
2 26 Feb 07 jari 9 import java.awt.Color;
2 26 Feb 07 jari 10 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 11 import java.awt.GridBagLayout;
2 26 Feb 07 jari 12 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 13 import java.awt.event.ActionListener;
2 26 Feb 07 jari 14 import java.awt.event.FocusEvent;
2 26 Feb 07 jari 15 import java.awt.event.FocusListener;
2 26 Feb 07 jari 16 import java.util.Vector;
2 26 Feb 07 jari 17
2 26 Feb 07 jari 18 import javax.swing.ButtonGroup;
2 26 Feb 07 jari 19 import javax.swing.JButton;
2 26 Feb 07 jari 20 import javax.swing.JCheckBox;
2 26 Feb 07 jari 21 import javax.swing.JPanel;
2 26 Feb 07 jari 22 import javax.swing.JScrollPane;
2 26 Feb 07 jari 23 import javax.swing.JTable;
2 26 Feb 07 jari 24 import javax.swing.ListSelectionModel;
2 26 Feb 07 jari 25 import javax.swing.ScrollPaneConstants;
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.cluster.gui.impl.GUIFactory;
2 26 Feb 07 jari 29
2 26 Feb 07 jari 30 /**
2 26 Feb 07 jari 31  *
2 26 Feb 07 jari 32  * @author  nbhagaba
2 26 Feb 07 jari 33  */
2 26 Feb 07 jari 34 public class ClusterTableSearchDialog extends javax.swing.JDialog {
2 26 Feb 07 jari 35     
2 26 Feb 07 jari 36     JTable table;
2 26 Feb 07 jari 37     String searchStr;
2 26 Feb 07 jari 38     //int numSearchCols;
2 26 Feb 07 jari 39     int numRows;
2 26 Feb 07 jari 40     int numCols;
2 26 Feb 07 jari 41     int numClasses;
2 26 Feb 07 jari 42     Vector foundRowIndices;
2 26 Feb 07 jari 43     ButtonGroup searchButtonGroup;    
2 26 Feb 07 jari 44     
2 26 Feb 07 jari 45     /** Creates a new instance of ClusterTableSearchDialog */
2 26 Feb 07 jari 46     public ClusterTableSearchDialog(java.awt.Frame parent, JTable table, boolean modal) {
2 26 Feb 07 jari 47   super(parent, modal);
2 26 Feb 07 jari 48   this.table = table;
2 26 Feb 07 jari 49   
2 26 Feb 07 jari 50   numRows = table.getRowCount();
2 26 Feb 07 jari 51   numCols = table.getColumnCount();
2 26 Feb 07 jari 52   //numSearchCols = numCols - 4;
2 26 Feb 07 jari 53   foundRowIndices = new Vector();
2 26 Feb 07 jari 54
2 26 Feb 07 jari 55   initComponents();
2 26 Feb 07 jari 56         this.geneBarContainerLabel.setIcon(GUIFactory.getIcon("dialog_banner2.gif"));
2 26 Feb 07 jari 57   
2 26 Feb 07 jari 58   searchButtonGroup = new ButtonGroup();
2 26 Feb 07 jari 59   searchButtonGroup.add(this.selectAllButton);
2 26 Feb 07 jari 60   searchButtonGroup.add(this.selectIncrButton);
2 26 Feb 07 jari 61
2 26 Feb 07 jari 62   this.setSize(300, 500);
2 26 Feb 07 jari 63   //this.pack();
2 26 Feb 07 jari 64   
2 26 Feb 07 jari 65   this.jComboBox1.setMaximumRowCount(10);
2 26 Feb 07 jari 66   
2 26 Feb 07 jari 67   searchStr = null;
2 26 Feb 07 jari 68   
2 26 Feb 07 jari 69   this.jComboBox1.setEditable(true);
2 26 Feb 07 jari 70   this.jComboBox1.insertItemAt(new String(""), 0);
2 26 Feb 07 jari 71   
2 26 Feb 07 jari 72   this.findButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 73       public void actionPerformed( ActionEvent ae){
2 26 Feb 07 jari 74                 updateRowCount();
2 26 Feb 07 jari 75                 //numRows = table.getRowCount();
2 26 Feb 07 jari 76     findNextButton.setEnabled(false);
2 26 Feb 07 jari 77     runSearch();
2 26 Feb 07 jari 78     if(foundRowIndices.size() > 0 && selectIncrButton.isSelected())
2 26 Feb 07 jari 79         findNextButton.setEnabled(true);
2 26 Feb 07 jari 80     else
2 26 Feb 07 jari 81         findNextButton.setEnabled(false);
2 26 Feb 07 jari 82       }
2 26 Feb 07 jari 83   });
2 26 Feb 07 jari 84   
2 26 Feb 07 jari 85   this.findNextButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 86       public void actionPerformed(ActionEvent ae){
2 26 Feb 07 jari 87                 updateRowCount();
2 26 Feb 07 jari 88                 //numRows = table.getRowCount();
2 26 Feb 07 jari 89     findNext();
2 26 Feb 07 jari 90       }
2 26 Feb 07 jari 91   });
2 26 Feb 07 jari 92   
2 26 Feb 07 jari 93   this.closeButton.addActionListener(new ActionListener(){
2 26 Feb 07 jari 94       public void actionPerformed( ActionEvent ae){
2 26 Feb 07 jari 95     foundRowIndices.removeAllElements();
2 26 Feb 07 jari 96     findNextButton.setEnabled(false);
2 26 Feb 07 jari 97     selectAllButton.setSelected(true);
2 26 Feb 07 jari 98     matchCaseChkBox.setSelected(true);
2 26 Feb 07 jari 99     setVisible(false);
2 26 Feb 07 jari 100       }
2 26 Feb 07 jari 101   });
2 26 Feb 07 jari 102   
2 26 Feb 07 jari 103   this.jComboBox1.addFocusListener(new FocusListener(){
2 26 Feb 07 jari 104       public void focusGained(FocusEvent fe){
2 26 Feb 07 jari 105     findNextButton.setEnabled(false);
2 26 Feb 07 jari 106     findNextButton.repaint();
2 26 Feb 07 jari 107     foundRowIndices.removeAllElements();
2 26 Feb 07 jari 108       }
2 26 Feb 07 jari 109       
2 26 Feb 07 jari 110       public void focusLost(FocusEvent fe){
2 26 Feb 07 jari 111     
2 26 Feb 07 jari 112       }
2 26 Feb 07 jari 113   });        
2 26 Feb 07 jari 114     }
2 26 Feb 07 jari 115     
2 26 Feb 07 jari 116     private void updateRowCount() {
2 26 Feb 07 jari 117         numRows = table.getRowCount();
2 26 Feb 07 jari 118     }
2 26 Feb 07 jari 119     
2 26 Feb 07 jari 120     /** 
2 26 Feb 07 jari 121      * Runs search within table
2 26 Feb 07 jari 122      * @return Returns true if found
2 26 Feb 07 jari 123      */    
2 26 Feb 07 jari 124     private boolean runSearch(){
2 26 Feb 07 jari 125         
2 26 Feb 07 jari 126         int[] colsToSearch = colPanel.getSelectedCols();        
2 26 Feb 07 jari 127   
2 26 Feb 07 jari 128   ListSelectionModel lsm = table.getSelectionModel();
2 26 Feb 07 jari 129   foundRowIndices = new Vector();
2 26 Feb 07 jari 130   boolean selectAll = this.selectAllButton.isSelected();
2 26 Feb 07 jari 131   boolean found = false;
2 26 Feb 07 jari 132         
2 26 Feb 07 jari 133         table.clearSelection();
2 26 Feb 07 jari 134   
2 26 Feb 07 jari 135   searchStr = (String)this.jComboBox1.getSelectedItem();
2 26 Feb 07 jari 136
2 26 Feb 07 jari 137   if(searchStr == null || colsToSearch.length == 0 || searchStr.equals(""))
2 26 Feb 07 jari 138       return found;
2 26 Feb 07 jari 139   
2 26 Feb 07 jari 140   
2 26 Feb 07 jari 141   this.jComboBox1.insertItemAt(searchStr, 0);
2 26 Feb 07 jari 142   
2 26 Feb 07 jari 143   if( this.matchCaseChkBox.isSelected() ){
2 26 Feb 07 jari 144       for(int row = 0; row < numRows; row++){
2 26 Feb 07 jari 145     
2 26 Feb 07 jari 146     for(int i = 0; i < colsToSearch.length; i++){
2 26 Feb 07 jari 147         if( ((String)table.getModel().getValueAt(row, colsToSearch[i])).indexOf( searchStr ) != -1){
2 26 Feb 07 jari 148       //select row;
2 26 Feb 07 jari 149       if(selectAll || !found){
2 26 Feb 07 jari 150           table.addRowSelectionInterval(row, row);
2 26 Feb 07 jari 151           //first occurance
2 26 Feb 07 jari 152           if(!found){
2 26 Feb 07 jari 153         table.scrollRectToVisible(table.getCellRect(row, 0, true));
2 26 Feb 07 jari 154         found = true;
2 26 Feb 07 jari 155           }
2 26 Feb 07 jari 156       }
2 26 Feb 07 jari 157       else
2 26 Feb 07 jari 158           foundRowIndices.add(new Integer(row));
2 26 Feb 07 jari 159       break;
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   
2 26 Feb 07 jari 165   else{
2 26 Feb 07 jari 166       
2 26 Feb 07 jari 167       String upperCaseStr = searchStr.toUpperCase();
2 26 Feb 07 jari 168       
2 26 Feb 07 jari 169       for(int row = 0; row < numRows; row++){
2 26 Feb 07 jari 170     
2 26 Feb 07 jari 171     for(int i = 0; i < colsToSearch.length; i++){
2 26 Feb 07 jari 172         if( (((String)table.getModel().getValueAt(row, colsToSearch[i])).toUpperCase()).indexOf( upperCaseStr ) != -1){
2 26 Feb 07 jari 173       //select row;
2 26 Feb 07 jari 174       if(selectAll || !found){
2 26 Feb 07 jari 175           table.addRowSelectionInterval(row, row);
2 26 Feb 07 jari 176           //first occurance
2 26 Feb 07 jari 177           if(!found){
2 26 Feb 07 jari 178         table.scrollRectToVisible(table.getCellRect(row, 0, true));
2 26 Feb 07 jari 179         found = true;
2 26 Feb 07 jari 180           }
2 26 Feb 07 jari 181       }
2 26 Feb 07 jari 182       else
2 26 Feb 07 jari 183           foundRowIndices.add(new Integer(row));
2 26 Feb 07 jari 184       break;
2 26 Feb 07 jari 185         }
2 26 Feb 07 jari 186     }
2 26 Feb 07 jari 187       }
2 26 Feb 07 jari 188   }
2 26 Feb 07 jari 189   
2 26 Feb 07 jari 190   return found;
2 26 Feb 07 jari 191     }  
2 26 Feb 07 jari 192     
2 26 Feb 07 jari 193     /** 
2 26 Feb 07 jari 194      * Selects next row in table
2 26 Feb 07 jari 195      */    
2 26 Feb 07 jari 196     public void findNext(){
2 26 Feb 07 jari 197   
2 26 Feb 07 jari 198   if(foundRowIndices.isEmpty())
2 26 Feb 07 jari 199       return;
2 26 Feb 07 jari 200   
2 26 Feb 07 jari 201   int row = ((Integer)foundRowIndices.remove(0)).intValue(); //take off first element
2 26 Feb 07 jari 202   table.clearSelection();
2 26 Feb 07 jari 203   table.addRowSelectionInterval(row,row);
2 26 Feb 07 jari 204   table.scrollRectToVisible(table.getCellRect(row, 0, true));
2 26 Feb 07 jari 205   if(foundRowIndices.size() == 0)
2 26 Feb 07 jari 206       findNextButton.setEnabled(false);
2 26 Feb 07 jari 207   
2 26 Feb 07 jari 208     }    
2 26 Feb 07 jari 209     
2 26 Feb 07 jari 210     /** This method is called from within the constructor to
2 26 Feb 07 jari 211      * initialize the dialog.
2 26 Feb 07 jari 212      */
2 26 Feb 07 jari 213     private void initComponents() {
2 26 Feb 07 jari 214         java.awt.GridBagConstraints gridBagConstraints;
2 26 Feb 07 jari 215
2 26 Feb 07 jari 216         colPanel = new ColumnNamesPanel();
2 26 Feb 07 jari 217         buttonGroup1 = new javax.swing.ButtonGroup();
2 26 Feb 07 jari 218         jComboBox1 = new javax.swing.JComboBox();
2 26 Feb 07 jari 219         jLabel2 = new javax.swing.JLabel();
2 26 Feb 07 jari 220         matchCaseChkBox = new javax.swing.JCheckBox();
2 26 Feb 07 jari 221         selectAllButton = new javax.swing.JRadioButton();
2 26 Feb 07 jari 222         selectIncrButton = new javax.swing.JRadioButton();
2 26 Feb 07 jari 223         buttonPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 224         findButton = new javax.swing.JButton();
2 26 Feb 07 jari 225         findNextButton = new javax.swing.JButton();
2 26 Feb 07 jari 226         closeButton = new javax.swing.JButton();
2 26 Feb 07 jari 227         geneBarPanel = new javax.swing.JPanel();
2 26 Feb 07 jari 228         geneBarContainerLabel = new javax.swing.JLabel();
2 26 Feb 07 jari 229
2 26 Feb 07 jari 230         getContentPane().setLayout(new java.awt.GridBagLayout());
2 26 Feb 07 jari 231
2 26 Feb 07 jari 232         setTitle("Table Search");
2 26 Feb 07 jari 233         setName("Table Search");
2 26 Feb 07 jari 234         //setResizable(false);
2 26 Feb 07 jari 235         addWindowListener(new java.awt.event.WindowAdapter() {
2 26 Feb 07 jari 236             public void windowClosing(java.awt.event.WindowEvent evt) {
2 26 Feb 07 jari 237                 closeDialog(evt);
2 26 Feb 07 jari 238             }
2 26 Feb 07 jari 239         });
2 26 Feb 07 jari 240
2 26 Feb 07 jari 241         jComboBox1.addActionListener(new java.awt.event.ActionListener() {
2 26 Feb 07 jari 242             public void actionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 243                 jComboBox1ActionPerformed(evt);
2 26 Feb 07 jari 244             }
2 26 Feb 07 jari 245         });
2 26 Feb 07 jari 246         
2 26 Feb 07 jari 247         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 248         gridBagConstraints.gridx = 0;
2 26 Feb 07 jari 249         gridBagConstraints.gridy = 1;
2 26 Feb 07 jari 250         gridBagConstraints.gridwidth = 3;
2 26 Feb 07 jari 251         gridBagConstraints.weighty = 80;
2 26 Feb 07 jari 252         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
2 26 Feb 07 jari 253         gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
2 26 Feb 07 jari 254         getContentPane().add(colPanel, gridBagConstraints);        
2 26 Feb 07 jari 255
2 26 Feb 07 jari 256         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 257         gridBagConstraints.gridx = 1;
2 26 Feb 07 jari 258         gridBagConstraints.gridy = 2;
2 26 Feb 07 jari 259         gridBagConstraints.weighty = 4;
2 26 Feb 07 jari 260         gridBagConstraints.gridwidth = 2;
2 26 Feb 07 jari 261         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 262         gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
2 26 Feb 07 jari 263         getContentPane().add(jComboBox1, gridBagConstraints);
2 26 Feb 07 jari 264
2 26 Feb 07 jari 265         jLabel2.setForeground(java.awt.Color.black);
2 26 Feb 07 jari 266         jLabel2.setText("Find what:");
2 26 Feb 07 jari 267         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 268         gridBagConstraints.gridx = 0;
2 26 Feb 07 jari 269         gridBagConstraints.gridy = 2;
2 26 Feb 07 jari 270         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
2 26 Feb 07 jari 271         gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
2 26 Feb 07 jari 272         getContentPane().add(jLabel2, gridBagConstraints);
2 26 Feb 07 jari 273
2 26 Feb 07 jari 274         matchCaseChkBox.setText("Match Case");
2 26 Feb 07 jari 275         matchCaseChkBox.setFocusPainted(false);
2 26 Feb 07 jari 276         matchCaseChkBox.addActionListener(new java.awt.event.ActionListener() {
2 26 Feb 07 jari 277             public void actionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 278                 matchCaseChkBoxActionPerformed(evt);
2 26 Feb 07 jari 279             }
2 26 Feb 07 jari 280         });
2 26 Feb 07 jari 281
2 26 Feb 07 jari 282         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 283         gridBagConstraints.gridx = 0;
2 26 Feb 07 jari 284         gridBagConstraints.gridy = 4;
2 26 Feb 07 jari 285         gridBagConstraints.weighty = 4;
2 26 Feb 07 jari 286         gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
2 26 Feb 07 jari 287         getContentPane().add(matchCaseChkBox, gridBagConstraints);
2 26 Feb 07 jari 288
2 26 Feb 07 jari 289         selectAllButton.setSelected(true);
2 26 Feb 07 jari 290         selectAllButton.setText("Select All Rows Found");
2 26 Feb 07 jari 291         selectAllButton.setToolTipText("Select all finds at once.");
2 26 Feb 07 jari 292         selectAllButton.setFocusPainted(false);
2 26 Feb 07 jari 293         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 294         gridBagConstraints.gridx = 1;
2 26 Feb 07 jari 295         gridBagConstraints.gridy = 3;
2 26 Feb 07 jari 296         gridBagConstraints.weighty = 4;
2 26 Feb 07 jari 297         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
2 26 Feb 07 jari 298         getContentPane().add(selectAllButton, gridBagConstraints);
2 26 Feb 07 jari 299
2 26 Feb 07 jari 300         selectIncrButton.setText("Select Incrementally");
2 26 Feb 07 jari 301         selectIncrButton.setToolTipText("Move throgh finds sequentially.");
2 26 Feb 07 jari 302         selectIncrButton.setFocusPainted(false);
2 26 Feb 07 jari 303         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 304         gridBagConstraints.gridx = 1;
2 26 Feb 07 jari 305         gridBagConstraints.gridy = 4;
2 26 Feb 07 jari 306         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
2 26 Feb 07 jari 307         getContentPane().add(selectIncrButton, gridBagConstraints);
2 26 Feb 07 jari 308
2 26 Feb 07 jari 309         findButton.setText("Find");
2 26 Feb 07 jari 310         buttonPanel.add(findButton);
2 26 Feb 07 jari 311
2 26 Feb 07 jari 312         findNextButton.setText("Find Next");
2 26 Feb 07 jari 313         findNextButton.setEnabled(false);
2 26 Feb 07 jari 314         buttonPanel.add(findNextButton);
2 26 Feb 07 jari 315
2 26 Feb 07 jari 316         closeButton.setText("Close");
2 26 Feb 07 jari 317         buttonPanel.add(closeButton);
2 26 Feb 07 jari 318
2 26 Feb 07 jari 319         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 320         gridBagConstraints.gridx = 0;
2 26 Feb 07 jari 321         gridBagConstraints.gridy = 5;
2 26 Feb 07 jari 322         gridBagConstraints.weighty = 4;
2 26 Feb 07 jari 323         gridBagConstraints.gridwidth = 3;
2 26 Feb 07 jari 324         gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
2 26 Feb 07 jari 325         getContentPane().add(buttonPanel, gridBagConstraints);
2 26 Feb 07 jari 326
2 26 Feb 07 jari 327         geneBarContainerLabel.setToolTipText("The Institute for Genomic Research");
2 26 Feb 07 jari 328         geneBarContainerLabel.setIconTextGap(0);
2 26 Feb 07 jari 329         this.geneBarContainerLabel.setIcon(GUIFactory.getIcon("genebar2.gif"));
2 26 Feb 07 jari 330
2 26 Feb 07 jari 331         geneBarPanel.add(geneBarContainerLabel);
2 26 Feb 07 jari 332
2 26 Feb 07 jari 333         gridBagConstraints = new java.awt.GridBagConstraints();
2 26 Feb 07 jari 334         gridBagConstraints.gridx = 0;
2 26 Feb 07 jari 335         gridBagConstraints.gridy = 0;
2 26 Feb 07 jari 336         gridBagConstraints.gridwidth = 3;
2 26 Feb 07 jari 337         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
2 26 Feb 07 jari 338         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
2 26 Feb 07 jari 339         gridBagConstraints.weightx = 1.0;
2 26 Feb 07 jari 340         gridBagConstraints.weighty = 4;
2 26 Feb 07 jari 341         getContentPane().add(geneBarPanel, gridBagConstraints);
2 26 Feb 07 jari 342
2 26 Feb 07 jari 343         //pack();
2 26 Feb 07 jari 344     }    
2 26 Feb 07 jari 345     
2 26 Feb 07 jari 346     private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 347   foundRowIndices.removeAllElements();
2 26 Feb 07 jari 348   findNextButton.setEnabled(false);
2 26 Feb 07 jari 349     }
2 26 Feb 07 jari 350     
2 26 Feb 07 jari 351     /** Handles checkbox event
2 26 Feb 07 jari 352      */    
2 26 Feb 07 jari 353     private void matchCaseChkBoxActionPerformed(java.awt.event.ActionEvent evt) {
2 26 Feb 07 jari 354   // Add your handling code here:
2 26 Feb 07 jari 355     }
2 26 Feb 07 jari 356     
2 26 Feb 07 jari 357     /** Closes the dialog */
2 26 Feb 07 jari 358     private void closeDialog(java.awt.event.WindowEvent evt) {
2 26 Feb 07 jari 359   setVisible(false);
2 26 Feb 07 jari 360     }
2 26 Feb 07 jari 361     
2 26 Feb 07 jari 362     
2 26 Feb 07 jari 363     private class ColumnNamesPanel extends JPanel {
2 26 Feb 07 jari 364         JCheckBox[] columnNameBoxes;
2 26 Feb 07 jari 365         JButton selectAllButton, clearAllButton;
2 26 Feb 07 jari 366         ColumnNamesPanel() {
2 26 Feb 07 jari 367             ColumnNamesPanel.this.setBorder(new TitledBorder("Select fields to search"));
2 26 Feb 07 jari 368             ColumnNamesPanel.this.setBackground(Color.white);
2 26 Feb 07 jari 369             String[] columnNames = new String[table.getColumnCount() - 1];
2 26 Feb 07 jari 370             for (int i = 0; i < columnNames.length; i++) {
2 26 Feb 07 jari 371                 columnNames[i] = table.getColumnName(i + 1);
2 26 Feb 07 jari 372             }
2 26 Feb 07 jari 373             
2 26 Feb 07 jari 374             columnNameBoxes = new JCheckBox[columnNames.length];
2 26 Feb 07 jari 375             for (int i= 0; i < columnNameBoxes.length; i++) {
2 26 Feb 07 jari 376                 columnNameBoxes[i] = new JCheckBox(columnNames[i], true);
2 26 Feb 07 jari 377                 columnNameBoxes[i].setBackground(Color.white);
2 26 Feb 07 jari 378             }
2 26 Feb 07 jari 379             
2 26 Feb 07 jari 380             JPanel checkBoxPanel = createCheckBoxPanel();
2 26 Feb 07 jari 381             JScrollPane scroll = new JScrollPane(checkBoxPanel);
2 26 Feb 07 jari 382             scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
2 26 Feb 07 jari 383             scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
2 26 Feb 07 jari 384             
2 26 Feb 07 jari 385             JButton selectAllButton = new JButton("Select All");
2 26 Feb 07 jari 386             JButton clearAllButton = new JButton("Clear All");
2 26 Feb 07 jari 387             
2 26 Feb 07 jari 388             selectAllButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 389                 public void actionPerformed(ActionEvent evt) {
2 26 Feb 07 jari 390                     for (int i = 0; i < columnNameBoxes.length; i++) {
2 26 Feb 07 jari 391                         columnNameBoxes[i].setSelected(true);
2 26 Feb 07 jari 392                     }
2 26 Feb 07 jari 393                 }
2 26 Feb 07 jari 394             });
2 26 Feb 07 jari 395             
2 26 Feb 07 jari 396             clearAllButton.addActionListener(new ActionListener() {
2 26 Feb 07 jari 397                 public void actionPerformed(ActionEvent evt) {
2 26 Feb 07 jari 398                     for (int i = 0; i < columnNameBoxes.length; i++) {
2 26 Feb 07 jari 399                         columnNameBoxes[i].setSelected(false);
2 26 Feb 07 jari 400                     }
2 26 Feb 07 jari 401                 }
2 26 Feb 07 jari 402             });    
2 26 Feb 07 jari 403             
2 26 Feb 07 jari 404             GridBagConstraints constraints = new GridBagConstraints();
2 26 Feb 07 jari 405             GridBagLayout gridbag = new GridBagLayout();
2 26 Feb 07 jari 406             ColumnNamesPanel.this.setLayout(gridbag);
2 26 Feb 07 jari 407             
2 26 Feb 07 jari 408             buildConstraints(constraints, 0, 0, 1, 1, 50, 10);
2 26 Feb 07 jari 409             gridbag.setConstraints(selectAllButton, constraints);
2 26 Feb 07 jari 410             ColumnNamesPanel.this.add(selectAllButton);
2 26 Feb 07 jari 411             
2 26 Feb 07 jari 412             buildConstraints(constraints, 1, 0, 1, 1, 50, 0);            
2 26 Feb 07 jari 413             gridbag.setConstraints(clearAllButton, constraints);
2 26 Feb 07 jari 414             ColumnNamesPanel.this.add(clearAllButton);    
2 26 Feb 07 jari 415             
2 26 Feb 07 jari 416             buildConstraints(constraints, 0, 1, 2, 1, 100, 90);
2 26 Feb 07 jari 417             constraints.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 418             gridbag.setConstraints(scroll, constraints);
2 26 Feb 07 jari 419             ColumnNamesPanel.this.add(scroll);            
2 26 Feb 07 jari 420             
2 26 Feb 07 jari 421         }
2 26 Feb 07 jari 422         
2 26 Feb 07 jari 423         private JPanel createCheckBoxPanel() {
2 26 Feb 07 jari 424             JPanel panel1 = new JPanel();
2 26 Feb 07 jari 425             panel1.setBackground(Color.white);
2 26 Feb 07 jari 426             GridBagConstraints constraints = new GridBagConstraints();
2 26 Feb 07 jari 427             GridBagLayout gridbag = new GridBagLayout();
2 26 Feb 07 jari 428             panel1.setLayout(gridbag);    
2 26 Feb 07 jari 429             constraints.anchor = GridBagConstraints.WEST;
2 26 Feb 07 jari 430             for (int i = 0; i < columnNameBoxes.length; i++) {
2 26 Feb 07 jari 431                 buildConstraints(constraints, 0, i, 1, 1, 100, 0);
2 26 Feb 07 jari 432                 gridbag.setConstraints(columnNameBoxes[i], constraints);
2 26 Feb 07 jari 433                 panel1.add(columnNameBoxes[i]);
2 26 Feb 07 jari 434             }
2 26 Feb 07 jari 435             return panel1;
2 26 Feb 07 jari 436         }
2 26 Feb 07 jari 437         
2 26 Feb 07 jari 438         public int[] getSelectedCols() {
2 26 Feb 07 jari 439             Vector selColsVector = new Vector();
2 26 Feb 07 jari 440             for (int i = 0; i < columnNameBoxes.length; i++) {
2 26 Feb 07 jari 441                 if (columnNameBoxes[i].isSelected()) {
2 26 Feb 07 jari 442                     selColsVector.add(new Integer(i + 1));
2 26 Feb 07 jari 443                 }                
2 26 Feb 07 jari 444             }
2 26 Feb 07 jari 445             
2 26 Feb 07 jari 446             int[] selCols = new int[selColsVector.size()];
2 26 Feb 07 jari 447             for (int i = 0; i < selCols.length; i++) {
2 26 Feb 07 jari 448                 selCols[i] = ((Integer)(selColsVector.get(i))).intValue();
2 26 Feb 07 jari 449             }
2 26 Feb 07 jari 450             
2 26 Feb 07 jari 451             return selCols;
2 26 Feb 07 jari 452         }
2 26 Feb 07 jari 453         
2 26 Feb 07 jari 454         public String[] getSelectedColNames() {
2 26 Feb 07 jari 455             Vector selColNamesVector = new Vector();
2 26 Feb 07 jari 456             for (int i = 0; i < columnNameBoxes.length; i++) {
2 26 Feb 07 jari 457                 if (columnNameBoxes[i].isSelected()) {
2 26 Feb 07 jari 458                     selColNamesVector.add(table.getColumnName(i + 1));
2 26 Feb 07 jari 459                 }                
2 26 Feb 07 jari 460             }    
2 26 Feb 07 jari 461             
2 26 Feb 07 jari 462             String[] selColNames = new String[selColNamesVector.size()];
2 26 Feb 07 jari 463             for (int i = 0; i < selColNames.length; i++) {
2 26 Feb 07 jari 464                 selColNames[i] = (String)(selColNamesVector.get(i));
2 26 Feb 07 jari 465             }
2 26 Feb 07 jari 466             
2 26 Feb 07 jari 467             return selColNames;
2 26 Feb 07 jari 468         }
2 26 Feb 07 jari 469         
2 26 Feb 07 jari 470     }
2 26 Feb 07 jari 471     
2 26 Feb 07 jari 472     void buildConstraints(GridBagConstraints gbc, int gx, int gy,
2 26 Feb 07 jari 473     int gw, int gh, int wx, int wy) {
2 26 Feb 07 jari 474         
2 26 Feb 07 jari 475         gbc.gridx = gx;
2 26 Feb 07 jari 476         gbc.gridy = gy;
2 26 Feb 07 jari 477         gbc.gridwidth = gw;
2 26 Feb 07 jari 478         gbc.gridheight = gh;
2 26 Feb 07 jari 479         gbc.weightx = wx;
2 26 Feb 07 jari 480         gbc.weighty = wy;
2 26 Feb 07 jari 481     }     
2 26 Feb 07 jari 482     // Variables declaration - do not modify
2 26 Feb 07 jari 483     private javax.swing.JCheckBox matchCaseChkBox;
2 26 Feb 07 jari 484     private javax.swing.JRadioButton selectIncrButton;
2 26 Feb 07 jari 485     private javax.swing.JLabel jLabel2;
2 26 Feb 07 jari 486     private javax.swing.JLabel geneBarContainerLabel;
2 26 Feb 07 jari 487     private javax.swing.JButton findButton;
2 26 Feb 07 jari 488     private javax.swing.JPanel geneBarPanel;
2 26 Feb 07 jari 489     private javax.swing.JButton findNextButton;
2 26 Feb 07 jari 490     private javax.swing.ButtonGroup buttonGroup1;
2 26 Feb 07 jari 491     private javax.swing.JPanel buttonPanel;
2 26 Feb 07 jari 492     private javax.swing.JRadioButton selectAllButton;
2 26 Feb 07 jari 493     private javax.swing.JComboBox jComboBox1;
2 26 Feb 07 jari 494     private javax.swing.JButton closeButton;
2 26 Feb 07 jari 495     private ColumnNamesPanel colPanel;
2 26 Feb 07 jari 496     // End of variables declaration    
2 26 Feb 07 jari 497     
2 26 Feb 07 jari 498     public static void main(String [] args){
2 26 Feb 07 jari 499         ClusterTableSearchDialog dialog = new ClusterTableSearchDialog(new java.awt.Frame(), new JTable(), false);
2 26 Feb 07 jari 500         dialog.show(); 
2 26 Feb 07 jari 501     }    
2 26 Feb 07 jari 502     
2 26 Feb 07 jari 503 }