mev-4.0.01/source/org/tigr/microarray/mev/cgh/CGHGuiObj/CGHPositionGraph/CGHPositionGraphCombinedViewer.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * CGHPositionGraphViewer.java
2 26 Feb 07 jari 3  *
2 26 Feb 07 jari 4  * Created on March 18, 2003, 9:08 PM
2 26 Feb 07 jari 5  */
2 26 Feb 07 jari 6
2 26 Feb 07 jari 7 package org.tigr.microarray.mev.cgh.CGHGuiObj.CGHPositionGraph;
2 26 Feb 07 jari 8
2 26 Feb 07 jari 9 import java.awt.BorderLayout;
2 26 Feb 07 jari 10 import java.awt.Dimension;
2 26 Feb 07 jari 11 import java.awt.Graphics;
2 26 Feb 07 jari 12 import java.awt.Insets;
2 26 Feb 07 jari 13 import java.awt.Rectangle;
2 26 Feb 07 jari 14 import java.awt.event.ActionListener;
2 26 Feb 07 jari 15 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 16 import java.beans.Expression;
2 26 Feb 07 jari 17
2 26 Feb 07 jari 18 import javax.swing.JComponent;
2 26 Feb 07 jari 19
2 26 Feb 07 jari 20 import org.tigr.microarray.mev.cgh.CGHDataModel.CGHAnnotationsModel;
2 26 Feb 07 jari 21 import org.tigr.microarray.mev.cgh.CGHDataModel.CGHPositionGraphDataModel;
2 26 Feb 07 jari 22 import org.tigr.microarray.mev.cgh.CGHDataModel.CytoBandsModel;
2 26 Feb 07 jari 23 import org.tigr.microarray.mev.cgh.CGHListenerObj.IDataRegionSelectionListener;
2 26 Feb 07 jari 24 import org.tigr.microarray.mev.cluster.gui.Experiment;
2 26 Feb 07 jari 25 import org.tigr.microarray.mev.cluster.gui.ICGHCloneValueMenu;
2 26 Feb 07 jari 26 import org.tigr.microarray.mev.cluster.gui.ICGHDisplayMenu;
2 26 Feb 07 jari 27 import org.tigr.microarray.mev.cluster.gui.ICGHViewer;
2 26 Feb 07 jari 28 import org.tigr.microarray.mev.cluster.gui.IData;
2 26 Feb 07 jari 29 import org.tigr.microarray.mev.cluster.gui.IDisplayMenu;
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 31
2 26 Feb 07 jari 32 //import org.abramson.microarray.cgh.ICGHFramework;
2 26 Feb 07 jari 33
2 26 Feb 07 jari 34 /**
2 26 Feb 07 jari 35  *
2 26 Feb 07 jari 36  * @author  Adam Margolin
2 26 Feb 07 jari 37  * @author Raktim Sinha
2 26 Feb 07 jari 38  */
2 26 Feb 07 jari 39
2 26 Feb 07 jari 40 public class CGHPositionGraphCombinedViewer extends javax.swing.JPanel implements ActionListener, ICGHViewer{
2 26 Feb 07 jari 41
2 26 Feb 07 jari 42     IFramework framework;
2 26 Feb 07 jari 43     IData data;
2 26 Feb 07 jari 44     Insets insets = new Insets(10, 10, 10, 10);
2 26 Feb 07 jari 45
2 26 Feb 07 jari 46     private BufferedImage negColorImage;
2 26 Feb 07 jari 47     private BufferedImage posColorImage;
2 26 Feb 07 jari 48
2 26 Feb 07 jari 49     double unitLength;
2 26 Feb 07 jari 50     int elementWidth;
2 26 Feb 07 jari 51     int annotationsWidth = 40;
2 26 Feb 07 jari 52
2 26 Feb 07 jari 53     int displayType;
2 26 Feb 07 jari 54
2 26 Feb 07 jari 55     //Viewable components
2 26 Feb 07 jari 56     CGHPositionGraphCombinedCanvas positionGraph;
2 26 Feb 07 jari 57     CytoBandsCanvas cytoBandsCanvas;
2 26 Feb 07 jari 58     CGHPositionGraphCombinedHeader header;
2 26 Feb 07 jari 59
2 26 Feb 07 jari 60     //Models
2 26 Feb 07 jari 61     CGHPositionGraphDataModel positionGraphModel;
2 26 Feb 07 jari 62     CytoBandsModel cytoBandsModel;
2 26 Feb 07 jari 63
2 26 Feb 07 jari 64     /** Creates a new instance of CGHPositionGraphViewer */
2 26 Feb 07 jari 65     public CGHPositionGraphCombinedViewer(IFramework framework, CGHPositionGraphCombinedHeader header) {
2 26 Feb 07 jari 66         this.framework = framework;
2 26 Feb 07 jari 67         this.header = header;
2 26 Feb 07 jari 68         initComponents();
2 26 Feb 07 jari 69         //this.header.setElementWidth(80);
2 26 Feb 07 jari 70     }
2 26 Feb 07 jari 71
2 26 Feb 07 jari 72     private void initComponents(){
2 26 Feb 07 jari 73         setLayout(new java.awt.BorderLayout());
2 26 Feb 07 jari 74
2 26 Feb 07 jari 75         //header = new CGHPositionGraphCombinedHeader();
2 26 Feb 07 jari 76         positionGraph = new CGHPositionGraphCombinedCanvas(insets);
2 26 Feb 07 jari 77         cytoBandsCanvas = new CytoBandsCanvas(new Insets(insets.top, 0, insets.bottom, 5));
2 26 Feb 07 jari 78
2 26 Feb 07 jari 79         //this.negColorImage = framework.getDisplayMenu().getNegativeGradientImage();
2 26 Feb 07 jari 80         //this.posColorImage = framework.getDisplayMenu().getPositiveGradientImage();
2 26 Feb 07 jari 81         //this.header.setNegativeAndPositiveColorImages(this.negColorImage, this.posColorImage);
2 26 Feb 07 jari 82
2 26 Feb 07 jari 83
2 26 Feb 07 jari 84         add(positionGraph, BorderLayout.CENTER);
2 26 Feb 07 jari 85         add(cytoBandsCanvas, BorderLayout.WEST);
2 26 Feb 07 jari 86
2 26 Feb 07 jari 87         positionGraph.setData(framework.getData());
2 26 Feb 07 jari 88     }
2 26 Feb 07 jari 89
2 26 Feb 07 jari 90     public void paint(Graphics g){
2 26 Feb 07 jari 91         checkUpdateSize();
2 26 Feb 07 jari 92         header.updateSize();
2 26 Feb 07 jari 93         header.repaint();
2 26 Feb 07 jari 94         super.paint(g);
2 26 Feb 07 jari 95     }
2 26 Feb 07 jari 96
2 26 Feb 07 jari 97     private void checkUpdateSize(){
2 26 Feb 07 jari 98         if(framework.getCghDisplayMenu().getUnitLength() == ICGHDisplayMenu.FIT_SIZE){
2 26 Feb 07 jari 99             unitLength = calculateFitUnitLength();
2 26 Feb 07 jari 100             updateUnitLength(unitLength);
2 26 Feb 07 jari 101         }
2 26 Feb 07 jari 102
2 26 Feb 07 jari 103         if(framework.getCghDisplayMenu().getElementWidth() == ICGHDisplayMenu.FIT_SIZE){
2 26 Feb 07 jari 104             elementWidth = calculateFitElementWidth();
2 26 Feb 07 jari 105             updateElementWidth(elementWidth);
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     private double calculateFitUnitLength(){
2 26 Feb 07 jari 111
2 26 Feb 07 jari 112         Rectangle rect = framework.getViewerBounds();
2 26 Feb 07 jari 113
2 26 Feb 07 jari 114         double height = rect.getHeight();
2 26 Feb 07 jari 115
2 26 Feb 07 jari 116         height -= (insets.bottom + insets.top);
2 26 Feb 07 jari 117
2 26 Feb 07 jari 118         //double maxVal = positionGraphModel.getMaxClonePosition();
2 26 Feb 07 jari 119         double maxVal = cytoBandsModel.getMaxPosition();
2 26 Feb 07 jari 120
2 26 Feb 07 jari 121         double unitLength = height / maxVal;
2 26 Feb 07 jari 122
2 26 Feb 07 jari 123         return unitLength;
2 26 Feb 07 jari 124     }
2 26 Feb 07 jari 125
2 26 Feb 07 jari 126     private int calculateFitElementWidth(){
2 26 Feb 07 jari 127         int rectSpacing = 5;
2 26 Feb 07 jari 128         double viewerWidth = framework.getViewerBounds().getWidth() - cytoBandsCanvas.getPreferredSize().getWidth() - annotationsWidth;
2 26 Feb 07 jari 129         int rectWidth = (int)((viewerWidth - insets.left - insets.right) / positionGraphModel.getNumExperiments()) - rectSpacing;
2 26 Feb 07 jari 130         if(rectWidth > 80){
2 26 Feb 07 jari 131             rectWidth = 80;
2 26 Feb 07 jari 132         }
2 26 Feb 07 jari 133         return rectWidth;
2 26 Feb 07 jari 134     }
2 26 Feb 07 jari 135
2 26 Feb 07 jari 136     private void updateSize(){
2 26 Feb 07 jari 137
2 26 Feb 07 jari 138         //int width = getWidth();
2 26 Feb 07 jari 139         int width = positionGraphModel.getNumExperiments() * (elementWidth + 5) + insets.left + insets.right;
2 26 Feb 07 jari 140         width += cytoBandsCanvas.getPreferredSize().getWidth();
2 26 Feb 07 jari 141
2 26 Feb 07 jari 142         //int height = (int)  ((positionGraphModel.getMaxClonePosition() * unitLength) + (insets.top + insets.bottom ));
2 26 Feb 07 jari 143         int height = (int)  ((cytoBandsModel.getMaxPosition() * unitLength) + (insets.top + insets.bottom ));
2 26 Feb 07 jari 144
2 26 Feb 07 jari 145         setSize(width, height);
2 26 Feb 07 jari 146   setPreferredSize(new Dimension(width, height));
2 26 Feb 07 jari 147
2 26 Feb 07 jari 148         //repaint();
2 26 Feb 07 jari 149     }
2 26 Feb 07 jari 150
2 26 Feb 07 jari 151
2 26 Feb 07 jari 152     public void actionPerformed(java.awt.event.ActionEvent event){
2 26 Feb 07 jari 153
2 26 Feb 07 jari 154     }
2 26 Feb 07 jari 155
2 26 Feb 07 jari 156     /*********** methods to implement IViewer *************************/
2 26 Feb 07 jari 157
2 26 Feb 07 jari 158     /** Returns a component to be inserted into scroll pane view port.
2 26 Feb 07 jari 159      */
2 26 Feb 07 jari 160     public JComponent getContentComponent() {
2 26 Feb 07 jari 161         return this;
2 26 Feb 07 jari 162     }
2 26 Feb 07 jari 163
2 26 Feb 07 jari 164     /** Returns a component to be inserted into scroll pane header.
2 26 Feb 07 jari 165      */
2 26 Feb 07 jari 166     public JComponent getHeaderComponent() {
2 26 Feb 07 jari 167         return header;
2 26 Feb 07 jari 168     }
2 26 Feb 07 jari 169
2 26 Feb 07 jari 170     /** Invoked by the framework to save or to print viewer image.
2 26 Feb 07 jari 171      */
2 26 Feb 07 jari 172     public BufferedImage getImage() {
2 26 Feb 07 jari 173         return null;
2 26 Feb 07 jari 174     }
2 26 Feb 07 jari 175
2 26 Feb 07 jari 176     /** Invoked when the framework is going to be closed.
2 26 Feb 07 jari 177      */
2 26 Feb 07 jari 178     public void onClosed() {
2 26 Feb 07 jari 179     }
2 26 Feb 07 jari 180
2 26 Feb 07 jari 181     /** Invoked by the framework when data is changed,
2 26 Feb 07 jari 182      * if this viewer is selected.
2 26 Feb 07 jari 183      * @see IData
2 26 Feb 07 jari 184      */
2 26 Feb 07 jari 185     public void onDataChanged(IData data) {
2 26 Feb 07 jari 186         this.data = data;
2 26 Feb 07 jari 187         updateSize();
2 26 Feb 07 jari 188         //header.setData(data);
2 26 Feb 07 jari 189         //header.updateSize();
2 26 Feb 07 jari 190
2 26 Feb 07 jari 191         //switched order
2 26 Feb 07 jari 192         header.setContentWidth(getSize().width);
2 26 Feb 07 jari 193         header.updateSize();
2 26 Feb 07 jari 194     }
2 26 Feb 07 jari 195
2 26 Feb 07 jari 196     /** Invoked by the framework when this viewer was deselected.
2 26 Feb 07 jari 197      */
2 26 Feb 07 jari 198     public void onDeselected() {
2 26 Feb 07 jari 199     }
2 26 Feb 07 jari 200
2 26 Feb 07 jari 201     /** Invoked by the framework when display menu is changed,
2 26 Feb 07 jari 202      * if this viewer is selected.
2 26 Feb 07 jari 203      * @see IDisplayMenu
2 26 Feb 07 jari 204      */
2 26 Feb 07 jari 205     public void onMenuChanged(IDisplayMenu menu) {
2 26 Feb 07 jari 206         header.onMenuChanged(menu);
2 26 Feb 07 jari 207     }
2 26 Feb 07 jari 208
2 26 Feb 07 jari 209     public void onMenuChanged(ICGHDisplayMenu menu) {
2 26 Feb 07 jari 210
2 26 Feb 07 jari 211         positionGraph.setShowFlankingRegions(menu.isShowFlankingRegions());
2 26 Feb 07 jari 212
2 26 Feb 07 jari 213         if(menu.getUnitLength() == ICGHDisplayMenu.FIT_SIZE){
2 26 Feb 07 jari 214             unitLength = calculateFitUnitLength();
2 26 Feb 07 jari 215         }else{
2 26 Feb 07 jari 216             unitLength = menu.getUnitLength();
2 26 Feb 07 jari 217         }
2 26 Feb 07 jari 218
2 26 Feb 07 jari 219         updateUnitLength(unitLength);
2 26 Feb 07 jari 220
2 26 Feb 07 jari 221         if(menu.getElementWidth() == ICGHDisplayMenu.FIT_SIZE){
2 26 Feb 07 jari 222             elementWidth = calculateFitElementWidth();
2 26 Feb 07 jari 223         }else{
2 26 Feb 07 jari 224             elementWidth = menu.getElementWidth();
2 26 Feb 07 jari 225         }
2 26 Feb 07 jari 226
2 26 Feb 07 jari 227         updateElementWidth(elementWidth);
2 26 Feb 07 jari 228         updateSize();
2 26 Feb 07 jari 229
2 26 Feb 07 jari 230         Insets headerInsets = new Insets(0, (int) cytoBandsCanvas.getPreferredSize().getWidth() + insets.left, 0, 0);
2 26 Feb 07 jari 231         header.setInsets(headerInsets);
2 26 Feb 07 jari 232         header.setElementWidth(elementWidth);
2 26 Feb 07 jari 233         header.setContentWidth(getSize().width);
2 26 Feb 07 jari 234         updateSize();
2 26 Feb 07 jari 235         header.updateSize();
2 26 Feb 07 jari 236         header.repaint();
2 26 Feb 07 jari 237
2 26 Feb 07 jari 238         //updateSize();
2 26 Feb 07 jari 239     }
2 26 Feb 07 jari 240
2 26 Feb 07 jari 241     /** Invoked by the framework when this viewer is selected.
2 26 Feb 07 jari 242      */
2 26 Feb 07 jari 243     public void onSelected(IFramework framework){
2 26 Feb 07 jari 244         cytoBandsCanvas.onSelected();
2 26 Feb 07 jari 245
2 26 Feb 07 jari 246         this.framework = framework;
2 26 Feb 07 jari 247
2 26 Feb 07 jari 248         ICGHDisplayMenu cghMenu = this.framework.getCghDisplayMenu();
2 26 Feb 07 jari 249         //header.setData(framework.getData());
2 26 Feb 07 jari 250         ICGHCloneValueMenu cloneValueMenu = this.framework.getCghCloneValueMenu();
2 26 Feb 07 jari 251
2 26 Feb 07 jari 252         onMenuChanged(cghMenu);
2 26 Feb 07 jari 253         onDataChanged(this.framework.getData());
2 26 Feb 07 jari 254         onCloneValuesChanged(cloneValueMenu);
2 26 Feb 07 jari 255     }
2 26 Feb 07 jari 256
2 26 Feb 07 jari 257     /** Getter for property positionGraphModel.
2 26 Feb 07 jari 258      * @return Value of property positionGraphModel.
2 26 Feb 07 jari 259      */
2 26 Feb 07 jari 260     public CGHPositionGraphDataModel getPositionGraphModel() {
2 26 Feb 07 jari 261         return positionGraphModel;
2 26 Feb 07 jari 262     }
2 26 Feb 07 jari 263
2 26 Feb 07 jari 264     /** Setter for property positionGraphModel.
2 26 Feb 07 jari 265      * @param positionGraphModel New value of property positionGraphModel.
2 26 Feb 07 jari 266      */
2 26 Feb 07 jari 267     public void setPositionGraphModel(CGHPositionGraphDataModel positionGraphModel) {
2 26 Feb 07 jari 268         this.positionGraphModel = positionGraphModel;
2 26 Feb 07 jari 269
2 26 Feb 07 jari 270         positionGraphModel.setNegColorImage(framework.getDisplayMenu().getNegativeGradientImage());
2 26 Feb 07 jari 271         positionGraphModel.setPosColorImage(framework.getDisplayMenu().getPositiveGradientImage());
2 26 Feb 07 jari 272
2 26 Feb 07 jari 273         header.setModel(positionGraphModel);
2 26 Feb 07 jari 274         positionGraph.setModel(positionGraphModel);
2 26 Feb 07 jari 275         cytoBandsCanvas.setChromosomeIndex(positionGraphModel.getChromosomeIndex());
2 26 Feb 07 jari 276     }
2 26 Feb 07 jari 277
2 26 Feb 07 jari 278     public void setAnnotationsModel(CGHAnnotationsModel annotationsModel){
2 26 Feb 07 jari 279         positionGraph.setAnnotationsModel(annotationsModel);
2 26 Feb 07 jari 280     }
2 26 Feb 07 jari 281
2 26 Feb 07 jari 282     /** Getter for property cytoBandsModel.
2 26 Feb 07 jari 283      * @return Value of property cytoBandsModel.
2 26 Feb 07 jari 284      */
2 26 Feb 07 jari 285     public CytoBandsModel getCytoBandsModel() {
2 26 Feb 07 jari 286         return cytoBandsModel;
2 26 Feb 07 jari 287     }
2 26 Feb 07 jari 288
2 26 Feb 07 jari 289     /** Setter for property cytoBandsModel.
2 26 Feb 07 jari 290      * @param cytoBandsModel New value of property cytoBandsModel.
2 26 Feb 07 jari 291      */
2 26 Feb 07 jari 292     public void setCytoBandsModel(CytoBandsModel cytoBandsModel) {
2 26 Feb 07 jari 293         this.cytoBandsModel = cytoBandsModel;
2 26 Feb 07 jari 294         cytoBandsCanvas.setModel(cytoBandsModel);
2 26 Feb 07 jari 295     }
2 26 Feb 07 jari 296
2 26 Feb 07 jari 297     private void updateUnitLength(double unitLength){
2 26 Feb 07 jari 298         positionGraph.setUnitLength(unitLength);
2 26 Feb 07 jari 299         cytoBandsCanvas.setUnitLength(unitLength);
2 26 Feb 07 jari 300     }
2 26 Feb 07 jari 301
2 26 Feb 07 jari 302     private void updateElementWidth(int elementWidth){
2 26 Feb 07 jari 303         positionGraph.setElementWidth(elementWidth);
2 26 Feb 07 jari 304         header.setElementWidth(elementWidth);
2 26 Feb 07 jari 305     }
2 26 Feb 07 jari 306
2 26 Feb 07 jari 307     public void setDrsListener(IDataRegionSelectionListener drsListener){
2 26 Feb 07 jari 308         positionGraph.setDrsListener(drsListener);
2 26 Feb 07 jari 309     }
2 26 Feb 07 jari 310
2 26 Feb 07 jari 311     public void onThresholdsChanged(ICGHDisplayMenu menu) {
2 26 Feb 07 jari 312     }
2 26 Feb 07 jari 313
2 26 Feb 07 jari 314
2 26 Feb 07 jari 315     public void onCloneValuesChanged(ICGHCloneValueMenu menu) {
2 26 Feb 07 jari 316         this.positionGraphModel.onCloneValuesChanged(menu);
2 26 Feb 07 jari 317         //positionGraph.repaint();//repaint();
2 26 Feb 07 jari 318     }
2 26 Feb 07 jari 319
2 26 Feb 07 jari 320   public JComponent getRowHeaderComponent() {
2 26 Feb 07 jari 321     // TODO Auto-generated method stub
2 26 Feb 07 jari 322     return null;
2 26 Feb 07 jari 323   }
2 26 Feb 07 jari 324
2 26 Feb 07 jari 325   public JComponent getCornerComponent(int cornerIndex) {
2 26 Feb 07 jari 326     // TODO Auto-generated method stub
2 26 Feb 07 jari 327     return null;
2 26 Feb 07 jari 328   }
2 26 Feb 07 jari 329
2 26 Feb 07 jari 330   public int[][] getClusters() {
2 26 Feb 07 jari 331     // TODO Auto-generated method stub
2 26 Feb 07 jari 332     return null;
2 26 Feb 07 jari 333   }
2 26 Feb 07 jari 334
2 26 Feb 07 jari 335   public Experiment getExperiment() {
2 26 Feb 07 jari 336     // TODO Auto-generated method stub
2 26 Feb 07 jari 337     return null;
2 26 Feb 07 jari 338   }
2 26 Feb 07 jari 339
2 26 Feb 07 jari 340   public int getViewerType() {
2 26 Feb 07 jari 341     // TODO Auto-generated method stub
2 26 Feb 07 jari 342     return 0;
2 26 Feb 07 jari 343   }
2 26 Feb 07 jari 344
2 26 Feb 07 jari 345   /* (non-Javadoc)
2 26 Feb 07 jari 346    * @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperiment(org.tigr.microarray.mev.cluster.gui.Experiment)
2 26 Feb 07 jari 347    */
2 26 Feb 07 jari 348   public void setExperiment(Experiment e) {
2 26 Feb 07 jari 349     // TODO Auto-generated method stub
2 26 Feb 07 jari 350     
2 26 Feb 07 jari 351   }
2 26 Feb 07 jari 352
2 26 Feb 07 jari 353   /* (non-Javadoc)
2 26 Feb 07 jari 354    * @see org.tigr.microarray.mev.cluster.gui.IViewer#getExperimentID()
2 26 Feb 07 jari 355    */
2 26 Feb 07 jari 356   public int getExperimentID() {
2 26 Feb 07 jari 357     // TODO Auto-generated method stub
2 26 Feb 07 jari 358     return 0;
2 26 Feb 07 jari 359   }
2 26 Feb 07 jari 360
2 26 Feb 07 jari 361   /* (non-Javadoc)
2 26 Feb 07 jari 362    * @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperimentID(int)
2 26 Feb 07 jari 363    */
2 26 Feb 07 jari 364   public void setExperimentID(int id) {
2 26 Feb 07 jari 365     // TODO Auto-generated method stub
2 26 Feb 07 jari 366     
2 26 Feb 07 jari 367   }
2 26 Feb 07 jari 368
2 26 Feb 07 jari 369   /* (non-Javadoc)
2 26 Feb 07 jari 370    * @see org.tigr.microarray.mev.cluster.gui.IViewer#getExpression()
2 26 Feb 07 jari 371    */
2 26 Feb 07 jari 372   public Expression getExpression() {
2 26 Feb 07 jari 373     // TODO Auto-generated method stub
2 26 Feb 07 jari 374     return null;
2 26 Feb 07 jari 375   }
2 26 Feb 07 jari 376 }