mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/pca/PCA3DViewer.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 Copyright @ 1999-2005, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 7 All rights reserved.
2 26 Feb 07 jari 8 */
2 26 Feb 07 jari 9 /*
2 26 Feb 07 jari 10  * $RCSfile: PCA3DViewer.java,v $
2 26 Feb 07 jari 11  * $Revision: 1.9 $
2 26 Feb 07 jari 12  * $Date: 2006/05/02 16:56:57 $
2 26 Feb 07 jari 13  * $Author: eleanorahowe $
2 26 Feb 07 jari 14  * $State: Exp $
2 26 Feb 07 jari 15  */
2 26 Feb 07 jari 16 package org.tigr.microarray.mev.cluster.gui.impl.pca;
2 26 Feb 07 jari 17
2 26 Feb 07 jari 18 import java.awt.Component;
2 26 Feb 07 jari 19 import java.awt.Frame;
2 26 Feb 07 jari 20 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 21 import java.awt.event.ActionListener;
2 26 Feb 07 jari 22 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 23 import java.beans.Expression;
2 26 Feb 07 jari 24
2 26 Feb 07 jari 25 import javax.swing.JCheckBoxMenuItem;
2 26 Feb 07 jari 26 import javax.swing.JComponent;
2 26 Feb 07 jari 27 import javax.swing.JMenuItem;
2 26 Feb 07 jari 28 import javax.swing.JOptionPane;
2 26 Feb 07 jari 29 import javax.swing.JPopupMenu;
2 26 Feb 07 jari 30 import javax.swing.tree.DefaultMutableTreeNode;
2 26 Feb 07 jari 31
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.clusterUtil.Cluster;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.Experiment;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.IData;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.IDisplayMenu;
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 37 import org.tigr.microarray.mev.cluster.gui.LeafInfo;
2 26 Feb 07 jari 38 import org.tigr.microarray.mev.cluster.gui.helpers.ExperimentUtil;
2 26 Feb 07 jari 39 import org.tigr.microarray.mev.cluster.gui.impl.GUIFactory;
2 26 Feb 07 jari 40 import org.tigr.microarray.mev.cluster.gui.impl.ViewerAdapter;
2 26 Feb 07 jari 41 import org.tigr.util.FloatMatrix;
2 26 Feb 07 jari 42
2 26 Feb 07 jari 43 public class PCA3DViewer extends ViewerAdapter {
2 26 Feb 07 jari 44     
2 26 Feb 07 jari 45     private static final String RESET_CMD   = "reset-cmd";
2 26 Feb 07 jari 46     private static final String OPTIONS_CMD = "options-cmd";
2 26 Feb 07 jari 47     private static final String SELECTION_AREA_CMD = "select-cmd";
2 26 Feb 07 jari 48     private static final String SAVE_CMD    = "save-cmd";
2 26 Feb 07 jari 49     private static final String SHOW_SELECTION_CMD = "show-selection-cmd";
2 26 Feb 07 jari 50     private static final String HIDE_SELECTION_BOX_CMD = "hide-selection-box-cmd";
2 26 Feb 07 jari 51     private static final String SHOW_SPHERES_CMD = "show-spheres-cmd";
2 26 Feb 07 jari 52     private static final String SHOW_TEXT_CMD = "show-text-cmd";
2 26 Feb 07 jari 53     private static final String WHITE_CMD = "white-cmd";
2 26 Feb 07 jari 54     private static final String STORE_CLUSTER_CMD = "store-cluster-cmd";
2 26 Feb 07 jari 55     private static final String LAUNCH_NEW_SESSION_CMD = "launch-new-session-cmd";
2 26 Feb 07 jari 56     
2 26 Feb 07 jari 57     private IData data;
2 26 Feb 07 jari 58     private Experiment experiment;
2 26 Feb 07 jari 59     private Content3D content;
2 26 Feb 07 jari 60     private JPopupMenu popup;
2 26 Feb 07 jari 61     private Frame frame;
2 26 Feb 07 jari 62     private boolean geneViewer;
2 26 Feb 07 jari 63     private IFramework framework;
2 26 Feb 07 jari 64     
2 26 Feb 07 jari 65     private FloatMatrix U;
2 26 Feb 07 jari 66     private int mode;
2 26 Feb 07 jari 67     private int xAxis, yAxis, zAxis;
2 26 Feb 07 jari 68     private int labelIndex = -1;    
2 26 Feb 07 jari 69     private PCASelectionAreaDialog dlg;
2 26 Feb 07 jari 70     private int exptID = 0;
2 26 Feb 07 jari 71     
2 26 Feb 07 jari 72     /**
2 26 Feb 07 jari 73      * Constructs a <code>PCA3DViewer</code> with specified mode,
2 26 Feb 07 jari 74      * U-matrix and an experiment data.
2 26 Feb 07 jari 75      */
2 26 Feb 07 jari 76     public PCA3DViewer(Frame frame, int mode, FloatMatrix U, Experiment experiment, boolean geneViewer) {
2 26 Feb 07 jari 77         this.frame = frame;
2 26 Feb 07 jari 78         this.experiment = experiment;
2 26 Feb 07 jari 79         this.exptID = experiment.getId();
2 26 Feb 07 jari 80         this.geneViewer = geneViewer;
2 26 Feb 07 jari 81         this.U = U;
2 26 Feb 07 jari 82         this.mode = mode;
2 26 Feb 07 jari 83         content = createContent(mode, U, experiment, geneViewer);
2 26 Feb 07 jari 84         dlg = new PCASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());
2 26 Feb 07 jari 85         popup = createJPopupMenu();
2 26 Feb 07 jari 86     }
2 26 Feb 07 jari 87     
2 26 Feb 07 jari 88     public PCA3DViewer(Frame frame, int mode, FloatMatrix U, Experiment experiment, boolean geneViewer, int xAxis, int yAxis, int zAxis) {
2 26 Feb 07 jari 89         this.frame = frame;
2 26 Feb 07 jari 90         this.experiment = experiment;
2 26 Feb 07 jari 91         this.exptID = experiment.getId();
2 26 Feb 07 jari 92         this.geneViewer = geneViewer;
2 26 Feb 07 jari 93         this.U = U;
2 26 Feb 07 jari 94         this.mode = mode;
2 26 Feb 07 jari 95         this.xAxis = xAxis;
2 26 Feb 07 jari 96         this.yAxis= yAxis;
2 26 Feb 07 jari 97         this.zAxis = zAxis;
2 26 Feb 07 jari 98         content = createContent(mode, U, experiment, geneViewer, xAxis, yAxis, zAxis);
2 26 Feb 07 jari 99         dlg = new PCASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());
2 26 Feb 07 jari 100         popup = createJPopupMenu();
2 26 Feb 07 jari 101     }   
2 26 Feb 07 jari 102     public PCA3DViewer(Experiment e, Boolean geneViewer, FloatMatrix U, Integer mode, Integer xAxis, Integer yAxis, Integer zAxis){
2 26 Feb 07 jari 103         this.geneViewer = geneViewer.booleanValue();
2 26 Feb 07 jari 104         this.U = U;
2 26 Feb 07 jari 105         this.mode = mode.intValue();
2 26 Feb 07 jari 106         this.xAxis = xAxis.intValue();
2 26 Feb 07 jari 107         this.yAxis = yAxis.intValue();
2 26 Feb 07 jari 108         this.zAxis = zAxis.intValue();
2 26 Feb 07 jari 109         setExperiment(e);
2 26 Feb 07 jari 110     }
2 26 Feb 07 jari 111     /**
2 26 Feb 07 jari 112      * @inheritDoc
2 26 Feb 07 jari 113      */
2 26 Feb 07 jari 114     public Expression getExpression(){
2 26 Feb 07 jari 115       return new Expression(this, this.getClass(), "new", 
2 26 Feb 07 jari 116           new Object[]{this.experiment, new Boolean(geneViewer), U, new Integer(mode), new Integer(xAxis), new Integer(yAxis), new Integer(zAxis)});
2 26 Feb 07 jari 117     }
2 26 Feb 07 jari 118     /**
2 26 Feb 07 jari 119      * @inheritDoc
2 26 Feb 07 jari 120      */
2 26 Feb 07 jari 121     public void setExperiment(Experiment e){
2 26 Feb 07 jari 122       this.experiment = e;
2 26 Feb 07 jari 123       this.exptID = experiment.getId();
2 26 Feb 07 jari 124         content = createContent(mode, U, experiment, geneViewer, xAxis, yAxis, zAxis);  
2 26 Feb 07 jari 125         dlg = new PCASelectionAreaDialog(content, frame, content.getPositionX(), content.getPositionY(), content.getPositionZ(), content.getSizeX(), content.getSizeY(), content.getSizeZ(), content.getMaxValue());
2 26 Feb 07 jari 126     }
2 26 Feb 07 jari 127     public int getExperimentID(){return this.exptID;}
2 26 Feb 07 jari 128     
2 26 Feb 07 jari 129     /**
2 26 Feb 07 jari 130      * Updates the viewer data and its content.
2 26 Feb 07 jari 131      */
2 26 Feb 07 jari 132     public void onSelected(IFramework framework) {
2 26 Feb 07 jari 133         this.framework = framework;
2 26 Feb 07 jari 134         this.frame = framework.getFrame();
2 26 Feb 07 jari 135         this.data = framework.getData();
2 26 Feb 07 jari 136         IDisplayMenu menu = framework.getDisplayMenu();        
2 26 Feb 07 jari 137         labelIndex = menu.getLabelIndex();        
2 26 Feb 07 jari 138         content.setData(this.data);
2 26 Feb 07 jari 139         content.setGeneLabelIndex(labelIndex);
2 26 Feb 07 jari 140         onMenuChanged(menu);
2 26 Feb 07 jari 141         content.updateScene();
2 26 Feb 07 jari 142         
2 26 Feb 07 jari 143         //In case it is viewed after serialization
2 26 Feb 07 jari 144         if(popup == null){
2 26 Feb 07 jari 145             popup = createJPopupMenu(); 
2 26 Feb 07 jari 146             DefaultMutableTreeNode node = framework.getCurrentNode();
2 26 Feb 07 jari 147             if(node != null){
2 26 Feb 07 jari 148                 if(node.getUserObject() instanceof LeafInfo){
2 26 Feb 07 jari 149                     LeafInfo leafInfo = (LeafInfo) node.getUserObject();
2 26 Feb 07 jari 150                     leafInfo.setPopupMenu(this.popup);
2 26 Feb 07 jari 151                 }
2 26 Feb 07 jari 152             }
2 26 Feb 07 jari 153         }    
2 26 Feb 07 jari 154     }
2 26 Feb 07 jari 155     
2 26 Feb 07 jari 156     public void onMenuChanged(IDisplayMenu menu) {
2 26 Feb 07 jari 157         labelIndex = menu.getLabelIndex();  
2 26 Feb 07 jari 158         content.setGeneLabelIndex(labelIndex);  
2 26 Feb 07 jari 159         content.updateScene();        
2 26 Feb 07 jari 160     }
2 26 Feb 07 jari 161     
2 26 Feb 07 jari 162     /**
2 26 Feb 07 jari 163      * Updates the viewer data and its content.
2 26 Feb 07 jari 164      */
2 26 Feb 07 jari 165     public void onDataChanged(IData data) {
2 26 Feb 07 jari 166         this.data = data;
2 26 Feb 07 jari 167         content.setData(data);
2 26 Feb 07 jari 168         content.updateScene();
2 26 Feb 07 jari 169     }
2 26 Feb 07 jari 170     
2 26 Feb 07 jari 171     /**
2 26 Feb 07 jari 172      * Returns a content of the viewer.
2 26 Feb 07 jari 173      */
2 26 Feb 07 jari 174     public JComponent getContentComponent() {
2 26 Feb 07 jari 175         return content;
2 26 Feb 07 jari 176     }
2 26 Feb 07 jari 177     
2 26 Feb 07 jari 178     /**
2 26 Feb 07 jari 179      * Returns a content image.
2 26 Feb 07 jari 180      */
2 26 Feb 07 jari 181     public BufferedImage getImage() {
2 26 Feb 07 jari 182         return content.createImage();
2 26 Feb 07 jari 183     }
2 26 Feb 07 jari 184     
2 26 Feb 07 jari 185     /**
2 26 Feb 07 jari 186      * Creates a 3D content with specified mode, u-matrix and experiment.
2 26 Feb 07 jari 187      */
2 26 Feb 07 jari 188     private Content3D createContent(int mode, FloatMatrix U, Experiment experiment, boolean geneViewer) {
2 26 Feb 07 jari 189         return new Content3D(mode, U, experiment, geneViewer);
2 26 Feb 07 jari 190     }
2 26 Feb 07 jari 191     
2 26 Feb 07 jari 192     private Content3D createContent(int mode, FloatMatrix U, Experiment experiment, boolean geneViewer, int x, int y, int z) {
2 26 Feb 07 jari 193         return new Content3D(mode, U, experiment, geneViewer, x, y, z);
2 26 Feb 07 jari 194     }    
2 26 Feb 07 jari 195     
2 26 Feb 07 jari 196     /**
2 26 Feb 07 jari 197      * Returns the viewer popup menu.
2 26 Feb 07 jari 198      */
2 26 Feb 07 jari 199     public JPopupMenu getJPopupMenu() {
2 26 Feb 07 jari 200         return popup;
2 26 Feb 07 jari 201     }
2 26 Feb 07 jari 202     
2 26 Feb 07 jari 203     /**
2 26 Feb 07 jari 204      * Creates the viewer popup menu.
2 26 Feb 07 jari 205      */
2 26 Feb 07 jari 206     private JPopupMenu createJPopupMenu() {
2 26 Feb 07 jari 207         JPopupMenu popup = new JPopupMenu();
2 26 Feb 07 jari 208         addMenuItems(popup);
2 26 Feb 07 jari 209         return popup;
2 26 Feb 07 jari 210     }
2 26 Feb 07 jari 211     
2 26 Feb 07 jari 212     /**
2 26 Feb 07 jari 213      * Adds the viewer specific menu items.
2 26 Feb 07 jari 214      */
2 26 Feb 07 jari 215     private void addMenuItems(JPopupMenu menu) {
2 26 Feb 07 jari 216         Listener listener = new Listener();
2 26 Feb 07 jari 217         JMenuItem menuItem;
2 26 Feb 07 jari 218         menuItem = new JMenuItem("Reset", GUIFactory.getIcon("refresh16.gif"));
2 26 Feb 07 jari 219         menuItem.setActionCommand(RESET_CMD);
2 26 Feb 07 jari 220         menuItem.addActionListener(listener);
2 26 Feb 07 jari 221         menu.add(menuItem);
2 26 Feb 07 jari 222         
2 26 Feb 07 jari 223         menuItem = new JMenuItem("Options...", GUIFactory.getIcon("edit16.gif"));
2 26 Feb 07 jari 224         menuItem.setActionCommand(OPTIONS_CMD);
2 26 Feb 07 jari 225         menuItem.addActionListener(listener);
2 26 Feb 07 jari 226         menu.add(menuItem);
2 26 Feb 07 jari 227         
2 26 Feb 07 jari 228         menu.addSeparator();
2 26 Feb 07 jari 229         
2 26 Feb 07 jari 230         menuItem = new JMenuItem("Selection area...", GUIFactory.getIcon("edit16.gif"));
2 26 Feb 07 jari 231         menuItem.setEnabled(false);
2 26 Feb 07 jari 232         menuItem.setActionCommand(SELECTION_AREA_CMD);
2 26 Feb 07 jari 233         menuItem.addActionListener(listener);
2 26 Feb 07 jari 234         menu.add(menuItem);
2 26 Feb 07 jari 235         
2 26 Feb 07 jari 236         menuItem = new JMenuItem("Store cluster...", GUIFactory.getIcon("new16.gif"));
2 26 Feb 07 jari 237         menuItem.setEnabled(false);
2 26 Feb 07 jari 238         menuItem.setActionCommand(STORE_CLUSTER_CMD);
2 26 Feb 07 jari 239         menuItem.addActionListener(listener);
2 26 Feb 07 jari 240         menu.add(menuItem);
2 26 Feb 07 jari 241         
2 26 Feb 07 jari 242         menuItem = new JMenuItem("Launch new session", GUIFactory.getIcon("launch_new_mav.gif"));
2 26 Feb 07 jari 243         menuItem.setEnabled(false);
2 26 Feb 07 jari 244         menuItem.setActionCommand(LAUNCH_NEW_SESSION_CMD);
2 26 Feb 07 jari 245         menuItem.addActionListener(listener);
2 26 Feb 07 jari 246         menu.add(menuItem);
2 26 Feb 07 jari 247         
2 26 Feb 07 jari 248         menuItem = new JMenuItem("Save cluster...", GUIFactory.getIcon("save16.gif"));
2 26 Feb 07 jari 249         menuItem.setEnabled(false);
2 26 Feb 07 jari 250         menuItem.setActionCommand(SAVE_CMD);
2 26 Feb 07 jari 251         menuItem.addActionListener(listener);
2 26 Feb 07 jari 252         menu.add(menuItem);
2 26 Feb 07 jari 253         menu.addSeparator();
2 26 Feb 07 jari 254         
2 26 Feb 07 jari 255         menuItem = new JCheckBoxMenuItem("Show selection area");
2 26 Feb 07 jari 256         menuItem.setActionCommand(SHOW_SELECTION_CMD);
2 26 Feb 07 jari 257         menuItem.addActionListener(listener);
2 26 Feb 07 jari 258         menu.add(menuItem);
2 26 Feb 07 jari 259         
2 26 Feb 07 jari 260         menuItem = new JCheckBoxMenuItem("Hide selection box");
2 26 Feb 07 jari 261         menuItem.setEnabled(false);
2 26 Feb 07 jari 262         menuItem.setActionCommand(HIDE_SELECTION_BOX_CMD);
2 26 Feb 07 jari 263         menuItem.addActionListener(listener);
2 26 Feb 07 jari 264         menu.add(menuItem);
2 26 Feb 07 jari 265         
2 26 Feb 07 jari 266         menuItem = new JCheckBoxMenuItem("Show spheres");
2 26 Feb 07 jari 267         menuItem.setActionCommand(SHOW_SPHERES_CMD);
2 26 Feb 07 jari 268         menuItem.addActionListener(listener);
2 26 Feb 07 jari 269         menu.add(menuItem);
2 26 Feb 07 jari 270         
2 26 Feb 07 jari 271         menuItem = new JCheckBoxMenuItem("Show text");
2 26 Feb 07 jari 272         menuItem.setEnabled(true);
2 26 Feb 07 jari 273         menuItem.setActionCommand(SHOW_TEXT_CMD);
2 26 Feb 07 jari 274         menuItem.addActionListener(listener);
2 26 Feb 07 jari 275         menu.add(menuItem);
2 26 Feb 07 jari 276         
2 26 Feb 07 jari 277         menuItem = new JCheckBoxMenuItem("White background");
2 26 Feb 07 jari 278         menuItem.setActionCommand(WHITE_CMD);
2 26 Feb 07 jari 279         menuItem.addActionListener(listener);
2 26 Feb 07 jari 280         menu.add(menuItem);
2 26 Feb 07 jari 281     }
2 26 Feb 07 jari 282     
2 26 Feb 07 jari 283     /**
2 26 Feb 07 jari 284      * Returns a menu item by specified action command.
2 26 Feb 07 jari 285      */
2 26 Feb 07 jari 286     private JMenuItem getJMenuItem(String command) {
2 26 Feb 07 jari 287         JMenuItem item;
2 26 Feb 07 jari 288         Component[] components = popup.getComponents();
2 26 Feb 07 jari 289         for (int i=0; i<components.length; i++) {
2 26 Feb 07 jari 290             if (components[i] instanceof JMenuItem) {
2 26 Feb 07 jari 291                 if (((JMenuItem)components[i]).getActionCommand().equals(command))
2 26 Feb 07 jari 292                     return(JMenuItem)components[i];
2 26 Feb 07 jari 293             }
2 26 Feb 07 jari 294         }
2 26 Feb 07 jari 295         return null;
2 26 Feb 07 jari 296     }
2 26 Feb 07 jari 297     
2 26 Feb 07 jari 298     /**
2 26 Feb 07 jari 299      * Sets a menu item state.
2 26 Feb 07 jari 300      */
2 26 Feb 07 jari 301     private void setEnableMenuItem(String command, boolean enable) {
2 26 Feb 07 jari 302         JMenuItem item = getJMenuItem(command);
2 26 Feb 07 jari 303         if (item == null) {
2 26 Feb 07 jari 304             return;
2 26 Feb 07 jari 305         }
2 26 Feb 07 jari 306         item.setEnabled(enable);
2 26 Feb 07 jari 307     }
2 26 Feb 07 jari 308     
2 26 Feb 07 jari 309     /**
2 26 Feb 07 jari 310      * Reset the viewer content.
2 26 Feb 07 jari 311      */
2 26 Feb 07 jari 312     private void onReset() {
2 26 Feb 07 jari 313         content.reset();
2 26 Feb 07 jari 314     }
2 26 Feb 07 jari 315     
2 26 Feb 07 jari 316     /**
2 26 Feb 07 jari 317      * Sets the user specified content parameters.
2 26 Feb 07 jari 318      */
2 26 Feb 07 jari 319     private void onOptions() {
2 26 Feb 07 jari 320         PCAResultConfigDialog dlg = new PCAResultConfigDialog(frame,
2 26 Feb 07 jari 321         content.getPointSize(), content.getSelectedPointSize(),
2 26 Feb 07 jari 322         content.getScaleAxisX(), content.getScaleAxisY(), content.getScaleAxisZ());
2 26 Feb 07 jari 323         if (dlg.showModal() == JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 324             content.setPointSize(dlg.getPointSize());
2 26 Feb 07 jari 325             content.setSelectedPointSize(dlg.getSelectedPointSize());
2 26 Feb 07 jari 326             content.setScale(dlg.getScaleAxisX(), dlg.getScaleAxisY(), dlg.getScaleAxisZ());
2 26 Feb 07 jari 327             content.updateScene();
2 26 Feb 07 jari 328         }
2 26 Feb 07 jari 329     }
2 26 Feb 07 jari 330     
2 26 Feb 07 jari 331     /**
2 26 Feb 07 jari 332      * Sets the user specified selection area parameters.
2 26 Feb 07 jari 333      */
2 26 Feb 07 jari 334     private void onSelectionArea() {
2 26 Feb 07 jari 335         //PCASelectionAreaDialog dlg = new PCASelectionAreaDialog(frame,
2 26 Feb 07 jari 336         //content.getPositionX(), content.getPositionY(), content.getPositionZ(),
2 26 Feb 07 jari 337         //content.getSizeX(), content.getSizeY(), content.getSizeZ());
2 26 Feb 07 jari 338         if (dlg.showModal() == JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 339             content.setBoxPosition(dlg.getPositionX(), dlg.getPositionY(), dlg.getPositionZ());
2 26 Feb 07 jari 340             content.setBoxSize(dlg.getSizeX(), dlg.getSizeY(), dlg.getSizeZ());
2 26 Feb 07 jari 341             content.updateScene();
2 26 Feb 07 jari 342         }
2 26 Feb 07 jari 343     }
2 26 Feb 07 jari 344     
2 26 Feb 07 jari 345     /**
2 26 Feb 07 jari 346      * Saves selected genes.
2 26 Feb 07 jari 347      */
2 26 Feb 07 jari 348     private void onSave() {
2 26 Feb 07 jari 349         try {
2 26 Feb 07 jari 350             if(geneViewer)
2 26 Feb 07 jari 351                 ExperimentUtil.saveExperiment(frame, experiment, data, content.getSelectedGenes());
2 26 Feb 07 jari 352             else
2 26 Feb 07 jari 353                 ExperimentUtil.saveExperimentCluster(frame, experiment, data, content.getSelectedGenes());
2 26 Feb 07 jari 354         } catch (Exception e) {
2 26 Feb 07 jari 355             JOptionPane.showMessageDialog(frame, "Can not save matrix!", e.toString(), JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 356             e.printStackTrace();
2 26 Feb 07 jari 357         }
2 26 Feb 07 jari 358     }
2 26 Feb 07 jari 359     
2 26 Feb 07 jari 360     /**
2 26 Feb 07 jari 361      * Stores the selected cluster
2 26 Feb 07 jari 362      */
2 26 Feb 07 jari 363     private void storeCluster(){
2 26 Feb 07 jari 364         if(geneViewer)
2 26 Feb 07 jari 365             framework.storeSubCluster( content.getSelectedGenes(), experiment, Cluster.GENE_CLUSTER);
2 26 Feb 07 jari 366         else
2 26 Feb 07 jari 367             framework.storeSubCluster( content.getSelectedGenes(), experiment, Cluster.EXPERIMENT_CLUSTER);
2 26 Feb 07 jari 368         content.setSelection(false);
2 26 Feb 07 jari 369         //onHideSelection(); 
2 26 Feb 07 jari 370         this.onDataChanged(this.data);
2 26 Feb 07 jari 371         content.updateScene();        
2 26 Feb 07 jari 372     }
2 26 Feb 07 jari 373     
2 26 Feb 07 jari 374     
2 26 Feb 07 jari 375     /**
2 26 Feb 07 jari 376      * Launches a new MultipleArrayViewer using selected elements
2 26 Feb 07 jari 377      */
2 26 Feb 07 jari 378     private void launchNewSession(){
2 26 Feb 07 jari 379         if(geneViewer)
2 26 Feb 07 jari 380             framework.launchNewMAV(content.getSelectedGenes(), this.experiment, "Multiple Experiment Viewer - Cluster Viewer", Cluster.GENE_CLUSTER);
2 26 Feb 07 jari 381         else
2 26 Feb 07 jari 382             framework.launchNewMAV(content.getSelectedGenes(), this.experiment, "Multiple Experiment Viewer - Cluster Viewer", Cluster.EXPERIMENT_CLUSTER);        
2 26 Feb 07 jari 383     }
2 26 Feb 07 jari 384     
2 26 Feb 07 jari 385     /**
2 26 Feb 07 jari 386      * Handles the selection box state.
2 26 Feb 07 jari 387      */
2 26 Feb 07 jari 388     private void onShowSelection() {
2 26 Feb 07 jari 389         JMenuItem selectionItem = getJMenuItem(SHOW_SELECTION_CMD);
2 26 Feb 07 jari 390         JMenuItem hideBoxItem = getJMenuItem(HIDE_SELECTION_BOX_CMD);
2 26 Feb 07 jari 391         JMenuItem selectionAreaItem = getJMenuItem(SELECTION_AREA_CMD);
2 26 Feb 07 jari 392         JMenuItem saveClusterItem = getJMenuItem(SAVE_CMD);
2 26 Feb 07 jari 393         JMenuItem storeClusterItem = getJMenuItem(STORE_CLUSTER_CMD);
2 26 Feb 07 jari 394         JMenuItem launchNewItem = getJMenuItem(LAUNCH_NEW_SESSION_CMD);
2 26 Feb 07 jari 395         if (selectionItem.isSelected()) {
2 26 Feb 07 jari 396             content.setSelection(true);
2 26 Feb 07 jari 397             content.setSelectionBox(!hideBoxItem.isSelected());
2 26 Feb 07 jari 398             selectionAreaItem.setEnabled(true);
2 26 Feb 07 jari 399             saveClusterItem.setEnabled(true);
2 26 Feb 07 jari 400             hideBoxItem.setEnabled(true);
2 26 Feb 07 jari 401             storeClusterItem.setEnabled(true);
2 26 Feb 07 jari 402             launchNewItem.setEnabled(true);
2 26 Feb 07 jari 403         } else {
2 26 Feb 07 jari 404             content.setSelection(false);
2 26 Feb 07 jari 405             content.setSelectionBox(false);
2 26 Feb 07 jari 406             selectionAreaItem.setEnabled(false);
2 26 Feb 07 jari 407             saveClusterItem.setEnabled(false);
2 26 Feb 07 jari 408             hideBoxItem.setEnabled(false);
2 26 Feb 07 jari 409             storeClusterItem.setEnabled(false);
2 26 Feb 07 jari 410             launchNewItem.setEnabled(false);
2 26 Feb 07 jari 411         }
2 26 Feb 07 jari 412         content.updateScene();
2 26 Feb 07 jari 413     }
2 26 Feb 07 jari 414     
2 26 Feb 07 jari 415     /**
2 26 Feb 07 jari 416      * Hides a content selection box.
2 26 Feb 07 jari 417      */
2 26 Feb 07 jari 418     private void onHideSelection() {
2 26 Feb 07 jari 419         content.setSelectionBox(!content.isSelectionBox());
2 26 Feb 07 jari 420         content.updateScene();
2 26 Feb 07 jari 421     }
2 26 Feb 07 jari 422     
2 26 Feb 07 jari 423     /**
2 26 Feb 07 jari 424      * Shows or hides spheres.
2 26 Feb 07 jari 425      */
2 26 Feb 07 jari 426     private void onShowSphere() {
2 26 Feb 07 jari 427         content.setShowSpheres(!content.isShowSpheres());
2 26 Feb 07 jari 428         content.updateScene();
2 26 Feb 07 jari 429         
2 26 Feb 07 jari 430         JMenuItem sphereItem = getJMenuItem(SHOW_SPHERES_CMD);
2 26 Feb 07 jari 431         JMenuItem textItem = getJMenuItem(SHOW_TEXT_CMD);
2 26 Feb 07 jari 432         if (sphereItem.isSelected()) {
2 26 Feb 07 jari 433             content.setShowSpheres(true);
2 26 Feb 07 jari 434             content.setShowText(textItem.isSelected());
2 26 Feb 07 jari 435             textItem.setEnabled(true);
2 26 Feb 07 jari 436         } else {
2 26 Feb 07 jari 437             content.setShowSpheres(false);
2 26 Feb 07 jari 438             //content.setShowText(false);
2 26 Feb 07 jari 439             content.setShowText(textItem.isSelected());
2 26 Feb 07 jari 440             textItem.setEnabled(true);
2 26 Feb 07 jari 441         }
2 26 Feb 07 jari 442         content.updateScene();
2 26 Feb 07 jari 443     }
2 26 Feb 07 jari 444     
2 26 Feb 07 jari 445     /**
2 26 Feb 07 jari 446      * Shows or hide content text.
2 26 Feb 07 jari 447      */
2 26 Feb 07 jari 448     private void onShowText() {
2 26 Feb 07 jari 449         content.setShowText(!content.isShowText());
2 26 Feb 07 jari 450         content.updateScene();
2 26 Feb 07 jari 451     }
2 26 Feb 07 jari 452     
2 26 Feb 07 jari 453     /**
2 26 Feb 07 jari 454      * Sets content background.
2 26 Feb 07 jari 455      */
2 26 Feb 07 jari 456     private void onWhiteBackground() {
2 26 Feb 07 jari 457         content.setWhiteBackround(!content.isWhiteBackground());
2 26 Feb 07 jari 458         content.updateScene();
2 26 Feb 07 jari 459     }
2 26 Feb 07 jari 460     
2 26 Feb 07 jari 461     /** Returns a component to be inserted into the scroll pane row header
2 26 Feb 07 jari 462      */
2 26 Feb 07 jari 463     public JComponent getRowHeaderComponent() {
2 26 Feb 07 jari 464         return null;
2 26 Feb 07 jari 465     }
2 26 Feb 07 jari 466     
2 26 Feb 07 jari 467     /**
2 26 Feb 07 jari 468      * The listener to listen to menu items events.
2 26 Feb 07 jari 469      */
2 26 Feb 07 jari 470     private class Listener implements ActionListener {
2 26 Feb 07 jari 471         public void actionPerformed(ActionEvent event) {
2 26 Feb 07 jari 472             String command = event.getActionCommand();
2 26 Feb 07 jari 473             if (command.equals(RESET_CMD)) {
2 26 Feb 07 jari 474                 onReset();
2 26 Feb 07 jari 475             } else if (command.equals(OPTIONS_CMD)) {
2 26 Feb 07 jari 476                 onOptions();
2 26 Feb 07 jari 477             } else if (command.equals(SELECTION_AREA_CMD)) {
2 26 Feb 07 jari 478                 onSelectionArea();
2 26 Feb 07 jari 479             } else if (command.equals(SAVE_CMD)) {
2 26 Feb 07 jari 480                 onSave();
2 26 Feb 07 jari 481             } else if (command.equals(SHOW_SELECTION_CMD)) {
2 26 Feb 07 jari 482                 onShowSelection();
2 26 Feb 07 jari 483             } else if (command.equals(HIDE_SELECTION_BOX_CMD)) {
2 26 Feb 07 jari 484                 onHideSelection();
2 26 Feb 07 jari 485             } else if (command.equals(SHOW_SPHERES_CMD)) {
2 26 Feb 07 jari 486                 onShowSphere();
2 26 Feb 07 jari 487             } else if (command.equals(SHOW_TEXT_CMD)) {
2 26 Feb 07 jari 488                 onShowText();
2 26 Feb 07 jari 489             } else if (command.equals(WHITE_CMD)) {
2 26 Feb 07 jari 490                 onWhiteBackground();
2 26 Feb 07 jari 491             } else if (command.equals(STORE_CLUSTER_CMD)){
2 26 Feb 07 jari 492                 storeCluster();
2 26 Feb 07 jari 493             } else if (command.equals(LAUNCH_NEW_SESSION_CMD)){
2 26 Feb 07 jari 494                 launchNewSession();
2 26 Feb 07 jari 495             }
2 26 Feb 07 jari 496         }        
2 26 Feb 07 jari 497     }
2 26 Feb 07 jari 498 }