mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/coa/COA3DViewer.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2005, 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  * COA3DViewer.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on September 20, 2004, 1:20 PM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.cluster.gui.impl.coa;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.Component;
2 26 Feb 07 jari 14 import java.awt.Frame;
2 26 Feb 07 jari 15 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 16 import java.awt.event.ActionListener;
2 26 Feb 07 jari 17 import java.awt.event.MouseAdapter;
2 26 Feb 07 jari 18 import java.awt.event.MouseEvent;
2 26 Feb 07 jari 19 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 20 import java.beans.Expression;
2 26 Feb 07 jari 21
2 26 Feb 07 jari 22 import javax.swing.JCheckBoxMenuItem;
2 26 Feb 07 jari 23 import javax.swing.JComponent;
2 26 Feb 07 jari 24 import javax.swing.JMenuItem;
2 26 Feb 07 jari 25 import javax.swing.JOptionPane;
2 26 Feb 07 jari 26 import javax.swing.JPopupMenu;
2 26 Feb 07 jari 27 import javax.swing.tree.DefaultMutableTreeNode;
2 26 Feb 07 jari 28
2 26 Feb 07 jari 29 import org.tigr.microarray.mev.cluster.clusterUtil.Cluster;
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.cluster.gui.Experiment;
2 26 Feb 07 jari 31 import org.tigr.microarray.mev.cluster.gui.IData;
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.IDisplayMenu;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.LeafInfo;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.helpers.ExperimentUtil;
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.cluster.gui.impl.GUIFactory;
2 26 Feb 07 jari 37 import org.tigr.microarray.mev.cluster.gui.impl.ViewerAdapter;
2 26 Feb 07 jari 38 import org.tigr.util.FloatMatrix;
2 26 Feb 07 jari 39
2 26 Feb 07 jari 40 /**
2 26 Feb 07 jari 41  *
2 26 Feb 07 jari 42  * @author  nbhagaba
2 26 Feb 07 jari 43  */
2 26 Feb 07 jari 44 public class COA3DViewer  extends ViewerAdapter {  
2 26 Feb 07 jari 45     
2 26 Feb 07 jari 46     private static final String RESET_CMD   = "reset-cmd";
2 26 Feb 07 jari 47     private static final String OPTIONS_CMD = "options-cmd";
2 26 Feb 07 jari 48     private static final String SELECTION_AREA_CMD = "select-cmd";
2 26 Feb 07 jari 49     private static final String SAVE_CMD    = "save-cmd";
2 26 Feb 07 jari 50     private static final String SAVE_GENE_CLUSTER_CMD    = "save-genes-cmd";
2 26 Feb 07 jari 51     private static final String SAVE_EXPT_CLUSTER_CMD    = "save-expts-cmd";
2 26 Feb 07 jari 52     private static final String SHOW_SELECTION_CMD = "show-selection-cmd";
2 26 Feb 07 jari 53     private static final String HIDE_SELECTION_BOX_CMD = "hide-selection-box-cmd";
2 26 Feb 07 jari 54     private static final String SHOW_SPHERES_CMD = "show-spheres-cmd";
2 26 Feb 07 jari 55     private static final String SHOW_TEXT_CMD = "show-text-cmd";
2 26 Feb 07 jari 56     private static final String SHOW_GENE_TEXT_FROM_BOTH_CMD = "show-gene-test-from-both-cmd";
2 26 Feb 07 jari 57     private static final String SHOW_EXPT_TEXT_FROM_BOTH_CMD = "show-expt-test-from-both-cmd";
2 26 Feb 07 jari 58     private static final String WHITE_CMD = "white-cmd";
2 26 Feb 07 jari 59     private static final String STORE_CLUSTER_CMD = "store-cluster-cmd";
2 26 Feb 07 jari 60     private static final String STORE_GENE_CLUSTER_CMD = "store-gene-cluster-cmd";
2 26 Feb 07 jari 61     private static final String STORE_EXPT_CLUSTER_CMD = "store-expt-cluster-cmd";
2 26 Feb 07 jari 62     private static final String LAUNCH_NEW_SESSION_CMD = "launch-new-session-cmd";
2 26 Feb 07 jari 63     private static final String LAUNCH_NEW_GENE_SESSION_CMD = "launch-new-gene-session-cmd";
2 26 Feb 07 jari 64     private static final String LAUNCH_NEW_EXPT_SESSION_CMD = "launch-new-expt-session-cmd";
2 26 Feb 07 jari 65     
2 26 Feb 07 jari 66     private IData data;
2 26 Feb 07 jari 67     private Experiment experiment;
2 26 Feb 07 jari 68     private COAContent3D content;
2 26 Feb 07 jari 69     //private JPanel content;
2 26 Feb 07 jari 70     private JPopupMenu popup, popup2;
2 26 Feb 07 jari 71     private Frame frame;
2 26 Feb 07 jari 72     //private boolean geneViewer;
2 26 Feb 07 jari 73     private int geneOrExpt;
2 26 Feb 07 jari 74     private int xAxis, yAxis, zAxis;    
2 26 Feb 07 jari 75     private int labelIndex = -1;    
2 26 Feb 07 jari 76     private IFramework framework;
2 26 Feb 07 jari 77     
2 26 Feb 07 jari 78     private FloatMatrix geneUMatrix, exptUMatrix, U;
2 26 Feb 07 jari 79     private COASelectionAreaDialog dlg;
2 26 Feb 07 jari 80     //private int mode;    
2 26 Feb 07 jari 81     private int exptID = 0;
2 26 Feb 07 jari 82     
2 26 Feb 07 jari 83     /** Creates a new instance of COA3DViewer */
2 26 Feb 07 jari 84     public COA3DViewer(Frame frame, FloatMatrix U, Experiment experiment, int geneOrExpt) {
2 26 Feb 07 jari 85         this.frame = frame;
2 26 Feb 07 jari 86         this.experiment = experiment;
2 26 Feb 07 jari 87         this.exptID = experiment.getId();
2 26 Feb 07 jari 88         this.geneOrExpt = geneOrExpt;
2 26 Feb 07 jari 89         this.U = U;
2 26 Feb 07 jari 90         //this.mode = mode;
2 26 Feb 07 jari 91         content = createContent(U, experiment, geneOrExpt);
2 26 Feb 07 jari 92         dlg = new COASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());
2 26 Feb 07 jari 93         //content = new JPanel();
2 26 Feb 07 jari 94         popup = createJPopupMenu();    
2 26 Feb 07 jari 95          
2 26 Feb 07 jari 96         Listener listener2 = new Listener(); // this was an attempt to get the pop up menu to show up over the 3D viewer
2 26 Feb 07 jari 97         popup2 = createJPopupMenu(listener2); //didn't work because of the native mouse response behavior of the 3D API, but left it in for possible future use  
2 26 Feb 07 jari 98   getContentComponent().addMouseListener(listener2);        
2 26 Feb 07 jari 99     }
2 26 Feb 07 jari 100     
2 26 Feb 07 jari 101     public COA3DViewer(Frame frame, FloatMatrix U, Experiment experiment, int geneOrExpt, int xAxis, int yAxis, int zAxis) {
2 26 Feb 07 jari 102         this.frame = frame;
2 26 Feb 07 jari 103         this.experiment = experiment;
2 26 Feb 07 jari 104         this.exptID = experiment.getId();
2 26 Feb 07 jari 105         this.geneOrExpt = geneOrExpt;
2 26 Feb 07 jari 106         this.U = U;
2 26 Feb 07 jari 107         this.xAxis = xAxis;
2 26 Feb 07 jari 108         this.yAxis= yAxis;
2 26 Feb 07 jari 109         this.zAxis = zAxis;        
2 26 Feb 07 jari 110         //this.mode = mode;
2 26 Feb 07 jari 111         content = createContent(U, experiment, geneOrExpt, xAxis, yAxis, zAxis);
2 26 Feb 07 jari 112         dlg = new COASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());
2 26 Feb 07 jari 113         //content = new JPanel();
2 26 Feb 07 jari 114         popup = createJPopupMenu();    
2 26 Feb 07 jari 115          
2 26 Feb 07 jari 116         Listener listener2 = new Listener(); // this was an attempt to get the pop up menu to show up over the 3D viewer
2 26 Feb 07 jari 117         popup2 = createJPopupMenu(listener2); //didn't work because of the native mouse response behavior of the 3D API, but left it in for possible future use  
2 26 Feb 07 jari 118   getContentComponent().addMouseListener(listener2);        
2 26 Feb 07 jari 119     }    
2 26 Feb 07 jari 120     
2 26 Feb 07 jari 121     public COA3DViewer(Frame frame, FloatMatrix geneUMatrix, FloatMatrix exptUMatrix, Experiment experiment, int geneOrExpt) {
2 26 Feb 07 jari 122         this.frame = frame;
2 26 Feb 07 jari 123         this.experiment = experiment;
2 26 Feb 07 jari 124         this.exptID = experiment.getId();
2 26 Feb 07 jari 125         this.geneOrExpt = geneOrExpt;
2 26 Feb 07 jari 126         this.geneUMatrix = geneUMatrix;
2 26 Feb 07 jari 127         this.exptUMatrix = exptUMatrix;
2 26 Feb 07 jari 128         content = createContent(geneUMatrix, exptUMatrix, experiment, geneOrExpt);
2 26 Feb 07 jari 129         dlg = new COASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());        
2 26 Feb 07 jari 130         popup = createJPopupMenu(); 
2 26 Feb 07 jari 131         
2 26 Feb 07 jari 132         Listener listener2 = new Listener(); // this was an attempt to get the pop up menu to show up over the 3D viewer
2 26 Feb 07 jari 133         popup2 = createJPopupMenu(listener2); //didn't work because of the native mouse response behavior of the 3D API, but left it in for possible future use  
2 26 Feb 07 jari 134   getContentComponent().addMouseListener(listener2);        
2 26 Feb 07 jari 135     }
2 26 Feb 07 jari 136     
2 26 Feb 07 jari 137     public COA3DViewer(Frame frame, FloatMatrix geneUMatrix, FloatMatrix exptUMatrix, Experiment experiment, int geneOrExpt, int xAxis, int yAxis, int zAxis) {
2 26 Feb 07 jari 138         this.frame = frame;
2 26 Feb 07 jari 139         this.experiment = experiment;
2 26 Feb 07 jari 140         this.exptID = experiment.getId();
2 26 Feb 07 jari 141         this.geneOrExpt = geneOrExpt;
2 26 Feb 07 jari 142         this.geneUMatrix = geneUMatrix;
2 26 Feb 07 jari 143         this.exptUMatrix = exptUMatrix;
2 26 Feb 07 jari 144         this.xAxis = xAxis;
2 26 Feb 07 jari 145         this.yAxis= yAxis;
2 26 Feb 07 jari 146         this.zAxis = zAxis;        
2 26 Feb 07 jari 147         content = createContent(geneUMatrix, exptUMatrix, experiment, geneOrExpt, xAxis, yAxis, zAxis);
2 26 Feb 07 jari 148         dlg = new COASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());        
2 26 Feb 07 jari 149         //content = new JPanel();
2 26 Feb 07 jari 150         popup = createJPopupMenu(); 
2 26 Feb 07 jari 151         
2 26 Feb 07 jari 152         Listener listener2 = new Listener(); // this was an attempt to get the pop up menu to show up over the 3D viewer
2 26 Feb 07 jari 153         popup2 = createJPopupMenu(listener2); //didn't work because of the native mouse response behavior of the 3D API, but left it in for possible future use  
2 26 Feb 07 jari 154         getContentComponent().addMouseListener(listener2);        
2 26 Feb 07 jari 155     }    
2 26 Feb 07 jari 156     
2 26 Feb 07 jari 157     
2 26 Feb 07 jari 158     public COA3DViewer(Experiment e, FloatMatrix geneUMatrix, FloatMatrix exptUMatrix, Integer geneOrExpt, FloatMatrix U, Integer xAxis, Integer yAxis, Integer zAxis) {
2 26 Feb 07 jari 159       this.geneOrExpt = geneOrExpt.intValue();
2 26 Feb 07 jari 160         this.geneUMatrix = geneUMatrix;
2 26 Feb 07 jari 161         this.exptUMatrix = exptUMatrix;
2 26 Feb 07 jari 162         this.U = U;
2 26 Feb 07 jari 163         this.xAxis = xAxis.intValue();
2 26 Feb 07 jari 164         this.yAxis = yAxis.intValue();
2 26 Feb 07 jari 165         this.zAxis = zAxis.intValue();   
2 26 Feb 07 jari 166         setExperiment(e);
2 26 Feb 07 jari 167   }
2 26 Feb 07 jari 168     /**
2 26 Feb 07 jari 169      * @inheritDoc
2 26 Feb 07 jari 170      */
2 26 Feb 07 jari 171     public Expression getExpression(){
2 26 Feb 07 jari 172       return new Expression(this, this.getClass(), "new", 
2 26 Feb 07 jari 173           new Object[]{this.experiment, geneUMatrix, exptUMatrix, new Integer(geneOrExpt), U, new Integer(xAxis), new Integer(yAxis), new Integer(zAxis)});
2 26 Feb 07 jari 174     }
2 26 Feb 07 jari 175     /**
2 26 Feb 07 jari 176      * @inheritDoc
2 26 Feb 07 jari 177      */
2 26 Feb 07 jari 178     public void setExperiment(Experiment e){
2 26 Feb 07 jari 179       this.experiment = e;
2 26 Feb 07 jari 180       this.exptID = experiment.getId();
2 26 Feb 07 jari 181       if (this.geneOrExpt == COAGUI.BOTH) {
2 26 Feb 07 jari 182           content = createContent(geneUMatrix, exptUMatrix, experiment, geneOrExpt, xAxis, yAxis, zAxis);
2 26 Feb 07 jari 183           dlg = new COASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());            
2 26 Feb 07 jari 184       } else {
2 26 Feb 07 jari 185           content = createContent(U, experiment, geneOrExpt, xAxis, yAxis, zAxis);
2 26 Feb 07 jari 186           dlg = new COASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());
2 26 Feb 07 jari 187       }   
2 26 Feb 07 jari 188       popup = createJPopupMenu(); 
2 26 Feb 07 jari 189         
2 26 Feb 07 jari 190     }
2 26 Feb 07 jari 191     public Experiment getExperiment(){return this.experiment;}
2 26 Feb 07 jari 192     public int getExperimentID(){return this.exptID;}
2 26 Feb 07 jari 193     
2 26 Feb 07 jari 194     /**
2 26 Feb 07 jari 195      * Updates the viewer data and its content.
2 26 Feb 07 jari 196      */
2 26 Feb 07 jari 197     public void onSelected(IFramework framework) {
2 26 Feb 07 jari 198         this.framework = framework;
2 26 Feb 07 jari 199         this.frame = framework.getFrame();
2 26 Feb 07 jari 200         this.data = framework.getData();
2 26 Feb 07 jari 201         IDisplayMenu menu = framework.getDisplayMenu();        
2 26 Feb 07 jari 202         labelIndex = menu.getLabelIndex();        
2 26 Feb 07 jari 203         content.setData(this.data);
2 26 Feb 07 jari 204         content.setGeneLabelIndex(labelIndex);
2 26 Feb 07 jari 205         onMenuChanged(menu);
2 26 Feb 07 jari 206         content.updateScene();
2 26 Feb 07 jari 207         
2 26 Feb 07 jari 208         //In case it is viewed after serialization
2 26 Feb 07 jari 209         if(popup == null){
2 26 Feb 07 jari 210             popup = createJPopupMenu(); 
2 26 Feb 07 jari 211             DefaultMutableTreeNode node = framework.getCurrentNode();
2 26 Feb 07 jari 212             if(node != null){
2 26 Feb 07 jari 213                 if(node.getUserObject() instanceof LeafInfo){
2 26 Feb 07 jari 214                     LeafInfo leafInfo = (LeafInfo) node.getUserObject();
2 26 Feb 07 jari 215                     leafInfo.setPopupMenu(this.popup);
2 26 Feb 07 jari 216                 }
2 26 Feb 07 jari 217             }
2 26 Feb 07 jari 218         }    
2 26 Feb 07 jari 219     }  
2 26 Feb 07 jari 220     
2 26 Feb 07 jari 221     public void onMenuChanged(IDisplayMenu menu) {
2 26 Feb 07 jari 222         labelIndex = menu.getLabelIndex();  
2 26 Feb 07 jari 223         content.setGeneLabelIndex(labelIndex);  
2 26 Feb 07 jari 224         content.updateScene();        
2 26 Feb 07 jari 225     }    
2 26 Feb 07 jari 226     
2 26 Feb 07 jari 227     /**
2 26 Feb 07 jari 228      * Updates the viewer data and its content.
2 26 Feb 07 jari 229      */
2 26 Feb 07 jari 230     public void onDataChanged(IData data) {
2 26 Feb 07 jari 231         this.data = data;
2 26 Feb 07 jari 232         content.setData(data);
2 26 Feb 07 jari 233         content.updateScene();
2 26 Feb 07 jari 234     }
2 26 Feb 07 jari 235     
2 26 Feb 07 jari 236     /**
2 26 Feb 07 jari 237      * Returns a content of the viewer.
2 26 Feb 07 jari 238      */
2 26 Feb 07 jari 239     public JComponent getContentComponent() {
2 26 Feb 07 jari 240         return content;
2 26 Feb 07 jari 241     } 
2 26 Feb 07 jari 242     
2 26 Feb 07 jari 243     /**
2 26 Feb 07 jari 244      * Returns a content image.
2 26 Feb 07 jari 245      */
2 26 Feb 07 jari 246     public BufferedImage getImage() {
2 26 Feb 07 jari 247         return content.createImage();
2 26 Feb 07 jari 248     }
2 26 Feb 07 jari 249     
2 26 Feb 07 jari 250     /**
2 26 Feb 07 jari 251      * Creates a 3D content with specified mode, u-matrix and experiment.
2 26 Feb 07 jari 252      */
2 26 Feb 07 jari 253     private COAContent3D createContent(FloatMatrix U, Experiment experiment, int geneOrExpt) {
2 26 Feb 07 jari 254         return new COAContent3D(U, experiment, geneOrExpt);
2 26 Feb 07 jari 255     }    
2 26 Feb 07 jari 256     
2 26 Feb 07 jari 257     private COAContent3D createContent(FloatMatrix geneUMatrix, FloatMatrix exptUMatrix, Experiment experiment, int geneOrExpt) {
2 26 Feb 07 jari 258         return new COAContent3D(geneUMatrix, exptUMatrix, experiment, geneOrExpt);
2 26 Feb 07 jari 259     }    
2 26 Feb 07 jari 260     
2 26 Feb 07 jari 261     private COAContent3D createContent(FloatMatrix U, Experiment experiment, int geneOrExpt, int xAxis, int yaxis, int zAxis) {
2 26 Feb 07 jari 262         return new COAContent3D(U, experiment, geneOrExpt, xAxis, yAxis, zAxis);
2 26 Feb 07 jari 263     }    
2 26 Feb 07 jari 264     
2 26 Feb 07 jari 265     private COAContent3D createContent(FloatMatrix geneUMatrix, FloatMatrix exptUMatrix, Experiment experiment, int geneOrExpt, int xAxis, int yaxis, int zAxis) {
2 26 Feb 07 jari 266         return new COAContent3D(geneUMatrix, exptUMatrix, experiment, geneOrExpt, xAxis, yAxis, zAxis);
2 26 Feb 07 jari 267     }    
2 26 Feb 07 jari 268     
2 26 Feb 07 jari 269     /**
2 26 Feb 07 jari 270      * Returns the viewer popup menu.
2 26 Feb 07 jari 271      */
2 26 Feb 07 jari 272     public JPopupMenu getJPopupMenu() {
2 26 Feb 07 jari 273         return popup;
2 26 Feb 07 jari 274     }
2 26 Feb 07 jari 275     
2 26 Feb 07 jari 276     /**
2 26 Feb 07 jari 277      * Creates the viewer popup menu.
2 26 Feb 07 jari 278      */
2 26 Feb 07 jari 279     private JPopupMenu createJPopupMenu() {
2 26 Feb 07 jari 280         JPopupMenu popup = new JPopupMenu();
2 26 Feb 07 jari 281         addMenuItems(popup);
2 26 Feb 07 jari 282         return popup;
2 26 Feb 07 jari 283     }  
2 26 Feb 07 jari 284     
2 26 Feb 07 jari 285     /**
2 26 Feb 07 jari 286      * Creates a popup menu.
2 26 Feb 07 jari 287      */
2 26 Feb 07 jari 288     private JPopupMenu createJPopupMenu(Listener listener) {
2 26 Feb 07 jari 289   JPopupMenu popup = new JPopupMenu();
2 26 Feb 07 jari 290   addMenuItems(popup, listener);
2 26 Feb 07 jari 291   return popup;
2 26 Feb 07 jari 292     }    
2 26 Feb 07 jari 293     
2 26 Feb 07 jari 294     /**
2 26 Feb 07 jari 295      * Adds the viewer specific menu items.
2 26 Feb 07 jari 296      */
2 26 Feb 07 jari 297     private void addMenuItems(JPopupMenu menu) {
2 26 Feb 07 jari 298         Listener listener = new Listener();
2 26 Feb 07 jari 299         JMenuItem menuItem;
2 26 Feb 07 jari 300         menuItem = new JMenuItem("Reset", GUIFactory.getIcon("refresh16.gif"));
2 26 Feb 07 jari 301         menuItem.setActionCommand(RESET_CMD);
2 26 Feb 07 jari 302         menuItem.addActionListener(listener);
2 26 Feb 07 jari 303         menu.add(menuItem);
2 26 Feb 07 jari 304         
2 26 Feb 07 jari 305         menuItem = new JMenuItem("Options...", GUIFactory.getIcon("edit16.gif"));
2 26 Feb 07 jari 306         menuItem.setActionCommand(OPTIONS_CMD);
2 26 Feb 07 jari 307         menuItem.addActionListener(listener);
2 26 Feb 07 jari 308         menu.add(menuItem);
2 26 Feb 07 jari 309         
2 26 Feb 07 jari 310         menu.addSeparator();
2 26 Feb 07 jari 311         
2 26 Feb 07 jari 312         menuItem = new JMenuItem("Selection area...", GUIFactory.getIcon("edit16.gif"));
2 26 Feb 07 jari 313         menuItem.setEnabled(false);
2 26 Feb 07 jari 314         menuItem.setActionCommand(SELECTION_AREA_CMD);
2 26 Feb 07 jari 315         menuItem.addActionListener(listener);
2 26 Feb 07 jari 316         menu.add(menuItem);
2 26 Feb 07 jari 317         
2 26 Feb 07 jari 318         menu.addSeparator();
2 26 Feb 07 jari 319         
2 26 Feb 07 jari 320         if (this.geneOrExpt == COAGUI.BOTH) {
2 26 Feb 07 jari 321             menuItem = new JMenuItem("Store gene cluster...", GUIFactory.getIcon("new16.gif"));
2 26 Feb 07 jari 322             menuItem.setEnabled(false);
2 26 Feb 07 jari 323             menuItem.setActionCommand(STORE_GENE_CLUSTER_CMD);
2 26 Feb 07 jari 324             menuItem.addActionListener(listener);
2 26 Feb 07 jari 325             menu.add(menuItem);
2 26 Feb 07 jari 326             
2 26 Feb 07 jari 327             menuItem = new JMenuItem("Launch new session with selected genes", GUIFactory.getIcon("launch_new_mav.gif"));
2 26 Feb 07 jari 328             menuItem.setEnabled(false);
2 26 Feb 07 jari 329             menuItem.setActionCommand(LAUNCH_NEW_GENE_SESSION_CMD);
2 26 Feb 07 jari 330             menuItem.addActionListener(listener);
2 26 Feb 07 jari 331             menu.add(menuItem);
2 26 Feb 07 jari 332             
2 26 Feb 07 jari 333             menuItem = new JMenuItem("Save gene cluster...", GUIFactory.getIcon("save16.gif"));
2 26 Feb 07 jari 334             menuItem.setEnabled(false);
2 26 Feb 07 jari 335             menuItem.setActionCommand(SAVE_GENE_CLUSTER_CMD);
2 26 Feb 07 jari 336             menuItem.addActionListener(listener);
2 26 Feb 07 jari 337             menu.add(menuItem);
2 26 Feb 07 jari 338             
2 26 Feb 07 jari 339             menuItem = new JCheckBoxMenuItem("Show gene text");
2 26 Feb 07 jari 340             menuItem.setEnabled(true);
2 26 Feb 07 jari 341             menuItem.setActionCommand(SHOW_GENE_TEXT_FROM_BOTH_CMD);
2 26 Feb 07 jari 342             menuItem.addActionListener(listener);
2 26 Feb 07 jari 343             menu.add(menuItem);          
2 26 Feb 07 jari 344             menu.addSeparator(); 
2 26 Feb 07 jari 345             
2 26 Feb 07 jari 346             menuItem = new JMenuItem("Store sample cluster...", GUIFactory.getIcon("new16.gif"));
2 26 Feb 07 jari 347             menuItem.setEnabled(false);
2 26 Feb 07 jari 348             menuItem.setActionCommand(STORE_EXPT_CLUSTER_CMD);
2 26 Feb 07 jari 349             menuItem.addActionListener(listener);
2 26 Feb 07 jari 350             menu.add(menuItem);
2 26 Feb 07 jari 351             
2 26 Feb 07 jari 352             menuItem = new JMenuItem("Launch new session with selected samples", GUIFactory.getIcon("launch_new_mav.gif"));
2 26 Feb 07 jari 353             menuItem.setEnabled(false);
2 26 Feb 07 jari 354             menuItem.setActionCommand(LAUNCH_NEW_EXPT_SESSION_CMD);
2 26 Feb 07 jari 355             menuItem.addActionListener(listener);
2 26 Feb 07 jari 356             menu.add(menuItem);
2 26 Feb 07 jari 357             
2 26 Feb 07 jari 358             menuItem = new JMenuItem("Save sample cluster...", GUIFactory.getIcon("save16.gif"));
2 26 Feb 07 jari 359             menuItem.setEnabled(false);
2 26 Feb 07 jari 360             menuItem.setActionCommand(SAVE_EXPT_CLUSTER_CMD);
2 26 Feb 07 jari 361             menuItem.addActionListener(listener);
2 26 Feb 07 jari 362             menu.add(menuItem);
2 26 Feb 07 jari 363             
2 26 Feb 07 jari 364             menuItem = new JCheckBoxMenuItem("Show sample text");
2 26 Feb 07 jari 365             menuItem.setEnabled(true);
2 26 Feb 07 jari 366             menuItem.setActionCommand(SHOW_EXPT_TEXT_FROM_BOTH_CMD);
2 26 Feb 07 jari 367             menuItem.addActionListener(listener);
2 26 Feb 07 jari 368             menu.add(menuItem);            
2 26 Feb 07 jari 369             menu.addSeparator();            
2 26 Feb 07 jari 370         }
2 26 Feb 07 jari 371         else {
2 26 Feb 07 jari 372             menuItem = new JMenuItem("Store cluster...", GUIFactory.getIcon("new16.gif"));
2 26 Feb 07 jari 373             menuItem.setEnabled(false);
2 26 Feb 07 jari 374             menuItem.setActionCommand(STORE_CLUSTER_CMD);
2 26 Feb 07 jari 375             menuItem.addActionListener(listener);
2 26 Feb 07 jari 376             menu.add(menuItem);
2 26 Feb 07 jari 377             
2 26 Feb 07 jari 378             menuItem = new JMenuItem("Launch new session", GUIFactory.getIcon("launch_new_mav.gif"));
2 26 Feb 07 jari 379             menuItem.setEnabled(false);
2 26 Feb 07 jari 380             menuItem.setActionCommand(LAUNCH_NEW_SESSION_CMD);
2 26 Feb 07 jari 381             menuItem.addActionListener(listener);
2 26 Feb 07 jari 382             menu.add(menuItem);
2 26 Feb 07 jari 383             
2 26 Feb 07 jari 384             menuItem = new JMenuItem("Save cluster...", GUIFactory.getIcon("save16.gif"));
2 26 Feb 07 jari 385             menuItem.setEnabled(false);
2 26 Feb 07 jari 386             menuItem.setActionCommand(SAVE_CMD);
2 26 Feb 07 jari 387             menuItem.addActionListener(listener);
2 26 Feb 07 jari 388             menu.add(menuItem);
2 26 Feb 07 jari 389             
2 26 Feb 07 jari 390             menuItem = new JCheckBoxMenuItem("Show text");
2 26 Feb 07 jari 391             menuItem.setEnabled(true);
2 26 Feb 07 jari 392             menuItem.setActionCommand(SHOW_TEXT_CMD);
2 26 Feb 07 jari 393             menuItem.addActionListener(listener);
2 26 Feb 07 jari 394             menu.add(menuItem);            
2 26 Feb 07 jari 395             menu.addSeparator();
2 26 Feb 07 jari 396         }
2 26 Feb 07 jari 397         
2 26 Feb 07 jari 398         menuItem = new JCheckBoxMenuItem("Show selection area");
2 26 Feb 07 jari 399         menuItem.setActionCommand(SHOW_SELECTION_CMD);
2 26 Feb 07 jari 400         menuItem.addActionListener(listener);
2 26 Feb 07 jari 401         menu.add(menuItem);
2 26 Feb 07 jari 402         
2 26 Feb 07 jari 403         menuItem = new JCheckBoxMenuItem("Hide selection box");
2 26 Feb 07 jari 404         menuItem.setEnabled(false);
2 26 Feb 07 jari 405         menuItem.setActionCommand(HIDE_SELECTION_BOX_CMD);
2 26 Feb 07 jari 406         menuItem.addActionListener(listener);
2 26 Feb 07 jari 407         menu.add(menuItem);
2 26 Feb 07 jari 408         
2 26 Feb 07 jari 409         menuItem = new JCheckBoxMenuItem("Show spheres");
2 26 Feb 07 jari 410         menuItem.setActionCommand(SHOW_SPHERES_CMD);
2 26 Feb 07 jari 411         menuItem.addActionListener(listener);
2 26 Feb 07 jari 412         menu.add(menuItem);
2 26 Feb 07 jari 413         
2 26 Feb 07 jari 414         /*
2 26 Feb 07 jari 415         menuItem = new JCheckBoxMenuItem("Show text");
2 26 Feb 07 jari 416         menuItem.setEnabled(true);
2 26 Feb 07 jari 417         menuItem.setActionCommand(SHOW_TEXT_CMD);
2 26 Feb 07 jari 418         menuItem.addActionListener(listener);
2 26 Feb 07 jari 419         menu.add(menuItem);
2 26 Feb 07 jari 420         */
2 26 Feb 07 jari 421         menuItem = new JCheckBoxMenuItem("White background");
2 26 Feb 07 jari 422         menuItem.setActionCommand(WHITE_CMD);
2 26 Feb 07 jari 423         menuItem.addActionListener(listener);
2 26 Feb 07 jari 424         menu.add(menuItem);
2 26 Feb 07 jari 425     }   
2 26 Feb 07 jari 426     
2 26 Feb 07 jari 427     /**
2 26 Feb 07 jari 428      * Adds the viewer specific menu items.
2 26 Feb 07 jari 429      */
2 26 Feb 07 jari 430     private void addMenuItems(JPopupMenu menu, ActionListener listener) {
2 26 Feb 07 jari 431         //Listener listener = new Listener();
2 26 Feb 07 jari 432         JMenuItem menuItem;
2 26 Feb 07 jari 433         menuItem = new JMenuItem("Reset", GUIFactory.getIcon("refresh16.gif"));
2 26 Feb 07 jari 434         menuItem.setActionCommand(RESET_CMD);
2 26 Feb 07 jari 435         menuItem.addActionListener(listener);
2 26 Feb 07 jari 436         menu.add(menuItem);
2 26 Feb 07 jari 437         
2 26 Feb 07 jari 438         menuItem = new JMenuItem("Options...", GUIFactory.getIcon("edit16.gif"));
2 26 Feb 07 jari 439         menuItem.setActionCommand(OPTIONS_CMD);
2 26 Feb 07 jari 440         menuItem.addActionListener(listener);
2 26 Feb 07 jari 441         menu.add(menuItem);
2 26 Feb 07 jari 442         
2 26 Feb 07 jari 443         menu.addSeparator();
2 26 Feb 07 jari 444         
2 26 Feb 07 jari 445         menuItem = new JMenuItem("Selection area...", GUIFactory.getIcon("edit16.gif"));
2 26 Feb 07 jari 446         menuItem.setEnabled(false);
2 26 Feb 07 jari 447         menuItem.setActionCommand(SELECTION_AREA_CMD);
2 26 Feb 07 jari 448         menuItem.addActionListener(listener);
2 26 Feb 07 jari 449         menu.add(menuItem);
2 26 Feb 07 jari 450         
2 26 Feb 07 jari 451         menu.addSeparator();
2 26 Feb 07 jari 452         
2 26 Feb 07 jari 453         if (this.geneOrExpt == COAGUI.BOTH) {
2 26 Feb 07 jari 454             menuItem = new JMenuItem("Store gene cluster...", GUIFactory.getIcon("new16.gif"));
2 26 Feb 07 jari 455             menuItem.setEnabled(false);
2 26 Feb 07 jari 456             menuItem.setActionCommand(STORE_GENE_CLUSTER_CMD);
2 26 Feb 07 jari 457             menuItem.addActionListener(listener);
2 26 Feb 07 jari 458             menu.add(menuItem);
2 26 Feb 07 jari 459             
2 26 Feb 07 jari 460             menuItem = new JMenuItem("Launch new session with selected genes", GUIFactory.getIcon("launch_new_mav.gif"));
2 26 Feb 07 jari 461             menuItem.setEnabled(false);
2 26 Feb 07 jari 462             menuItem.setActionCommand(LAUNCH_NEW_GENE_SESSION_CMD);
2 26 Feb 07 jari 463             menuItem.addActionListener(listener);
2 26 Feb 07 jari 464             menu.add(menuItem);
2 26 Feb 07 jari 465             
2 26 Feb 07 jari 466             menuItem = new JMenuItem("Save gene cluster...", GUIFactory.getIcon("save16.gif"));
2 26 Feb 07 jari 467             menuItem.setEnabled(false);
2 26 Feb 07 jari 468             menuItem.setActionCommand(SAVE_GENE_CLUSTER_CMD);
2 26 Feb 07 jari 469             menuItem.addActionListener(listener);
2 26 Feb 07 jari 470             menu.add(menuItem);
2 26 Feb 07 jari 471             
2 26 Feb 07 jari 472             menuItem = new JCheckBoxMenuItem("Show gene text");
2 26 Feb 07 jari 473             menuItem.setEnabled(true);
2 26 Feb 07 jari 474             menuItem.setActionCommand(SHOW_GENE_TEXT_FROM_BOTH_CMD);
2 26 Feb 07 jari 475             menuItem.addActionListener(listener);
2 26 Feb 07 jari 476             menu.add(menuItem);          
2 26 Feb 07 jari 477             menu.addSeparator();            
2 26 Feb 07 jari 478             
2 26 Feb 07 jari 479             menuItem = new JMenuItem("Store sample cluster...", GUIFactory.getIcon("new16.gif"));
2 26 Feb 07 jari 480             menuItem.setEnabled(false);
2 26 Feb 07 jari 481             menuItem.setActionCommand(STORE_EXPT_CLUSTER_CMD);
2 26 Feb 07 jari 482             menuItem.addActionListener(listener);
2 26 Feb 07 jari 483             menu.add(menuItem);
2 26 Feb 07 jari 484             
2 26 Feb 07 jari 485             menuItem = new JMenuItem("Launch new session with selected samples", GUIFactory.getIcon("launch_new_mav.gif"));
2 26 Feb 07 jari 486             menuItem.setEnabled(false);
2 26 Feb 07 jari 487             menuItem.setActionCommand(LAUNCH_NEW_EXPT_SESSION_CMD);
2 26 Feb 07 jari 488             menuItem.addActionListener(listener);
2 26 Feb 07 jari 489             menu.add(menuItem);
2 26 Feb 07 jari 490             
2 26 Feb 07 jari 491             menuItem = new JMenuItem("Save sample cluster...", GUIFactory.getIcon("save16.gif"));
2 26 Feb 07 jari 492             menuItem.setEnabled(false);
2 26 Feb 07 jari 493             menuItem.setActionCommand(SAVE_EXPT_CLUSTER_CMD);
2 26 Feb 07 jari 494             menuItem.addActionListener(listener);
2 26 Feb 07 jari 495             menu.add(menuItem);
2 26 Feb 07 jari 496             
2 26 Feb 07 jari 497             menuItem = new JCheckBoxMenuItem("Show sample text");
2 26 Feb 07 jari 498             menuItem.setEnabled(true);
2 26 Feb 07 jari 499             menuItem.setActionCommand(SHOW_EXPT_TEXT_FROM_BOTH_CMD);
2 26 Feb 07 jari 500             menuItem.addActionListener(listener);
2 26 Feb 07 jari 501             menu.add(menuItem);          
2 26 Feb 07 jari 502             menu.addSeparator();            
2 26 Feb 07 jari 503                       
2 26 Feb 07 jari 504         }
2 26 Feb 07 jari 505         else {
2 26 Feb 07 jari 506             menuItem = new JMenuItem("Store cluster...", GUIFactory.getIcon("new16.gif"));
2 26 Feb 07 jari 507             menuItem.setEnabled(false);
2 26 Feb 07 jari 508             menuItem.setActionCommand(STORE_CLUSTER_CMD);
2 26 Feb 07 jari 509             menuItem.addActionListener(listener);
2 26 Feb 07 jari 510             menu.add(menuItem);
2 26 Feb 07 jari 511             
2 26 Feb 07 jari 512             menuItem = new JMenuItem("Launch new session", GUIFactory.getIcon("launch_new_mav.gif"));
2 26 Feb 07 jari 513             menuItem.setEnabled(false);
2 26 Feb 07 jari 514             menuItem.setActionCommand(LAUNCH_NEW_SESSION_CMD);
2 26 Feb 07 jari 515             menuItem.addActionListener(listener);
2 26 Feb 07 jari 516             menu.add(menuItem);
2 26 Feb 07 jari 517             
2 26 Feb 07 jari 518             menuItem = new JMenuItem("Save cluster...", GUIFactory.getIcon("save16.gif"));
2 26 Feb 07 jari 519             menuItem.setEnabled(false);
2 26 Feb 07 jari 520             menuItem.setActionCommand(SAVE_CMD);
2 26 Feb 07 jari 521             menuItem.addActionListener(listener);
2 26 Feb 07 jari 522             menu.add(menuItem);
2 26 Feb 07 jari 523             
2 26 Feb 07 jari 524             menuItem = new JCheckBoxMenuItem("Show text");
2 26 Feb 07 jari 525             menuItem.setEnabled(true);
2 26 Feb 07 jari 526             menuItem.setActionCommand(SHOW_TEXT_CMD);
2 26 Feb 07 jari 527             menuItem.addActionListener(listener);
2 26 Feb 07 jari 528             menu.add(menuItem);            
2 26 Feb 07 jari 529             menu.addSeparator();
2 26 Feb 07 jari 530         }
2 26 Feb 07 jari 531         
2 26 Feb 07 jari 532         menuItem = new JCheckBoxMenuItem("Show selection area");
2 26 Feb 07 jari 533         menuItem.setActionCommand(SHOW_SELECTION_CMD);
2 26 Feb 07 jari 534         menuItem.addActionListener(listener);
2 26 Feb 07 jari 535         menu.add(menuItem);
2 26 Feb 07 jari 536         
2 26 Feb 07 jari 537         menuItem = new JCheckBoxMenuItem("Hide selection box");
2 26 Feb 07 jari 538         menuItem.setEnabled(false);
2 26 Feb 07 jari 539         menuItem.setActionCommand(HIDE_SELECTION_BOX_CMD);
2 26 Feb 07 jari 540         menuItem.addActionListener(listener);
2 26 Feb 07 jari 541         menu.add(menuItem);
2 26 Feb 07 jari 542         
2 26 Feb 07 jari 543         menuItem = new JCheckBoxMenuItem("Show spheres");
2 26 Feb 07 jari 544         menuItem.setActionCommand(SHOW_SPHERES_CMD);
2 26 Feb 07 jari 545         menuItem.addActionListener(listener);
2 26 Feb 07 jari 546         menu.add(menuItem);
2 26 Feb 07 jari 547         /*
2 26 Feb 07 jari 548         menuItem = new JCheckBoxMenuItem("Show text");
2 26 Feb 07 jari 549         menuItem.setEnabled(true);
2 26 Feb 07 jari 550         menuItem.setActionCommand(SHOW_TEXT_CMD);
2 26 Feb 07 jari 551         menuItem.addActionListener(listener);
2 26 Feb 07 jari 552         menu.add(menuItem);
2 26 Feb 07 jari 553         */
2 26 Feb 07 jari 554         menuItem = new JCheckBoxMenuItem("White background");
2 26 Feb 07 jari 555         menuItem.setActionCommand(WHITE_CMD);
2 26 Feb 07 jari 556         menuItem.addActionListener(listener);
2 26 Feb 07 jari 557         menu.add(menuItem);
2 26 Feb 07 jari 558     }    
2 26 Feb 07 jari 559
2 26 Feb 07 jari 560     /**
2 26 Feb 07 jari 561      * Returns a menu item by specified action command.
2 26 Feb 07 jari 562      */
2 26 Feb 07 jari 563     private JMenuItem getJMenuItem(String command) {
2 26 Feb 07 jari 564         JMenuItem item;
2 26 Feb 07 jari 565         Component[] components = popup.getComponents();
2 26 Feb 07 jari 566         for (int i=0; i<components.length; i++) {
2 26 Feb 07 jari 567             if (components[i] instanceof JMenuItem) {
2 26 Feb 07 jari 568                 if (((JMenuItem)components[i]).getActionCommand().equals(command))
2 26 Feb 07 jari 569                     return(JMenuItem)components[i];
2 26 Feb 07 jari 570             }
2 26 Feb 07 jari 571         }
2 26 Feb 07 jari 572         return null;
2 26 Feb 07 jari 573     }    
2 26 Feb 07 jari 574     
2 26 Feb 07 jari 575     /**
2 26 Feb 07 jari 576      * Sets a menu item state.
2 26 Feb 07 jari 577      */
2 26 Feb 07 jari 578     private void setEnableMenuItem(String command, boolean enable) {
2 26 Feb 07 jari 579         JMenuItem item = getJMenuItem(command);
2 26 Feb 07 jari 580         if (item == null) {
2 26 Feb 07 jari 581             return;
2 26 Feb 07 jari 582         }
2 26 Feb 07 jari 583         item.setEnabled(enable);
2 26 Feb 07 jari 584     }
2 26 Feb 07 jari 585     
2 26 Feb 07 jari 586     /**
2 26 Feb 07 jari 587      * Reset the viewer content.
2 26 Feb 07 jari 588      */
2 26 Feb 07 jari 589     private void onReset() {
2 26 Feb 07 jari 590         content.reset();
2 26 Feb 07 jari 591     }
2 26 Feb 07 jari 592     
2 26 Feb 07 jari 593     /**
2 26 Feb 07 jari 594      * Sets the user specified content parameters.
2 26 Feb 07 jari 595      */
2 26 Feb 07 jari 596     private void onOptions() {
2 26 Feb 07 jari 597         COAResultConfigDialog dlg = new COAResultConfigDialog(frame,
2 26 Feb 07 jari 598         content.getPointSize(), content.getSelectedPointSize(),
2 26 Feb 07 jari 599         content.getScaleAxisX(), content.getScaleAxisY(), content.getScaleAxisZ());
2 26 Feb 07 jari 600         if (dlg.showModal() == JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 601             content.setPointSize(dlg.getPointSize());
2 26 Feb 07 jari 602             content.setSelectedPointSize(dlg.getSelectedPointSize());
2 26 Feb 07 jari 603             content.setScale(dlg.getScaleAxisX(), dlg.getScaleAxisY(), dlg.getScaleAxisZ());
2 26 Feb 07 jari 604             content.updateScene();
2 26 Feb 07 jari 605         }
2 26 Feb 07 jari 606     }  
2 26 Feb 07 jari 607     
2 26 Feb 07 jari 608     /**
2 26 Feb 07 jari 609      * Sets the user specified selection area parameters.
2 26 Feb 07 jari 610      */
2 26 Feb 07 jari 611     private void onSelectionArea() {
2 26 Feb 07 jari 612         //COASelectionAreaDialog dlg = new COASelectionAreaDialog(frame,
2 26 Feb 07 jari 613         //content.getPositionX(), content.getPositionY(), content.getPositionZ(),
2 26 Feb 07 jari 614         //content.getSizeX(), content.getSizeY(), content.getSizeZ());
2 26 Feb 07 jari 615         //COASelectionAreaDialog dlg = new COASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());
2 26 Feb 07 jari 616         if (dlg.showModal() == JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 617             content.setBoxPosition(dlg.getPositionX(), dlg.getPositionY(), dlg.getPositionZ());
2 26 Feb 07 jari 618             content.setBoxSize(dlg.getSizeX(), dlg.getSizeY(), dlg.getSizeZ());
2 26 Feb 07 jari 619             content.updateScene();
2 26 Feb 07 jari 620         }
2 26 Feb 07 jari 621     }   
2 26 Feb 07 jari 622     
2 26 Feb 07 jari 623     /**
2 26 Feb 07 jari 624      * Saves selected genes.
2 26 Feb 07 jari 625      */
2 26 Feb 07 jari 626     private void onSave() {
2 26 Feb 07 jari 627         try {
2 26 Feb 07 jari 628             if(geneOrExpt == COAGUI.GENES)
2 26 Feb 07 jari 629                 ExperimentUtil.saveExperiment(frame, experiment, data, content.getSelectedGenes());
2 26 Feb 07 jari 630             else if (geneOrExpt == COAGUI.EXPTS)
2 26 Feb 07 jari 631                 ExperimentUtil.saveExperimentCluster(frame, experiment, data, content.getSelectedGenes());
2 26 Feb 07 jari 632         } catch (Exception e) {
2 26 Feb 07 jari 633             JOptionPane.showMessageDialog(frame, "Can not save matrix!", e.toString(), JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 634             e.printStackTrace();
2 26 Feb 07 jari 635         }
2 26 Feb 07 jari 636     }
2 26 Feb 07 jari 637     
2 26 Feb 07 jari 638     private void onSaveGenesFromBoth() {
2 26 Feb 07 jari 639         try {
2 26 Feb 07 jari 640             ExperimentUtil.saveExperiment(frame, experiment, data, content.getSelectedGenesFromBoth());            
2 26 Feb 07 jari 641         } catch (Exception e) {
2 26 Feb 07 jari 642             JOptionPane.showMessageDialog(frame, "Can not save matrix!", e.toString(), JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 643             e.printStackTrace();
2 26 Feb 07 jari 644         }
2 26 Feb 07 jari 645     }
2 26 Feb 07 jari 646     
2 26 Feb 07 jari 647     private void onSaveExptsFromBoth() {
2 26 Feb 07 jari 648         try {
2 26 Feb 07 jari 649             ExperimentUtil.saveExperimentCluster(frame, experiment, data, content.getSelectedExptsFromBoth());            
2 26 Feb 07 jari 650         } catch (Exception e) {
2 26 Feb 07 jari 651             JOptionPane.showMessageDialog(frame, "Can not save matrix!", e.toString(), JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 652             e.printStackTrace();
2 26 Feb 07 jari 653         }
2 26 Feb 07 jari 654     }    
2 26 Feb 07 jari 655     
2 26 Feb 07 jari 656     /**
2 26 Feb 07 jari 657      * Stores the selected cluster
2 26 Feb 07 jari 658      */
2 26 Feb 07 jari 659     private void storeCluster(){
2 26 Feb 07 jari 660         if(geneOrExpt == COAGUI.GENES)
2 26 Feb 07 jari 661             framework.storeSubCluster( content.getSelectedGenes(), experiment, Cluster.GENE_CLUSTER);
2 26 Feb 07 jari 662         else if (geneOrExpt == COAGUI.EXPTS)
2 26 Feb 07 jari 663             framework.storeSubCluster( content.getSelectedGenes(), experiment, Cluster.EXPERIMENT_CLUSTER);
2 26 Feb 07 jari 664         content.setSelection(false);
2 26 Feb 07 jari 665         //onHideSelection(); 
2 26 Feb 07 jari 666         this.onDataChanged(this.data);
2 26 Feb 07 jari 667         content.updateScene();        
2 26 Feb 07 jari 668     }
2 26 Feb 07 jari 669     
2 26 Feb 07 jari 670     private void storeGeneClusterFromBoth() {
2 26 Feb 07 jari 671         framework.storeSubCluster( content.getSelectedGenesFromBoth(), experiment, Cluster.GENE_CLUSTER);
2 26 Feb 07 jari 672         content.setSelection(false);
2 26 Feb 07 jari 673         //onHideSelection(); 
2 26 Feb 07 jari 674         this.onDataChanged(this.data);
2 26 Feb 07 jari 675         content.updateScene();        
2 26 Feb 07 jari 676     }
2 26 Feb 07 jari 677     
2 26 Feb 07 jari 678     private void storeExptClusterFromBoth() {
2 26 Feb 07 jari 679         framework.storeSubCluster( content.getSelectedExptsFromBoth(), experiment, Cluster.EXPERIMENT_CLUSTER);     
2 26 Feb 07 jari 680         content.setSelection(false);
2 26 Feb 07 jari 681         //onHideSelection(); 
2 26 Feb 07 jari 682         this.onDataChanged(this.data);
2 26 Feb 07 jari 683         content.updateScene();        
2 26 Feb 07 jari 684     }
2 26 Feb 07 jari 685     
2 26 Feb 07 jari 686     
2 26 Feb 07 jari 687     /**
2 26 Feb 07 jari 688      * Launches a new MultipleArrayViewer using selected elements
2 26 Feb 07 jari 689      */
2 26 Feb 07 jari 690     private void launchNewSession(){
2 26 Feb 07 jari 691         if(geneOrExpt == COAGUI.GENES)
2 26 Feb 07 jari 692             framework.launchNewMAV(content.getSelectedGenes(), this.experiment, "Multiple Experiment Viewer - Cluster Viewer", Cluster.GENE_CLUSTER);
2 26 Feb 07 jari 693         else if (geneOrExpt == COAGUI.EXPTS)
2 26 Feb 07 jari 694             framework.launchNewMAV(content.getSelectedGenes(), this.experiment, "Multiple Experiment Viewer - Cluster Viewer", Cluster.EXPERIMENT_CLUSTER);        
2 26 Feb 07 jari 695     }
2 26 Feb 07 jari 696     
2 26 Feb 07 jari 697     private void launchNewGeneSessionFromBoth() {
2 26 Feb 07 jari 698         framework.launchNewMAV(content.getSelectedGenesFromBoth(), this.experiment, "Multiple Experiment Viewer - Cluster Viewer", Cluster.GENE_CLUSTER);
2 26 Feb 07 jari 699     }
2 26 Feb 07 jari 700     
2 26 Feb 07 jari 701     private void launchNewExptSessionFromBoth() {
2 26 Feb 07 jari 702        framework.launchNewMAV(content.getSelectedExptsFromBoth(), this.experiment, "Multiple Experiment Viewer - Cluster Viewer", Cluster.EXPERIMENT_CLUSTER); 
2 26 Feb 07 jari 703     }
2 26 Feb 07 jari 704     
2 26 Feb 07 jari 705     /**
2 26 Feb 07 jari 706      * Handles the selection box state.
2 26 Feb 07 jari 707      */
2 26 Feb 07 jari 708     private void onShowSelection() {
2 26 Feb 07 jari 709         JMenuItem selectionItem = getJMenuItem(SHOW_SELECTION_CMD);
2 26 Feb 07 jari 710         JMenuItem hideBoxItem = getJMenuItem(HIDE_SELECTION_BOX_CMD);
2 26 Feb 07 jari 711         JMenuItem selectionAreaItem = getJMenuItem(SELECTION_AREA_CMD);
2 26 Feb 07 jari 712         if ((geneOrExpt == COAGUI.GENES) || (geneOrExpt == COAGUI.EXPTS)) {
2 26 Feb 07 jari 713             JMenuItem saveClusterItem = getJMenuItem(SAVE_CMD);
2 26 Feb 07 jari 714             JMenuItem storeClusterItem = getJMenuItem(STORE_CLUSTER_CMD);
2 26 Feb 07 jari 715             JMenuItem launchNewItem = getJMenuItem(LAUNCH_NEW_SESSION_CMD);
2 26 Feb 07 jari 716             if (selectionItem.isSelected()) {
2 26 Feb 07 jari 717                 content.setSelection(true);
2 26 Feb 07 jari 718                 content.setSelectionBox(!hideBoxItem.isSelected());
2 26 Feb 07 jari 719                 selectionAreaItem.setEnabled(true);
2 26 Feb 07 jari 720                 saveClusterItem.setEnabled(true);
2 26 Feb 07 jari 721                 hideBoxItem.setEnabled(true);
2 26 Feb 07 jari 722                 storeClusterItem.setEnabled(true);
2 26 Feb 07 jari 723                 launchNewItem.setEnabled(true);
2 26 Feb 07 jari 724             } else {
2 26 Feb 07 jari 725                 content.setSelection(false);
2 26 Feb 07 jari 726                 content.setSelectionBox(false);
2 26 Feb 07 jari 727                 selectionAreaItem.setEnabled(false);
2 26 Feb 07 jari 728                 saveClusterItem.setEnabled(false);
2 26 Feb 07 jari 729                 hideBoxItem.setEnabled(false);
2 26 Feb 07 jari 730                 storeClusterItem.setEnabled(false);
2 26 Feb 07 jari 731                 launchNewItem.setEnabled(false);
2 26 Feb 07 jari 732             }
2 26 Feb 07 jari 733         } else {
2 26 Feb 07 jari 734             JMenuItem saveGeneClusterItem = getJMenuItem(SAVE_GENE_CLUSTER_CMD);
2 26 Feb 07 jari 735             JMenuItem storeGeneClusterItem = getJMenuItem(STORE_GENE_CLUSTER_CMD);
2 26 Feb 07 jari 736             JMenuItem launchNewGeneItem = getJMenuItem(LAUNCH_NEW_GENE_SESSION_CMD);
2 26 Feb 07 jari 737             JMenuItem saveExptClusterItem = getJMenuItem(SAVE_EXPT_CLUSTER_CMD);
2 26 Feb 07 jari 738             JMenuItem storeExptClusterItem = getJMenuItem(STORE_EXPT_CLUSTER_CMD);
2 26 Feb 07 jari 739             JMenuItem launchNewExptItem = getJMenuItem(LAUNCH_NEW_EXPT_SESSION_CMD);
2 26 Feb 07 jari 740             if (selectionItem.isSelected()) {
2 26 Feb 07 jari 741                 content.setSelection(true);
2 26 Feb 07 jari 742                 content.setSelectionBox(!hideBoxItem.isSelected());
2 26 Feb 07 jari 743                 selectionAreaItem.setEnabled(true);
2 26 Feb 07 jari 744                 saveGeneClusterItem.setEnabled(true);
2 26 Feb 07 jari 745                 saveExptClusterItem.setEnabled(true);
2 26 Feb 07 jari 746                 hideBoxItem.setEnabled(true);
2 26 Feb 07 jari 747                 storeGeneClusterItem.setEnabled(true);
2 26 Feb 07 jari 748                 storeExptClusterItem.setEnabled(true);
2 26 Feb 07 jari 749                 launchNewGeneItem.setEnabled(true);  
2 26 Feb 07 jari 750                 launchNewExptItem.setEnabled(true);
2 26 Feb 07 jari 751             } else {
2 26 Feb 07 jari 752                 content.setSelection(false);
2 26 Feb 07 jari 753                 content.setSelectionBox(false);
2 26 Feb 07 jari 754                 selectionAreaItem.setEnabled(false);
2 26 Feb 07 jari 755                 saveGeneClusterItem.setEnabled(false);
2 26 Feb 07 jari 756                 saveExptClusterItem.setEnabled(false);
2 26 Feb 07 jari 757                 hideBoxItem.setEnabled(false);
2 26 Feb 07 jari 758                 storeGeneClusterItem.setEnabled(false);
2 26 Feb 07 jari 759                 storeExptClusterItem.setEnabled(false);
2 26 Feb 07 jari 760                 launchNewGeneItem.setEnabled(false);  
2 26 Feb 07 jari 761                 launchNewExptItem.setEnabled(false);                
2 26 Feb 07 jari 762             }
2 26 Feb 07 jari 763         }
2 26 Feb 07 jari 764         content.updateScene();
2 26 Feb 07 jari 765     }
2 26 Feb 07 jari 766     
2 26 Feb 07 jari 767     /**
2 26 Feb 07 jari 768      * Hides a content selection box.
2 26 Feb 07 jari 769      */
2 26 Feb 07 jari 770     private void onHideSelection() {
2 26 Feb 07 jari 771         content.setSelectionBox(!content.isSelectionBox());
2 26 Feb 07 jari 772         content.updateScene();
2 26 Feb 07 jari 773     }    
2 26 Feb 07 jari 774     
2 26 Feb 07 jari 775     /**
2 26 Feb 07 jari 776      * Shows or hides spheres.
2 26 Feb 07 jari 777      */
2 26 Feb 07 jari 778     private void onShowSphere() {
2 26 Feb 07 jari 779         content.setShowSpheres(!content.isShowSpheres());
2 26 Feb 07 jari 780         content.updateScene();
2 26 Feb 07 jari 781         if ((geneOrExpt == COAGUI.GENES) || (geneOrExpt == COAGUI.EXPTS)) {
2 26 Feb 07 jari 782             JMenuItem sphereItem = getJMenuItem(SHOW_SPHERES_CMD);
2 26 Feb 07 jari 783             JMenuItem textItem = getJMenuItem(SHOW_TEXT_CMD);
2 26 Feb 07 jari 784             if (sphereItem.isSelected()) {
2 26 Feb 07 jari 785                 content.setShowSpheres(true);
2 26 Feb 07 jari 786                 content.setShowText(textItem.isSelected());
2 26 Feb 07 jari 787                 textItem.setEnabled(true);
2 26 Feb 07 jari 788             } else {
2 26 Feb 07 jari 789                 content.setShowSpheres(false);
2 26 Feb 07 jari 790                 //content.setShowText(false);
2 26 Feb 07 jari 791                 content.setShowText(textItem.isSelected());
2 26 Feb 07 jari 792                 textItem.setEnabled(true);
2 26 Feb 07 jari 793             }            
2 26 Feb 07 jari 794         } else {
2 26 Feb 07 jari 795             JMenuItem sphereItem = getJMenuItem(SHOW_SPHERES_CMD);
2 26 Feb 07 jari 796             JMenuItem geneTextItem = getJMenuItem(SHOW_GENE_TEXT_FROM_BOTH_CMD);
2 26 Feb 07 jari 797             JMenuItem exptTextItem = getJMenuItem(SHOW_EXPT_TEXT_FROM_BOTH_CMD);
2 26 Feb 07 jari 798             if (sphereItem.isSelected()) {
2 26 Feb 07 jari 799                 content.setShowSpheres(true);
2 26 Feb 07 jari 800                 content.setShowGeneTextFromBoth(geneTextItem.isSelected());
2 26 Feb 07 jari 801                 geneTextItem.setEnabled(true);
2 26 Feb 07 jari 802                 content.setShowExptTextFromBoth(exptTextItem.isSelected());
2 26 Feb 07 jari 803                 exptTextItem.setEnabled(true);                
2 26 Feb 07 jari 804             } else {
2 26 Feb 07 jari 805                 content.setShowSpheres(false);
2 26 Feb 07 jari 806                 //content.setShowText(false);
2 26 Feb 07 jari 807                 content.setShowGeneTextFromBoth(geneTextItem.isSelected());
2 26 Feb 07 jari 808                 geneTextItem.setEnabled(true);
2 26 Feb 07 jari 809                 content.setShowExptTextFromBoth(exptTextItem.isSelected());
2 26 Feb 07 jari 810                 exptTextItem.setEnabled(true);                
2 26 Feb 07 jari 811             }            
2 26 Feb 07 jari 812         }
2 26 Feb 07 jari 813         content.updateScene();
2 26 Feb 07 jari 814     }
2 26 Feb 07 jari 815     
2 26 Feb 07 jari 816     /**
2 26 Feb 07 jari 817      * Shows or hide content text.
2 26 Feb 07 jari 818      */
2 26 Feb 07 jari 819     private void onShowText() {
2 26 Feb 07 jari 820         content.setShowText(!content.isShowText());
2 26 Feb 07 jari 821         content.updateScene();
2 26 Feb 07 jari 822     }
2 26 Feb 07 jari 823     
2 26 Feb 07 jari 824     private void onShowGeneTextFromBoth() {
2 26 Feb 07 jari 825         content.setShowGeneTextFromBoth(!content.isShowGeneTextFromBoth());
2 26 Feb 07 jari 826         content.updateScene();
2 26 Feb 07 jari 827     }    
2 26 Feb 07 jari 828     
2 26 Feb 07 jari 829     private void onShowExptTextFromBoth() {
2 26 Feb 07 jari 830         content.setShowExptTextFromBoth(!content.isShowExptTextFromBoth());
2 26 Feb 07 jari 831         content.updateScene();
2 26 Feb 07 jari 832     }    
2 26 Feb 07 jari 833         
2 26 Feb 07 jari 834     /**
2 26 Feb 07 jari 835      * Sets content background.
2 26 Feb 07 jari 836      */
2 26 Feb 07 jari 837     private void onWhiteBackground() {
2 26 Feb 07 jari 838         content.setWhiteBackround(!content.isWhiteBackground());
2 26 Feb 07 jari 839         content.updateScene();
2 26 Feb 07 jari 840     }    
2 26 Feb 07 jari 841     
2 26 Feb 07 jari 842     
2 26 Feb 07 jari 843     /** Returns a component to be inserted into the scroll pane row header
2 26 Feb 07 jari 844      */
2 26 Feb 07 jari 845     public JComponent getRowHeaderComponent() {
2 26 Feb 07 jari 846         return null;
2 26 Feb 07 jari 847     }
2 26 Feb 07 jari 848     
2 26 Feb 07 jari 849     /**
2 26 Feb 07 jari 850      * The listener to listen to menu items events.
2 26 Feb 07 jari 851      */
2 26 Feb 07 jari 852     private class Listener extends MouseAdapter implements ActionListener {
2 26 Feb 07 jari 853         public void actionPerformed(ActionEvent event) {
2 26 Feb 07 jari 854             String command = event.getActionCommand();
2 26 Feb 07 jari 855             if (command.equals(RESET_CMD)) {
2 26 Feb 07 jari 856                 onReset();
2 26 Feb 07 jari 857             } else if (command.equals(OPTIONS_CMD)) {
2 26 Feb 07 jari 858                 onOptions();
2 26 Feb 07 jari 859             } else if (command.equals(SELECTION_AREA_CMD)) {
2 26 Feb 07 jari 860                 onSelectionArea();
2 26 Feb 07 jari 861             } else if (command.equals(SAVE_GENE_CLUSTER_CMD)) {
2 26 Feb 07 jari 862                 onSaveGenesFromBoth();
2 26 Feb 07 jari 863             } else if (command.equals(SAVE_EXPT_CLUSTER_CMD)) {
2 26 Feb 07 jari 864                 onSaveExptsFromBoth();
2 26 Feb 07 jari 865             } else if (command.equals(SAVE_CMD)) {
2 26 Feb 07 jari 866                 onSave();
2 26 Feb 07 jari 867             } else if (command.equals(SHOW_SELECTION_CMD)) {
2 26 Feb 07 jari 868                 onShowSelection();
2 26 Feb 07 jari 869             } else if (command.equals(HIDE_SELECTION_BOX_CMD)) {
2 26 Feb 07 jari 870                 onHideSelection();
2 26 Feb 07 jari 871             } else if (command.equals(SHOW_SPHERES_CMD)) {
2 26 Feb 07 jari 872                 onShowSphere();
2 26 Feb 07 jari 873             } else if (command.equals(SHOW_TEXT_CMD)) {
2 26 Feb 07 jari 874                 onShowText();
2 26 Feb 07 jari 875             } else if (command.equals(SHOW_GENE_TEXT_FROM_BOTH_CMD)) {
2 26 Feb 07 jari 876                 onShowGeneTextFromBoth();
2 26 Feb 07 jari 877             } else if (command.equals(SHOW_EXPT_TEXT_FROM_BOTH_CMD)) {
2 26 Feb 07 jari 878                 onShowExptTextFromBoth();
2 26 Feb 07 jari 879             } else if (command.equals(WHITE_CMD)) {
2 26 Feb 07 jari 880                 onWhiteBackground();
2 26 Feb 07 jari 881             } else if (command.equals(STORE_CLUSTER_CMD)){
2 26 Feb 07 jari 882                 storeCluster();
2 26 Feb 07 jari 883             } else if (command.equals(STORE_GENE_CLUSTER_CMD)) {
2 26 Feb 07 jari 884                 storeGeneClusterFromBoth();
2 26 Feb 07 jari 885             } else if (command.equals(STORE_EXPT_CLUSTER_CMD)) {
2 26 Feb 07 jari 886                 storeExptClusterFromBoth();
2 26 Feb 07 jari 887             } else if (command.equals(LAUNCH_NEW_SESSION_CMD)){
2 26 Feb 07 jari 888                 launchNewSession();
2 26 Feb 07 jari 889             } else if (command.equals(LAUNCH_NEW_GENE_SESSION_CMD)) {
2 26 Feb 07 jari 890                 launchNewGeneSessionFromBoth();
2 26 Feb 07 jari 891             } else if (command.equals(LAUNCH_NEW_EXPT_SESSION_CMD)) {
2 26 Feb 07 jari 892                 launchNewExptSessionFromBoth();
2 26 Feb 07 jari 893             }
2 26 Feb 07 jari 894         }     
2 26 Feb 07 jari 895         
2 26 Feb 07 jari 896   public void mouseReleased(MouseEvent event) {
2 26 Feb 07 jari 897       maybeShowPopup(event);
2 26 Feb 07 jari 898   }
2 26 Feb 07 jari 899   
2 26 Feb 07 jari 900   public void mousePressed(MouseEvent event) {
2 26 Feb 07 jari 901       maybeShowPopup(event);
2 26 Feb 07 jari 902   }
2 26 Feb 07 jari 903   
2 26 Feb 07 jari 904   private void maybeShowPopup(MouseEvent e) {
2 26 Feb 07 jari 905             //System.out.println("maybeShowPopup");
2 26 Feb 07 jari 906       //if (!e.isPopupTrigger() || getCluster() == null || getCluster().length == 0) {
2 26 Feb 07 jari 907            if (!e.isPopupTrigger()) { 
2 26 Feb 07 jari 908     return;
2 26 Feb 07 jari 909       }
2 26 Feb 07 jari 910       popup2.show(e.getComponent(), e.getX(), e.getY());
2 26 Feb 07 jari 911   }        
2 26 Feb 07 jari 912         
2 26 Feb 07 jari 913     }    
2 26 Feb 07 jari 914     
2 26 Feb 07 jari 915 }