mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/kmc/KMCInfoViewer.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: KMCInfoViewer.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.8 $
2 26 Feb 07 jari 8  * $Date: 2006/06/30 17:52:19 $
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.kmc;
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 import java.beans.Expression;
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 KMCInfoViewer extends ViewerAdapter implements java.io.Serializable {
2 26 Feb 07 jari 29 //    public static final long serialVersionUID = 202007020001L;
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     
2 26 Feb 07 jari 35     public JTextArea getContent(){return content;}
2 26 Feb 07 jari 36     
2 26 Feb 07 jari 37     /**
2 26 Feb 07 jari 38      * Constructs a <code>KMCInfoViewer</code> with specified
2 26 Feb 07 jari 39      * clusters and number of genes.
2 26 Feb 07 jari 40      */
2 26 Feb 07 jari 41     public KMCInfoViewer(int[][] clusters, int genes, int [] convIteration) {
2 26 Feb 07 jari 42         header  = createHeader();
2 26 Feb 07 jari 43         this.clusterGenes = true;
2 26 Feb 07 jari 44         content = createContent(clusters, genes, convIteration);
2 26 Feb 07 jari 45         setMaxWidth(content, header);        
2 26 Feb 07 jari 46     }
2 26 Feb 07 jari 47     
2 26 Feb 07 jari 48     /**
2 26 Feb 07 jari 49      * Constructs a <code>KMCInfoViewer</code> with specified
2 26 Feb 07 jari 50      * clusters and number of genes.
2 26 Feb 07 jari 51      */
2 26 Feb 07 jari 52     public KMCInfoViewer(int[][] clusters, int genes, int [] convIteration, boolean clusterGenes) {
2 26 Feb 07 jari 53         header  = createHeader();
2 26 Feb 07 jari 54         this.clusterGenes = clusterGenes;
2 26 Feb 07 jari 55         content = createContent(clusters, genes, convIteration);
2 26 Feb 07 jari 56         setMaxWidth(content, header);
2 26 Feb 07 jari 57     }
2 26 Feb 07 jari 58     /**
2 26 Feb 07 jari 59      * This constructor is used by the state-saving code for class persistence. 
2 26 Feb 07 jari 60      * Do not delete or alter.
2 26 Feb 07 jari 61      * 
2 26 Feb 07 jari 62      * @param content
2 26 Feb 07 jari 63      * @param clusterGenes
2 26 Feb 07 jari 64      */
2 26 Feb 07 jari 65     public KMCInfoViewer(JTextArea content, Boolean clusterGenes) {    
2 26 Feb 07 jari 66         this(content, clusterGenes.booleanValue());    
2 26 Feb 07 jari 67     }
2 26 Feb 07 jari 68     /**
2 26 Feb 07 jari 69      * This constructor is used by the state-saving code for class persistence. 
2 26 Feb 07 jari 70      * Do not delete or alter.
2 26 Feb 07 jari 71      * 
2 26 Feb 07 jari 72      * @param content
2 26 Feb 07 jari 73      * @param clusterGenes
2 26 Feb 07 jari 74      */
2 26 Feb 07 jari 75     public KMCInfoViewer(JTextArea content, boolean clusterGenes) {    
2 26 Feb 07 jari 76         header = createHeader();    
2 26 Feb 07 jari 77         this.content = content;    
2 26 Feb 07 jari 78         this.clusterGenes = clusterGenes;    
2 26 Feb 07 jari 79         setMaxWidth(content, header);    
2 26 Feb 07 jari 80     }
2 26 Feb 07 jari 81     
2 26 Feb 07 jari 82     /**
2 26 Feb 07 jari 83      * @inheritDoc
2 26 Feb 07 jari 84      * 
2 26 Feb 07 jari 85      */
2 26 Feb 07 jari 86     public Expression getExpression(){
2 26 Feb 07 jari 87       return new Expression(this, this.getClass(), "new", 
2 26 Feb 07 jari 88           new Object[]{this.getContentComponent(), new Boolean(this.clusterGenes)});
2 26 Feb 07 jari 89     }
2 26 Feb 07 jari 90     
2 26 Feb 07 jari 91     /**
2 26 Feb 07 jari 92      * Returns component to be inserted into the framework scroll pane.
2 26 Feb 07 jari 93      */
2 26 Feb 07 jari 94     public JComponent getContentComponent() {
2 26 Feb 07 jari 95         return content;
2 26 Feb 07 jari 96     }
2 26 Feb 07 jari 97     
2 26 Feb 07 jari 98     /**
2 26 Feb 07 jari 99      * Returns the viewer header.
2 26 Feb 07 jari 100      */
2 26 Feb 07 jari 101     public JComponent getHeaderComponent() {
2 26 Feb 07 jari 102         return header;
2 26 Feb 07 jari 103     }
2 26 Feb 07 jari 104     
2 26 Feb 07 jari 105     /**
2 26 Feb 07 jari 106      * Creates the viewer header.
2 26 Feb 07 jari 107      */
2 26 Feb 07 jari 108     private JComponent createHeader() {
2 26 Feb 07 jari 109         JPanel panel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 110         panel.setBackground(Color.white);
2 26 Feb 07 jari 111         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 112         gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 113         gbc.insets = new Insets(10, 0, 10, 0);
2 26 Feb 07 jari 114         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 115         return panel;
2 26 Feb 07 jari 116     }
2 26 Feb 07 jari 117     
2 26 Feb 07 jari 118     /**
2 26 Feb 07 jari 119      * Creates the viewer content component.
2 26 Feb 07 jari 120      */
2 26 Feb 07 jari 121     private JTextArea createContent(int[][] clusters, int genes, int [] convIter) {
2 26 Feb 07 jari 122         JTextArea area = new JTextArea(clusters.length*3, 20);
2 26 Feb 07 jari 123         area.setEditable(false);
2 26 Feb 07 jari 124         area.setMargin(new Insets(0, 10, 0, 0));
2 26 Feb 07 jari 125         StringBuffer sb = new StringBuffer(clusters.length*3*10);
2 26 Feb 07 jari 126         if(clusterGenes){
2 26 Feb 07 jari 127             for (int counter = 0; counter < clusters.length; counter++) {
2 26 Feb 07 jari 128                 sb.append("Cluster "+(counter+1));
2 26 Feb 07 jari 129                 sb.append("\t");
2 26 Feb 07 jari 130                 sb.append("# of Genes in Cluster: "+clusters[counter].length);
2 26 Feb 07 jari 131                 sb.append("\n\t");
2 26 Feb 07 jari 132                 sb.append("% of Genes in Cluster: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 133                 sb.append("\n\t");
2 26 Feb 07 jari 134                 sb.append("Last Iteration with Gene Exchange: "+convIter[counter]);                
2 26 Feb 07 jari 135                 sb.append("\n\n");
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             for (int counter = 0; counter < clusters.length; counter++) {
2 26 Feb 07 jari 140                 sb.append("Cluster "+(counter+1));
2 26 Feb 07 jari 141                 sb.append("\t");
2 26 Feb 07 jari 142                 sb.append("# of Experiments in Cluster: "+clusters[counter].length);
2 26 Feb 07 jari 143                 sb.append("\n\t");
2 26 Feb 07 jari 144                 sb.append("% of Experiments in Cluster: "+Math.round((float)clusters[counter].length/(float)genes*100f)+"%");
2 26 Feb 07 jari 145                 sb.append("\n\t");
2 26 Feb 07 jari 146                 sb.append("Last Iteration with Experiment Exchange: "+convIter[counter]);                
2 26 Feb 07 jari 147                 sb.append("\n\n");
2 26 Feb 07 jari 148             }
2 26 Feb 07 jari 149         }
2 26 Feb 07 jari 150         area.setText(sb.toString());
2 26 Feb 07 jari 151         area.setCaretPosition(0);
2 26 Feb 07 jari 152         return area;
2 26 Feb 07 jari 153     }
2 26 Feb 07 jari 154     
2 26 Feb 07 jari 155     /**
2 26 Feb 07 jari 156      * Synchronize content and header sizes.
2 26 Feb 07 jari 157      */
2 26 Feb 07 jari 158     private void setMaxWidth(JComponent content, JComponent header) {
2 26 Feb 07 jari 159         int c_width = content.getPreferredSize().width;
2 26 Feb 07 jari 160         int h_width = header.getPreferredSize().width;
2 26 Feb 07 jari 161         if (c_width > h_width) {
2 26 Feb 07 jari 162             header.setPreferredSize(new Dimension(c_width, header.getPreferredSize().height));
2 26 Feb 07 jari 163         } else {
2 26 Feb 07 jari 164             content.setPreferredSize(new Dimension(h_width, content.getPreferredSize().height));
2 26 Feb 07 jari 165         }
2 26 Feb 07 jari 166     }
2 26 Feb 07 jari 167     
2 26 Feb 07 jari 168     /** Returns a component to be inserted into the scroll pane row header
2 26 Feb 07 jari 169      */
2 26 Feb 07 jari 170     public JComponent getRowHeaderComponent() {
2 26 Feb 07 jari 171         return null;
2 26 Feb 07 jari 172     }
2 26 Feb 07 jari 173     
2 26 Feb 07 jari 174 }