mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/knnc/KNNCInfoViewer.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: KNNCInfoViewer.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.5 $
2 26 Feb 07 jari 8  * $Date: 2006/03/24 15:50:57 $
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.cluster.gui.impl.knnc;
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.Dimension;
2 26 Feb 07 jari 17 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 18 import java.awt.GridBagLayout;
2 26 Feb 07 jari 19 import java.awt.Insets;
2 26 Feb 07 jari 20
2 26 Feb 07 jari 21 import javax.swing.JComponent;
2 26 Feb 07 jari 22 import javax.swing.JLabel;
2 26 Feb 07 jari 23 import javax.swing.JPanel;
2 26 Feb 07 jari 24 import javax.swing.JTextArea;
2 26 Feb 07 jari 25
2 26 Feb 07 jari 26 import org.tigr.microarray.mev.cluster.gui.impl.ViewerAdapter;
2 26 Feb 07 jari 27
2 26 Feb 07 jari 28 public class KNNCInfoViewer extends ViewerAdapter implements java.io.Serializable {
2 26 Feb 07 jari 29     public static final long serialVersionUID = 202009010001L;
2 26 Feb 07 jari 30     
2 26 Feb 07 jari 31     private JComponent header;
2 26 Feb 07 jari 32     private JTextArea  content;
2 26 Feb 07 jari 33     private boolean clusterGenes;
2 26 Feb 07 jari 34     private int numClasses;
2 26 Feb 07 jari 35     
2 26 Feb 07 jari 36     /**
2 26 Feb 07 jari 37      * Constructs a <code>KMCInfoViewer</code> with specified
2 26 Feb 07 jari 38      * clusters and number of genes.
2 26 Feb 07 jari 39      */
2 26 Feb 07 jari 40     public KNNCInfoViewer(int[][] clusters, int genes, int numClasses) {
2 26 Feb 07 jari 41         header  = createHeader();
2 26 Feb 07 jari 42         this.clusterGenes = true;
2 26 Feb 07 jari 43         this.numClasses = numClasses;
2 26 Feb 07 jari 44         content = createContent(clusters, genes);
2 26 Feb 07 jari 45         setMaxWidth(content, header);        
2 26 Feb 07 jari 46     }
2 26 Feb 07 jari 47     public KNNCInfoViewer(JTextArea content, JComponent header){
2 26 Feb 07 jari 48       this.content = content;
2 26 Feb 07 jari 49       this.header = header;
2 26 Feb 07 jari 50         setMaxWidth(content, header);      
2 26 Feb 07 jari 51     }
2 26 Feb 07 jari 52     
2 26 Feb 07 jari 53     /**
2 26 Feb 07 jari 54      * Constructs a <code>KMCInfoViewer</code> with specified
2 26 Feb 07 jari 55      * clusters and number of genes.
2 26 Feb 07 jari 56      */
2 26 Feb 07 jari 57     public KNNCInfoViewer(int[][] clusters, int genes, boolean clusterGenes, int numClasses) {
2 26 Feb 07 jari 58         header  = createHeader();
2 26 Feb 07 jari 59         this.clusterGenes = clusterGenes;
2 26 Feb 07 jari 60         this.numClasses = numClasses;
2 26 Feb 07 jari 61         content = createContent(clusters, genes);
2 26 Feb 07 jari 62         setMaxWidth(content, 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      * Returns component to be inserted into the framework scroll pane.
2 26 Feb 07 jari 67      */
2 26 Feb 07 jari 68     public JComponent getContentComponent() {
2 26 Feb 07 jari 69         return content;
2 26 Feb 07 jari 70     }
2 26 Feb 07 jari 71     
2 26 Feb 07 jari 72     /**
2 26 Feb 07 jari 73      * Returns the viewer header.
2 26 Feb 07 jari 74      */
2 26 Feb 07 jari 75     public JComponent getHeaderComponent() {
2 26 Feb 07 jari 76         return header;
2 26 Feb 07 jari 77     }
2 26 Feb 07 jari 78     
2 26 Feb 07 jari 79     /**
2 26 Feb 07 jari 80      * Creates the viewer header.
2 26 Feb 07 jari 81      */
2 26 Feb 07 jari 82     private JComponent createHeader() {
2 26 Feb 07 jari 83         JPanel panel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 84         panel.setBackground(Color.white);
2 26 Feb 07 jari 85         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 86         gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 87         gbc.insets = new Insets(10, 0, 10, 0);
2 26 Feb 07 jari 88         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 89         return panel;
2 26 Feb 07 jari 90     }
2 26 Feb 07 jari 91     
2 26 Feb 07 jari 92     /**
2 26 Feb 07 jari 93      * Creates the viewer content component.
2 26 Feb 07 jari 94      */
2 26 Feb 07 jari 95     private JTextArea createContent(int[][] clusters, int genes) {
2 26 Feb 07 jari 96         JTextArea area = new JTextArea(clusters.length*3, 20);
2 26 Feb 07 jari 97         area.setEditable(false);
2 26 Feb 07 jari 98         area.setMargin(new Insets(0, 10, 0, 0));
2 26 Feb 07 jari 99         StringBuffer sb = new StringBuffer(clusters.length*3*10);
2 26 Feb 07 jari 100         if(clusterGenes){
2 26 Feb 07 jari 101             for (int counter = 2*numClasses; counter < 3*numClasses; counter++) {
2 26 Feb 07 jari 102                 sb.append("Class "+(counter+1 - 2*numClasses));
2 26 Feb 07 jari 103                 sb.append("\t");
2 26 Feb 07 jari 104                 sb.append("# of Genes in Class: "+clusters[counter].length);
2 26 Feb 07 jari 105                 sb.append("\n\t");
2 26 Feb 07 jari 106                 sb.append("% of Genes in Class: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 107                 sb.append("\n\n");
2 26 Feb 07 jari 108             }
2 26 Feb 07 jari 109             sb.append("Unclassified ");
2 26 Feb 07 jari 110             sb.append("\t");
2 26 Feb 07 jari 111             sb.append("# of Unclassified Genes : "+clusters[4*numClasses].length);
2 26 Feb 07 jari 112             sb.append("\n\t");
2 26 Feb 07 jari 113             sb.append("% of Genes that are Unclassified: "+Math.round((float)clusters[4*numClasses].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 114             sb.append("\n\n");           
2 26 Feb 07 jari 115             
2 26 Feb 07 jari 116         }
2 26 Feb 07 jari 117         else{
2 26 Feb 07 jari 118             for (int counter = 2*numClasses; counter < 3*numClasses; counter++) {
2 26 Feb 07 jari 119                 sb.append("Class "+(counter+1 - 2*numClasses));
2 26 Feb 07 jari 120                 sb.append("\t");
2 26 Feb 07 jari 121                 sb.append("# of Experiments in Class: "+clusters[counter].length);
2 26 Feb 07 jari 122                 sb.append("\n\t");
2 26 Feb 07 jari 123                 sb.append("% of Experiments in Class: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 124                 sb.append("\n\n");
2 26 Feb 07 jari 125             }
2 26 Feb 07 jari 126             sb.append("Unclassified ");
2 26 Feb 07 jari 127             sb.append("\t");
2 26 Feb 07 jari 128             sb.append("# of Unclassified Experiments : "+clusters[4*numClasses].length);
2 26 Feb 07 jari 129             sb.append("\n\t");
2 26 Feb 07 jari 130             sb.append("% of Experiments that are Unclassified: "+Math.round((float)clusters[4*numClasses].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 131             sb.append("\n\n");            
2 26 Feb 07 jari 132         }
2 26 Feb 07 jari 133         area.setText(sb.toString());
2 26 Feb 07 jari 134         area.setCaretPosition(0);
2 26 Feb 07 jari 135         return area;
2 26 Feb 07 jari 136     }
2 26 Feb 07 jari 137     
2 26 Feb 07 jari 138     /**
2 26 Feb 07 jari 139      * Synchronize content and header sizes.
2 26 Feb 07 jari 140      */
2 26 Feb 07 jari 141     private void setMaxWidth(JComponent content, JComponent header) {
2 26 Feb 07 jari 142         int c_width = content.getPreferredSize().width;
2 26 Feb 07 jari 143         int h_width = header.getPreferredSize().width;
2 26 Feb 07 jari 144         if (c_width > h_width) {
2 26 Feb 07 jari 145             header.setPreferredSize(new Dimension(c_width, header.getPreferredSize().height));
2 26 Feb 07 jari 146         } else {
2 26 Feb 07 jari 147             content.setPreferredSize(new Dimension(h_width, content.getPreferredSize().height));
2 26 Feb 07 jari 148         }
2 26 Feb 07 jari 149     }
2 26 Feb 07 jari 150 }
2 26 Feb 07 jari 151