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

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