mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/sam/SAMInfoViewer.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, 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: SAMInfoViewer.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.6 $
2 26 Feb 07 jari 8  * $Date: 2006/03/24 15:51:28 $
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 package org.tigr.microarray.mev.cluster.gui.impl.sam;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.Color;
2 26 Feb 07 jari 15 import java.awt.Dimension;
2 26 Feb 07 jari 16 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 17 import java.awt.GridBagLayout;
2 26 Feb 07 jari 18 import java.awt.Insets;
2 26 Feb 07 jari 19
2 26 Feb 07 jari 20 import javax.swing.JComponent;
2 26 Feb 07 jari 21 import javax.swing.JLabel;
2 26 Feb 07 jari 22 import javax.swing.JPanel;
2 26 Feb 07 jari 23 import javax.swing.JTextArea;
2 26 Feb 07 jari 24
2 26 Feb 07 jari 25 import org.tigr.microarray.mev.cluster.gui.impl.ViewerAdapter;
2 26 Feb 07 jari 26
2 26 Feb 07 jari 27 public class SAMInfoViewer extends ViewerAdapter implements java.io.Serializable {
2 26 Feb 07 jari 28     public static final long serialVersionUID = 202015030001L;
2 26 Feb 07 jari 29     
2 26 Feb 07 jari 30     private JComponent header;
2 26 Feb 07 jari 31     private JTextArea  content;
2 26 Feb 07 jari 32     private int studyDesign;
2 26 Feb 07 jari 33     
2 26 Feb 07 jari 34     /**
2 26 Feb 07 jari 35      * Constructs a <code>KMCInfoViewer</code> with specified
2 26 Feb 07 jari 36      * clusters and number of genes.
2 26 Feb 07 jari 37      */
2 26 Feb 07 jari 38     public SAMInfoViewer(int[][] clusters, int genes, int studyDesign) {
2 26 Feb 07 jari 39         this.studyDesign = studyDesign;
2 26 Feb 07 jari 40   header  = createHeader();
2 26 Feb 07 jari 41   content = createContent(clusters, genes);
2 26 Feb 07 jari 42        
2 26 Feb 07 jari 43   setMaxWidth(content, header);
2 26 Feb 07 jari 44     }
2 26 Feb 07 jari 45     public SAMInfoViewer(JTextArea content, JComponent header){
2 26 Feb 07 jari 46       this.content = content;
2 26 Feb 07 jari 47       this.header = header;
2 26 Feb 07 jari 48     setMaxWidth(content, header);
2 26 Feb 07 jari 49     }
2 26 Feb 07 jari 50     
2 26 Feb 07 jari 51     /**
2 26 Feb 07 jari 52      * Returns component to be inserted into the framework scroll pane.
2 26 Feb 07 jari 53      */
2 26 Feb 07 jari 54     public JComponent getContentComponent() {
2 26 Feb 07 jari 55   return content;
2 26 Feb 07 jari 56     }
2 26 Feb 07 jari 57     
2 26 Feb 07 jari 58     /**
2 26 Feb 07 jari 59      * Returns the viewer header.
2 26 Feb 07 jari 60      */
2 26 Feb 07 jari 61     public JComponent getHeaderComponent() {
2 26 Feb 07 jari 62   return header;
2 26 Feb 07 jari 63     }
2 26 Feb 07 jari 64     
2 26 Feb 07 jari 65     /**
2 26 Feb 07 jari 66      * Creates the viewer header.
2 26 Feb 07 jari 67      */
2 26 Feb 07 jari 68     private JComponent createHeader() {
2 26 Feb 07 jari 69   JPanel panel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 70   panel.setBackground(Color.white);
2 26 Feb 07 jari 71   GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 72   gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 73   gbc.insets = new Insets(10, 0, 10, 0);
2 26 Feb 07 jari 74   panel.add(new JLabel("<html><body bgcolor='#FFFFFF'><font face='serif' size='5' color='#000080'><b>Cluster Information</b></font></body></html>"), gbc);
2 26 Feb 07 jari 75   return panel;
2 26 Feb 07 jari 76     }
2 26 Feb 07 jari 77     
2 26 Feb 07 jari 78     /**
2 26 Feb 07 jari 79      * Creates the viewer content component.
2 26 Feb 07 jari 80      */
2 26 Feb 07 jari 81     private JTextArea createContent(int[][] clusters, int genes) {
2 26 Feb 07 jari 82   JTextArea area = new JTextArea(clusters.length*3, 20);
2 26 Feb 07 jari 83   area.setEditable(false);
2 26 Feb 07 jari 84         area.setMargin(new Insets(0, 10, 0, 0));  
2 26 Feb 07 jari 85   StringBuffer sb = new StringBuffer(clusters.length*3*10);
2 26 Feb 07 jari 86         //System.out.println("SAMIInfoViewer.createContent(): studyDesign = " + studyDesign);
2 26 Feb 07 jari 87         if ((studyDesign == SAMInitDialog.TWO_CLASS_UNPAIRED) || (studyDesign == SAMInitDialog.TWO_CLASS_PAIRED) || (studyDesign == SAMInitDialog.CENSORED_SURVIVAL) || (studyDesign == SAMInitDialog.ONE_CLASS)) {
2 26 Feb 07 jari 88             for (int counter = 0; counter < clusters.length; counter++) {
2 26 Feb 07 jari 89                 if (counter == 0) {
2 26 Feb 07 jari 90                     sb.append("Positive Significant Genes ");
2 26 Feb 07 jari 91                     sb.append("\t");
2 26 Feb 07 jari 92                     sb.append("# of Positive Significant Genes: "+clusters[counter].length);
2 26 Feb 07 jari 93                     sb.append("\n\t\t");
2 26 Feb 07 jari 94                     sb.append("% of Positive Significant Genes: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 95                     sb.append("\n\n");
2 26 Feb 07 jari 96                 } else if (counter == 1) {
2 26 Feb 07 jari 97                     sb.append("Negative Significant Genes ");
2 26 Feb 07 jari 98                     sb.append("\t");
2 26 Feb 07 jari 99                     sb.append("# of Negative Significant Genes: "+clusters[counter].length);
2 26 Feb 07 jari 100                     sb.append("\n\t\t");
2 26 Feb 07 jari 101                     sb.append("% of Negative Significant Genes: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 102                     sb.append("\n\n");
2 26 Feb 07 jari 103                 } else if (counter == 2) {
2 26 Feb 07 jari 104                     sb.append("All Significant Genes ");
2 26 Feb 07 jari 105                     sb.append("\t");
2 26 Feb 07 jari 106                     sb.append("Total # of Significant Genes: "+clusters[counter].length);
2 26 Feb 07 jari 107                     sb.append("\n\t\t");
2 26 Feb 07 jari 108                     sb.append("% of Genes that are Significant: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 109                     sb.append("\n\n");
2 26 Feb 07 jari 110                 } else if (counter == 3) {
2 26 Feb 07 jari 111                     sb.append("Non-Significant Genes ");
2 26 Feb 07 jari 112                     sb.append("\t");
2 26 Feb 07 jari 113                     sb.append("Total # of Non-Significant Genes: "+clusters[counter].length);
2 26 Feb 07 jari 114                     sb.append("\n\t\t");
2 26 Feb 07 jari 115                     sb.append("% of Genes that are Not Significant: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 116                     sb.append("\n\n");
2 26 Feb 07 jari 117                 }
2 26 Feb 07 jari 118             }
2 26 Feb 07 jari 119         } else {
2 26 Feb 07 jari 120             for (int counter = 0; counter < clusters.length; counter++) {
2 26 Feb 07 jari 121                 if (counter == 0) {
2 26 Feb 07 jari 122                     sb.append("Significant Genes ");
2 26 Feb 07 jari 123                     sb.append("\t");
2 26 Feb 07 jari 124                     sb.append("# of Significant Genes: "+clusters[counter].length);
2 26 Feb 07 jari 125                     sb.append("\n\t\t");
2 26 Feb 07 jari 126                     sb.append("% of Significant Genes: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 127                     sb.append("\n\n");
2 26 Feb 07 jari 128                 } else if (counter == 1) {
2 26 Feb 07 jari 129                     sb.append("Non-significant Genes ");
2 26 Feb 07 jari 130                     sb.append("\t");
2 26 Feb 07 jari 131                     sb.append("# of Non-significant Genes: "+clusters[counter].length);
2 26 Feb 07 jari 132                     sb.append("\n\t\t");
2 26 Feb 07 jari 133                     sb.append("% of Non-significant Genes: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 134                     sb.append("\n\n");
2 26 Feb 07 jari 135                 } 
2 26 Feb 07 jari 136             }            
2 26 Feb 07 jari 137         }
2 26 Feb 07 jari 138   area.setText(sb.toString());
2 26 Feb 07 jari 139   area.setCaretPosition(0);
2 26 Feb 07 jari 140   return area;
2 26 Feb 07 jari 141     }
2 26 Feb 07 jari 142     
2 26 Feb 07 jari 143     /**
2 26 Feb 07 jari 144      * Synchronize content and header sizes.
2 26 Feb 07 jari 145      */
2 26 Feb 07 jari 146     private void setMaxWidth(JComponent content, JComponent header) {
2 26 Feb 07 jari 147   int c_width = content.getPreferredSize().width;
2 26 Feb 07 jari 148   int h_width = header.getPreferredSize().width;
2 26 Feb 07 jari 149   if (c_width > h_width) {
2 26 Feb 07 jari 150       header.setPreferredSize(new Dimension(c_width, header.getPreferredSize().height));
2 26 Feb 07 jari 151   } else {
2 26 Feb 07 jari 152       content.setPreferredSize(new Dimension(h_width, content.getPreferredSize().height));
2 26 Feb 07 jari 153   }
2 26 Feb 07 jari 154     }
2 26 Feb 07 jari 155 }